Как создать проект Zend 1.12, включая PHPUnit?

У меня все еще проблемы с получением Zend Framework.

Что я использую, это конфигурация Composer:

{
"name": "MyProjectsName/zf1-test",
"description": "som description",
"type": "project",
"keywords": [
"framework",
"zf1"],
"require": {
"zendframework/zendframework1": "1.12.11"},
"require-dev": {
"phpunit/phpunit": "4.1.0",
"phpunit/dbunit": "1.3.0"}
}

И это мои команды:

sudo mkdir /var/www/projects/MyProjectsName/
# and put that composer file in the folder
# /var/www/projects/MyProjectsName/composer.json
sudo chown www-data:www-data -R /var/www/projects/MyProjectsName/
sudo chmod 775 -R /var/www/projects/MyProjectsName/
cd /var/www/projects/MyProjectsName/
sudo composer update
sudo ./vendor/zendframework/zendframework1/bin/zf.sh create project .
cd /var/www/projects/

Но это не сработает. Выдает ошибку:

Fatal error: Class 'PHPUnit_Framework_TestCase' not found in /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Test/PHPUnit/ControllerTestCase.php on line 48

Это полная трассировка стека:

n00n@lubuntu-dev:/var/www/projects/MyProjectsName$ sudo composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing zendframework/zendframework1 (1.12.11)
Loading from cache

- Installing symfony/yaml (v2.6.6)
Loading from cache

- Installing sebastian/version (1.0.5)
Loading from cache

- Installing sebastian/recursion-context (1.0.0)
Loading from cache

- Installing sebastian/exporter (1.2.0)
Loading from cache

- Installing sebastian/environment (1.2.2)
Loading from cache

- Installing sebastian/diff (1.3.0)
Loading from cache

- Installing sebastian/comparator (1.1.1)
Loading from cache

- Installing doctrine/instantiator (1.0.4)
Loading from cache

- Installing phpunit/php-text-template (1.2.0)
Loading from cache

- Installing phpunit/phpunit-mock-objects (2.3.1)
Loading from cache

- Installing phpunit/php-timer (1.0.5)
Loading from cache

- Installing phpunit/php-file-iterator (1.3.4)
Loading from cache

- Installing phpunit/php-token-stream (1.4.1)
Loading from cache

- Installing phpunit/php-code-coverage (2.0.16)
Loading from cache

- Installing phpunit/phpunit (4.1.0)
Loading from cache

- Installing phpunit/dbunit (1.3.0)
Loading from cache

phpunit/phpunit suggests installing phpunit/php-invoker (~1.1)
Writing lock file
Generating autoload files
n00n@lubuntu-dev:/var/www/projects/MyProjectsName$

Все прошло правильно … Но теперь, следующая команда, которая создает проект Zend, терпит неудачу ….

n00n@lubuntu-dev:/var/www/projects/MyProjectsName$ sudo ./vendor/zendframework/zendframework1/bin/zf.sh create project .
Creating project at /var/www/projects/MyProjectsName
Note: This command created a web project, for more information setting up your VHOST, please see docs/README
PHP Fatal error:  Class 'PHPUnit_Framework_TestCase' not found in /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Test/PHPUnit/ControllerTestCase.php on line 48
PHP Stack trace:
PHP   1. {main}() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/bin/zf.php:0
PHP   2. ZF::main() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/bin/zf.php:623
PHP   3. ZF->run() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/bin/zf.php:74
PHP   4. ZF->_runTool() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/bin/zf.php:117
PHP   5. Zend_Tool_Framework_Client_Abstract->dispatch() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/bin/zf.php:600
PHP   6. Zend_Tool_Framework_Client_Abstract->_handleDispatch() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Framework/Client/Abstract.php:241
PHP   7. Zend_Tool_Framework_Client_Abstract->_handleDispatchExecution() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Framework/Client/Abstract.php:318
PHP   8. call_user_func_array:{/var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Framework/Client/Abstract.php:324}() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Framework/Client/Abstract.php:324
PHP   9. Zend_Tool_Project_Provider_Project->create() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Framework/Client/Abstract.php:324
PHP  10. Zend_Tool_Project_Profile_Resource->create() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Project/Provider/Project.php:107
PHP  11. Zend_Tool_Project_Profile_Resource->__call() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Project/Provider/Project.php:107
PHP  12. call_user_func_array:{/var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Project/Profile/Resource.php:256}() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Project/Profile/Resource.php:256
PHP  13. Zend_Tool_Project_Context_Zf_TestApplicationActionMethod->create() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Project/Profile/Resource.php:256
PHP  14. Zend_CodeGenerator_Php_File::fromReflectedFileName() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Project/Context/Zf/TestApplicationActionMethod.php:176
PHP  15. include() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/CodeGenerator/Php/File.php:124
PHP  16. spl_autoload_call() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/CodeGenerator/Php/File.php:4
PHP  17. Zend_Loader_Autoloader::autoload() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/CodeGenerator/Php/File.php:0
PHP  18. call_user_func:{/var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Loader/Autoloader.php:124}() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Loader/Autoloader.php:124
PHP  19. Zend_Loader_Autoloader->_autoload() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Loader/Autoloader.php:124
PHP  20. call_user_func:{/var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Loader/Autoloader.php:479}() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Loader/Autoloader.php:479
PHP  21. Zend_Loader::loadClass() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Loader/Autoloader.php:479
PHP  22. Zend_Loader::loadFile() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Loader.php:82
PHP  23. include_once() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Loader.php:134

Fatal error: Class 'PHPUnit_Framework_TestCase' not found in /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Test/PHPUnit/ControllerTestCase.php on line 48

