Файл включить в Yii

Я пытаюсь расширить свое приложение yii с помощью расширения для солярия (расширение для solr в php).

Однако в библиотеке расширения было несколько подкаталогов. В результате я должен включать файлы из определенных подкаталогов, например:

Yii::import('application.extensions.Library.Solarium.*');
Yii::import('application.extensions.Library.Solarium.Client.*');
Yii::import('application.extensions.Library.Solarium.Client.RequestBuilder.*');

Это приводит к уродливому коду, а также к непредсказуемости, если я включил все файлы или нет. Хотя я делаю это в действии в настоящее время, я перенесу его в конфигурацию позже для производства. Есть ли другой удобный способ включить все файлы из каталогов и подкаталогов? Существует множество подкаталогов, поэтому упоминание каждого из них потребовало бы 20-30 строк кода. Один из вариантов — поместить все файлы библиотеки в один каталог для производства. Однако я не уверен, повлияет ли это на функциональность (я обычно «новичок» в реализации расширений/библиотек).


person Varun Jain    schedule 23.12.2012    source источник


Ответы (1)


Когда я добавляю сторонние классы в Yii, я помещаю их в папку под protected/components/, например /protected/components/solr.

Затем в основной конфигурации я добавляю следующие строки в раздел import:

'import' => array(
      'application.components.solr.*',
      ...

Но вам нужно добавлять каждую подпапку одну за другой, это связано с проблемами производительности, разработчики Yii удалили рекурсивный импорт несколько выпусков назад. Если вы считаете, что это отстой, вы можете использовать пространства имен, чтобы делать то, что хотите, но вам понадобится PHP 5.3.

person Skatox    schedule 23.12.2012
comment
Я перемещаю все файлы в один каталог, по крайней мере те, которые я использую, мне нужно будет проверить это, чтобы увидеть, не вызывает ли это ошибку в каком-то случае. - person Varun Jain; 24.12.2012