Автозагрузка классов, когда они не находятся в том же каталоге, что и библиотека Zend - PullRequest
2 голосов
/ 22 сентября 2010

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

webroot
 |...library
 |     |......Zend
 |
 |...app1
 |     |.....Library
 |              |.......App1
 |
 |...app2
       |.....Library
                |.......App2

Как я могу заставить Zend Loader автоматически находить классы в App1 и App2? (желательно просто что-то изменить в application.ini или bootstrap.php)

Ответы [ 2 ]

0 голосов
/ 23 сентября 2010

Zend Loader будет использовать ваш php include_path для поиска файлов для загрузки.

Просто добавьте webroot / library в ваш include_path (что вы можете сделать либо в php.ini, либо в вашемbootstrap), и автозагрузчик сможет найти фреймворк.

Если вы хотите иметь общую версию Zend, вы можете просто использовать pear (http://pear.zfcampus.org/) для ее установки и затем какЕсли у вас установлен параметр include_path для просмотра в вашей директории груши (/ usr / share / php на моей машине), тогда вы можете идти.

Я бы посоветовал сделать это только для машин dev, так какдругие говорят, что это хорошая идея - иметь возможность контролировать версии zend для каждого приложения во время работы.

0 голосов
/ 22 сентября 2010

Вы можете создать один каталог библиотеки с символическими ссылками на действительный общий код:

webroot/library/Zend -> /path/to/Zend/library/Zend
webroot/library/App1 -> /path/to/App1/library/App1
webroot/library/App2 -> /path/to/App2/library/App2

Тогда вам нужен только webroot / библиотека на вашем пути.

Чтобы обрабатывать обновления версий, вы можете просто изменить символическую ссылку, чтобы указать на новую установку:

webroot/library/Zend -> /path/to/Zend-test/library/Zend
...