Загружать классы пространства имен с помощью автозагрузчика Symfony 1.4? - PullRequest
8 голосов
/ 06 июня 2011

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

Ответы [ 3 ]

10 голосов
/ 09 мая 2012

Вы можете использовать автозагрузчик из Symfony2 в платформе Symfony 1.4.

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

SF_ROOT_DIR / Библиотека / продавец / Symfony2 / SRC / Symfony / Компонент / ClassLoader / UniversalClassLoader.php

SF_ROOT_DIR / Библиотека / продавец / Symfony2 / SRC / Symfony / Компонент / ClassLoader / ApcUniversalClassLoader.php

2. Измените файл SF_ROOT_DIR / config / ProjectConfiguration.class.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 \ Строка \ Utils \ Slugify.

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

SF_ROOT_DIR / Библиотека / продавец / Pohon / SRC / Pohon / Инструменты / String / Utils / Slugify.php

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

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

5 голосов
/ 10 апреля 2015

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

composer init 

Затем вы можете установить все нужные вам пакеты с помощью composer и включить только эту строку в ваш ProjectConfiguration.class.php:

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

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

1 голос
/ 20 июля 2011

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

Вы можете зарегистрировать свой собственный обработчик в функции initialize() вашего проекта / приложения / плагина. (что применимо).

Это, например, также то, что делает плагин Swift_Mailer: при необходимости он регистрирует свой собственный автозагрузчик.

...