Call Stack:
0.0014     308896   1. {main}() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/bin/zf.php:0
0.0016     308944   2. ZF::main() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/bin/zf.php:623
0.0065     559080   3. ZF->run() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/bin/zf.php:74
0.0065     559216   4. ZF->_runTool() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/bin/zf.php:117
0.0082     629864   5. Zend_Tool_Framework_Client_Abstract->dispatch() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/bin/zf.php:600
0.1806    4532200   6. Zend_Tool_Framework_Client_Abstract->_handleDispatch() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Framework/Client/Abstract.php:241
0.1807    4532952   7. Zend_Tool_Framework_Client_Abstract->_handleDispatchExecution() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Framework/Client/Abstract.php:318
0.1808    4533392   8. call_user_func_array:{/var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Framework/Client/Abstract.php:324}() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Framework/Client/Abstract.php:324
0.1808    4534304   9. Zend_Tool_Project_Provider_Project->create() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Framework/Client/Abstract.php:324
0.2263    4724520  10. Zend_Tool_Project_Profile_Resource->create() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Project/Provider/Project.php:107
0.2263    4724704  11. Zend_Tool_Project_Profile_Resource->__call() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Project/Provider/Project.php:107
0.2263    4725144  12. call_user_func_array:{/var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Project/Profile/Resource.php:256}() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Project/Profile/Resource.php:256
0.2263    4725632  13. Zend_Tool_Project_Context_Zf_TestApplicationActionMethod->create() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Project/Profile/Resource.php:256
0.2265    4725904  14. Zend_CodeGenerator_Php_File::fromReflectedFileName() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Tool/Project/Context/Zf/TestApplicationActionMethod.php:176
0.2269    4730368  15. include('/var/www/projects/MyProjectsName/tests/application/controllers/IndexControllerTest.php') /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/CodeGenerator/Php/File.php:124
0.2269    4730640  16. spl_autoload_call() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/CodeGenerator/Php/File.php:4
0.2269    4730696  17. Zend_Loader_Autoloader::autoload() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/CodeGenerator/Php/File.php:0
0.2270    4731048  18. call_user_func:{/var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Loader/Autoloader.php:124}() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Loader/Autoloader.php:124
0.2270    4731080  19. Zend_Loader_Autoloader->_autoload() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Loader/Autoloader.php:124
0.2270    4731128  20. call_user_func:{/var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Loader/Autoloader.php:479}() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Loader/Autoloader.php:479
0.2270    4731160  21. Zend_Loader::loadClass() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Loader/Autoloader.php:479
0.2271    4731416  22. Zend_Loader::loadFile() /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Loader.php:82
0.2306    4959256  23. include_once('/var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Test/PHPUnit/ControllerTestCase.php') /var/www/projects/MyProjectsName/vendor/zendframework/zendframework1/library/Zend/Loader.php:134

Как я могу решить это? Конечно, я мог бы попытаться исправить зависимости вручную. Но я бы предпочел способ, которым пользуются Composer и Zend.

0

Решение

Могу ли я сделать какую-то команду обновления после нее? Потому что кажется, что команда «zf.sh создать проект». был прерван Или это происходит на любую ошибку?

Во всяком случае, … мое затмение до сих пор не знает этого:
класс IndexController расширяет Zend_Controller_Action ..
Eclipse не знает, что такое Zend_Controller_Action.
То же самое с тестовой папкой …
Класс IndexControllerTest расширяет Zend_Test_PHPUnit_ControllerTestCase
Eclipse не может разрешить Zend_Test_PHPUnit_ControllerTestCase

1

Другие решения

ZF1 и Composer не работают вместе из коробки.

ZF1 не будет знать о дополнительных классах / файлах, которые вы установили через Composer.

Композитор Автозагрузка и ZF1

Вам всегда нужно добавить Composer Autoloader в ZF1.

Один раз для «bin-скриптов» и один раз для «public / index.php».

  • Сценарии

    Пожалуйста, добавьте следующую строку вверху zendframework1/bin/zf.php файл:

    require '../vendor/autoload.php';

    Это устанавливает автозагрузчик Composer, так что классы PHPUnit будут автоматически загружаться.

    Комментарий от Sven:

    Это не останется так навсегда. Патч сгенерированного файла bin / zf.php будет перезаписан при следующей установке более новой версии ZF1 — и он не будет работать полностью из коробки на другом компьютере, где проект был недавно установлен.

    Используйте раздел скриптов вашего composer.json. Вы можете добавить туда скрипт PHP, который автоматически изменяет файл zf.php (вставляя оператор require) каждый раз, когда вы обновляете свои зависимости.

  • Web

    вам нужно будет добавить строку сверху и public/index.php,

Версия PHPUnit

Обратите внимание, что вам может потребоваться уменьшить версию phpUnit до «3.4».

Ссылаясь на Адама Лундригана:

Поддерживаемая ветвь PHPUnit для Zend Framework v1 — v3.4.x.
Не планируется обновлять ZFv1 до более новой версии PHPUnit.

Для старого вам нужны старые запчасти 🙂
По крайней мере, для «Zend_Test_PHPUnit_ControllerTestCase» нужны некоторые настройки, чтобы сделать его полностью совместимым с phpUnit v4. Смотрите также: https://stackoverflow.com/a/27092238/1163786


Во всяком случае, … мое затмение до сих пор не знает: … имена классов …

Вы можете добавить папку vendor в путь для включения вашего проекта, чтобы файлы сканировались на предмет имен классов и «Intellisense» начинал работать.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector