Использование PHP 5.3 и формы Symfony - PullRequest
4 голосов
/ 31 мая 2011

Я пытаюсь включить некоторые компоненты форм 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'

работает, но мне нужно создать псевдоним элементов формы, чтобы заставить класс работать.

EDIT: Попытка сделать это после копирования ClassLoader в проект все еще приводит к той же ошибке:

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

use Symfony\Component\ClassLoader\UniversalClassLoader;

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

Ответы [ 2 ]

6 голосов
/ 31 мая 2011

Вам нужно настроить автозагрузку.«Использование» не делает это для вас.Для этого включите 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 голосов
/ 05 августа 2012

Альтернативный подход:

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();

Это должно сработать для вас, да?

...