Загрузчик классов symfony2 не может использоваться, если структура пути не используется по умолчанию - PullRequest
1 голос
/ 30 декабря 2011

похоже, что загрузчик классов symfony2 не позволяет использовать разные пути для пространств имен, у кого-нибудь есть идеи (кроме изменения загрузчика классов).

$loader = new \Symfony\Component\ClassLoader\UniversalClassLoader();
$loader->registerNamespaces(
  array(
    'Symfony\\Component' => \realpath('/myapp/path' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'Symfony2Components')
  )
);
$loader->register(true);


// in other file

use Symfony\Component\HttpFoundation\Request;

$request = Request::createFromGlobals(); // <-- resolves to : '/myapp/path/vendor/Symfony2Components/Symfony/Component/HttpFoundation/Request.php'
// expected '/myapp/path/vendor/Symfony2Components/HttpFoundation/Request.php'

Ответы [ 2 ]

1 голос
/ 06 января 2012

Это не ошибка. Symfony2 ClassLoader просто соответствует PSR-0 :

Каждый разделитель пространства имен при загрузке из файловой системы преобразуется в DIRECTORY_SEPARATOR.

Вы просто определяете корневой путь, но все части пространства имен по-прежнему будут использоваться в пути.

0 голосов
/ 31 декабря 2011

@ Maerlyn Я тоже думал об этом, но это не так, хорошо, заметь.

https://github.com/nimmen/ClassLoader/commit/0881a02d3210fd6376abd3b62f0c665642d310bb
внесены небольшие изменения, теперь он работает так (как положено):

пример регистрации пространств имен:

name \ space => / dir / ectory
другой \ имя => / другой / dir

\ name \ space \ classname преобразуется в:

/ реж / ectory / classname.php

\ another \ name \ space \ class преобразуется в:

/ другое / реж / пространство / class.php

надеюсь, это кому-нибудь поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...