Как изменить каталог включения Zend Framework - PullRequest
2 голосов
/ 30 марта 2009

Я получаю следующие сообщения об ошибках:

Warning: include_once(Zend\Db.php) [function.include-once]: 
failed to open stream: No such file or directory in 
C:\EasyPHP3\www\VPZ\Lib\Zend_1.7.7\Loader.php on line 83    

Warning: include_once() [function.include]: 
Failed opening 'Zend\Db.php' for inclusion (include_path='VPZ/') in 
C:\EasyPHP3\www\VPZ\Lib\Zend_1.7.7\Loader.php on line 83

Warning: require_once(Zend/Exception.php) 
[function.require-once]: failed to open stream: 
No such file or directory in 
C:\EasyPHP3\www\VPZ\Lib\Zend_1.7.7\Loader.php on line 87

Fatal error: require_once() [function.require]: 
Failed opening required 'Zend/Exception.php' (include_path='VPZ/') in 
C:\EasyPHP3\www\VPZ\Lib\Zend_1.7.7\Loader.php on line 87

Я хочу включить ZendXXX \ Db.php

как это изменить

Ответы [ 5 ]

8 голосов
/ 25 апреля 2009

создайте каталог (скажем 'lib') и поместите в него свой каталог Zend. поэтому ваша структура каталогов выглядит следующим образом:

- application
- lib
  |- Zend
- wwwroot
  |- index.php

теперь вы должны добавить lib к вашему пути включения. отредактируйте ваш файл index.php:

$includePath = array();
$includePath[] = '.';
$includePath[] = './../application';
$includePath[] = './../lib';
$includePath[] = get_include_path();
$includePath = implode(PATH_SEPARATOR,$includePath);
set_include_path($includePath);

теперь у вас есть библиотека в вашем пути включения. Вы можете включить все компоненты Zend следующим образом:

include 'Zend/Loader.php';
require_once 'Zend/Db.php';

лучший способ - сначала включить Zend_Loader, а затем использовать его для загрузки классов. сделать это:

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Db');

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

Zend_Loader::registerAutoLoad('Zend_Loader',true);

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

$ session = new Zend_Session_Namespace ('user');

нет необходимости включать 'Zend / Session / Namespace.php'.

0 голосов
/ 26 августа 2009

проект без библиотеки и включая библиотеку из одного места
проект C: \ xampp \ htdocs \ my \ application
библиотека C: \ xampp \ Zend \ library

внести изменения в index.php

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR,  
           array(realpath(APPLICATION_PATH.'/../../../Zend/library'),get_include_path(),)));
0 голосов
/ 25 апреля 2009

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

Вы можете создать подкаталог и назвать его Zend xxx , но затем вам нужно добавить его в ваш include_path и изменять его всякий раз, когда вы добавляете новую версию.

Я рискну догадаться и скажу, что у вас нет хорошего способа протестировать сайт (поэтому вы хотите привязать его к определенной версии ZF), и, кроме того, что вы не используете ревизию control, чтобы вы могли вернуться ко всем предыдущим версиям кода в каталоге сайта, если обнаружите проблему при изменении действующего кода непосредственно на сервере.

0 голосов
/ 30 марта 2009

Я обычно храню файлы фреймворка в папке «library»:

  • применение
  • public_html
  • библиотека
    • 1010 * Zend *
    • Общее
    • и т.д ....

и затем в моем файле начальной загрузки или на фронт-контроллере я добавляю эту папку «библиотеки» в путь включения:

set_include_path(get_include_path() . PATH_SEPARATOR . '../library');

Смотри также:

0 голосов
/ 30 марта 2009

Используйте set_include_path(). См. Документацию PHP.net

Пример:

 set_include_path(get_include_path() . PATH_SEPARATOR . '/path/to/Zend');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...