Загрузка классов с пространством имен с помощью автозапуска Symfony 1.4?

Как зарегистрировать пространства имен (с PHP 5.3) в Symfony 1.4 для функции класса autoloader (например,Symfony 2.0)?

3 ответов


вы можете использовать автозапуск из Symfony2 в Symfony 1.4 framework.

1. Скопируйте загрузчики классов Symfony2 в каталог поставщиков вашего проекта Symfony 1.4 sandbox:

SF_ROOT_DIR/lib/vendor/Symfony2/src/Symfony/Component/ClassLoader / UniversalClassLoader.в PHP

SF_ROOT_DIR/lib/vendor/Symfony2/src/Symfony/Component/ClassLoader / ApcUniversalClassLoader.в PHP

2. Изменить SF_ROOT_DIR/config / ProjectConfiguration.класс.php-файл выглядит следующим образом:

require_once dirname(__FILE__) . '/../lib/vendor/symfony/lib/autoload/sfCoreAutoload.class.php';
require_once dirname(__FILE__) . '/../lib/autoload/sfClassLoader.class.php';
sfCoreAutoload::register();

class ProjectConfiguration extends sfProjectConfiguration {

    public function setup() {
        $this->namespacesClassLoader();
        $this->enablePlugins('sfDoctrinePlugin');
    }

    public function namespacesClassLoader() {
       if (extension_loaded('apc')) {
           $loader = new ApcUniversalClassLoader('S2A');
       } else {
           $loader = new UniversalClassLoader();
       }
       $loader->registerNamespaces(array(
          'Pohon' => __DIR__ . '/../lib/vendor/Pohon/src'));
       $loader->register();
    }

}

3. Зарегистрируйте желаемые пространства имен:
например. Я хочу загрузить класс:

Pohon\Tools\String\Utils\Slugify.

имя файла должно быть:

SF_ROOT_DIR/Либ/поставщика/пляж похон/ГРЦ/пляж похон/средства/строки/утилиты/служивым.в PHP

и зарегистрированное пространство имен следующим образом:

Pohon => SF_ROOT_DIR/lib/vendor/Pohon / src


можно использовать композитор и это очень легко. Просто установите его на свой компьютер (вы, вероятно, уже с 2015 года) и запустите в папке проекта:

composer init 

затем вы можете установить все пакеты, которые вы хотите с composer и включить только эту строку в свой ProjectConfiguration.class.php:

require_once __DIR__.'/../vendor/autoload.php';

обратите внимание, что пути могут отличаться, если вы изменили Symfony1 по умолчанию.4 структура каталогов.


Symfony использует spl_autoload_register() функция для регистрации собственного автопогрузчика (sfAutoload).

вы можете зарегистрировать свой собственный обработчик в