2011-05-31 71 views
4

我試圖在我的項目中包含一些Symfony表單組件。PHP 5.3使用和Symfony表格

use Symfony\Component\Form\Form; 
use Symfony\Component\Form\FormInterface; 

如果我這樣做,我得到:

Fatal error: Class 'Symfony\Component\Form\Form' not found 

即使我知道這是哪裏的表單元素。使用

require 'Symfony\Component\Form\Form.php'

的作品,但我需要別名表單元素來獲取類的工作。

編輯: 嘗試這一類加載器複製到項目後,仍然帶來了同樣的錯誤:

require_once __DIR__.'/Symfony/Component/ClassLoader/UniversalClassLoader.php'; 

use Symfony\Component\ClassLoader\UniversalClassLoader; 

$loader = new UniversalClassLoader(); 
$loader->registerNamespaces(array(
    'Symfony' => __DIR__.'/Symfony', 
)); 
$loader->register(); 

回答

6

您需要設置自動加載。 '使用'不適合你。爲此,請包含UniversalClassLoader,告訴它從哪裏加載Symfony文件並進行註冊。

require_once __DIR__.'/vendor/Symfony/Component/ClassLoader/UniversalClassLoader.php'; 

use Symfony\Component\ClassLoader\UniversalClassLoader; 

$loader = new UniversalClassLoader(); 
$loader->registerNamespaces(array(
    'Symfony' => __DIR__.'/vendor', 
)); 
$loader->register(); 

「use」語句只是將完全限定的類名稱別名爲您要在該文件中使用的較短版本。

+0

謝謝。我試圖使用與框架分開的Form類。即使將'ClassLoader'目錄複製到我的項目中,我仍然會收到同樣的錯誤。 – BobFlemming 2011-05-31 15:25:28

+0

將表單組件複製到您的項目中可能最容易。所以基本上只需將這兩個組件添加到供應商/ Symfony/Component/。 – igorw 2011-05-31 15:54:58

+0

我已經做到了這一點,它仍然說,他們無法找到。 – BobFlemming 2011-05-31 16:03:15

0

的另一種方法:

require_once __DIR__.'/Symfony/Component/ClassLoader/UniversalClassLoader.php'; 

use Symfony\Component\ClassLoader\UniversalClassLoader; 

set_include_path(__DIR__.PATH_SEPARATOR.get_include_path()); 
$loader = new UniversalClassLoader(); 
$loader->useIncludePath(true); 
$loader->register(); 

這應該爲你工作,是嗎?