2013-11-21 2 views
0

Я использую скелет zend framework2, и я пытаюсь добавить свои собственные классы за папкой поставщика. Проблема в том, что я не знаю, как подготовить классы для загрузки по требованию (автозагрузка) только тогда, когда я создам один из них из любого модуля.Как выполнить автозагрузку пользовательского класса в Zend Framework 2?

Я попытался с решением объяснил на: How to load a custom library in Zend Framework 2?, но я получаю ту же ошибку:

Фатальная ошибка: Class «myNamespace \ MyClass» не найден в пути \ IndexController.php на линии х

Мой вопрос:: Где и как я должен вставлять свои собственные классы, которые впоследствии будут использоваться из моих модулей?

+0

Если вы хотите поместить классы в папку поставщика, вам нужно создать модуль для него или использовать еще один, который уже существует, тогда вы можете использовать пространство имен нового модуля или повторно используемого модуля для доступа к классу. Чтобы Zend знал, где искать, вам нужно рассказать об этом модуле в application.config.php, тогда модуль Module.php модуля должен быть настроен. Если вы можете предоставить более подробную информацию о том, что вы пытаетесь включить, я смогу разработать. –

ответ

1

Во-первых, если они являются вашими собственными классами и напрямую связаны с модулями (т. Е. Не какая-то специальная библиотека, которую вы написали), то вам лучше иметь их в реальном модуле, а не в папке vendor.

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

Я не рекомендую это, но вы должны иметь возможность получить автозагрузку, используя автозагрузчик psr0, встроенный в композитор (при условии, что ваши классы следуют за psr0). Пример composer.json конфигурация:

{ 
    [...] 
    "autoload": { 
     "psr-0": { 
      "MyNameSpace": "path/to/root/src/directory" 
     } 
    } 
    [...] 
} 
0

Я знаю его немного старым, но я столкнулся с таким же вопросом, так что я сделал:

внутри папки поставщика я создал новую папку и дал ему имя Настраиваемый. Внутри этой папки я добавил свой файл класса (MyClass.php).

внутри MyClass.php Я добавил эту строку (пространство имен Zend \ Custom;).

И внутри моего контроллера наверху использовать Zend \ Custom \ MyClass;

и в способе этого контроллера

$someVar = new MyClass();

$someVar->someClassMethod();

Я надеюсь, что это помогает.

Смежные вопросы