Как зарегистрировать пространства имен (с PHP 5.3) в Symfony 1.4 для функции класса автозагрузчика (например, Symfony 2.0 )?
Вы можете использовать Autoloader из Symfony2 в платформе Symfony 1.4.
1. Скопируйте загрузчики классов Symfony2 в каталог поставщика вашего проекта Sandbox Project 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
Вы можете использовать Composer, и это очень просто. Просто установите его на свой компьютер (вы, вероятно, уже с 2015 года) и запустите в своей папке проекта:
composer init
Затем вы можете установить все нужные вам композиции с помощью композитора и включить именно эту строку в свой ProjectConfiguration.class.php
:
require_once __DIR__.'/../vendor/autoload.php';
Обратите внимание, что пути могут отличаться, если вы изменили структуру каталогов по умолчанию Symfony1.4.
Symfony использует spl_autoload_register()
для регистрации своего автозагрузчика ( sfAutoload
).
Вы можете зарегистрировать свой собственный обработчик в функции initialize()
вашего Project / Application / Plugin. (в зависимости от того, что применяется).
Это, например, также то, что Swift_Mailer
плагин Swift_Mailer
: при необходимости он регистрирует свой собственный автозагрузчик.