Не могу заставить Zend Loader загружать классы только под Wamp
Я пробую классы Zend Framework впервые. Сейчас я заинтересован в использовании отдельных классов. Читая документацию и некоторые другие вопросы здесь и в блогах, я попробовал три способа загрузки классов
//attempt 1 - using zend loader
require_once('library\Zend\Loader.php');
Zend_Loader::loadClass('Zend_Date');
//attempt 2 - direct class load
require_once('library\Zend\Date.php');
// attempt 3 - auto load
set_include_path('D:\wamp\www\testPages\zend_test\library\Zend' . PATH_SEPARATOR . get_include_path());
require_once 'Loader\Autoloader.php';
$date = new Zend_Date();
// Output of the desired date
print $date->get();
моя структура папок:
- zend_test (папка)
- testLoad.php (приведенный выше код живет там)
- библиотека (папка)
--- зенд (долер)
---- (Zend библиотеки и подпапки)
Я получаю следующие сообщения об ошибках:попытка 1
Warning: include(Zend\Date.php) [function.include]: failed to open stream: No such file or directory in D:\wamp\www\testPages\zend_test\library\Zend\Loader.php on line 83
Warning: include() [function.include]: Failed opening 'Zend\Date.php' for inclusion (include_path='.;C:\php5\pear') in D:\wamp\www\testPages\zend_test\library\Zend\Loader.php on line 83
Warning: require_once(Zend/Exception.php) [function.require-once]: failed to open stream: No such file or directory in D:\wamp\www\testPages\zend_test\library\Zend\Loader.php on line 87
Fatal error: require_once() [function.require]: Failed opening required 'Zend/Exception.php' (include_path='.;C:\php5\pear') in D:\wamp\www\testPages\zend_test\library\Zend\Loader.php on line 87
attempt2
Warning: require_once(Zend/Date/DateObject.php) [function.require-once]: failed to open stream: No such file or directory in D:\wamp\www\testPages\zend_test\library\Zend\Date.php on line 25
Fatal error: require_once() [function.require]: Failed opening required 'Zend/Date/DateObject.php' (include_path='.;C:\php5\pear') in D:\wamp\www\testPages\zend_test\library\Zend\Date.php on line 25
atempt3
Warning: require_once(Zend/Loader.php) [function.require-once]: failed to open stream: No such file or directory in D:\wamp\www\testPages\zend_test\library\Zend\Loader\Autoloader.php on line 24
Fatal error: require_once() [function.require]: Failed opening required 'Zend/Loader.php' (include_path='D:\wamp\www\testPages\zend_test\library\Zend;.;C:\php5\pear') in D:\wamp\www\testPages\zend_test\library\Zend\Loader\Autoloader.php on line 24
Я что-то пропустил?
3 ответа
Решение
Ваш путь включения должен гласить:
include_path='D:\wamp\www\testPages\zend_test\library;.;C:\php5\pear
Когда он пытается загрузить класс Zend_Date, он ищет папку с именем Zend во включаемом пути с файлом с именем Date.php.
Все 3 ваших метода должны работать с этим исправленным, и я рекомендую попытку 3.
Использовал метод 3 и сделал это, чтобы заставить его работать:
set_include_path('D:/wamp/www/zendTest/library/');
require_once 'Zend/Loader/Autoloader.php';
Zend_Loader::loadClass('Zend_Date'); //or whatever zen class
В php.ini удалить ";" перед строкой include_Path и перезапусти свой wamp!