0

I am still having trouble to get into Zend Framework.

What I use is this Composer configuration:

{
  "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"
   }
}

And those are my commands:

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/

But it won't work. It throws an error:

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

This is the complete stack trace:

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$ 

Everything wents correctly... But now, the next command which is creating the zend project, fails....

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

How can I solve this? Of course I could try to fix the dependencies manually. But I would prefer a way which is used by Composer and Zend.

halfer
  • 19,824
  • 17
  • 99
  • 186
NetBull
  • 51
  • 7
  • A very old framework, and a very old version of PHPUnit, I must say. At least you should allow compatible updates with Composer. Read https://getcomposer.org/doc/01-basic-usage.md and opt for the tilde or caret operator to define version ranges instead of one exact version. – Sven Apr 15 '15 at 21:32

2 Answers2

1

ZF1 and Composer do not work together out of the box.

ZF1 will not know about additional classes/files you installed via Composer.

Composer Autoloading and ZF1

You always need to add the Composer Autoloader to ZF1.

One time for the "bin scripts" and one time for web "public/index.php".

  • Scripts

    Please add the following line at the top of the zendframework1/bin/zf.php file:

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

    This sets up the Composer Autoloader, so that PHPUnit classes will get autoloaded.

    Comment by Sven:

    This will not stay so forever. Patching the generated bin/zf.php file will be overwritten the next time a newer ZF1 version is being installed - and it will entirely not work out of the box on another machine where the project is freshly installed.

    Use the script section of your composer.json. You can add a PHP script there, which modifies the zf.php file (by inserting the require statement) automatically each time you update your dependencies.

  • Web

    you will need to add the line from above also to public/index.php.

PHPUnit version

Please note that you might need lower the phpUnit Version to "3.4".

Citing Adam Lundrigan:

The supported branch of PHPUnit for Zend Framework v1 is v3.4.x. There are no plans to update ZFv1 to any newer version of PHPUnit.

For an oldtimer you need oldtimer parts :) At least the "Zend_Test_PHPUnit_ControllerTestCase" needs some tweaks to make it fully-compatible with phpUnit v4. See also: https://stackoverflow.com/a/27092238/1163786


Anyway,... my eclipse still does not know: ... classnames ...

You might add the vendor folder to the include path for your project, so that the files are scanned for class names and "Intellisense" starts working.

Community
  • 1
  • 1
Jens A. Koch
  • 39,862
  • 13
  • 113
  • 141
  • 1
    This will not stay so forever. Patching the generated bin/zf.php file will be overwritten the next time a newer ZF1 version is being installed - and it will entirely not work out of the box on another machine where the project is freshly installed. – Sven Apr 15 '15 at 21:35
  • which ZF Version ist working properly with composer? – NetBull Apr 21 '15 at 06:16
1

May I make some kind of update command after it? Cause it seems that the command "zf.sh create project ." has been aborted. Or is it going through on any error?

Anyway,... my eclipse still does not know this: class IndexController extends Zend_Controller_Action .. Eclipse is not knowing what Zend_Controller_Action is. Same with Test Folder... class IndexControllerTest extends Zend_Test_PHPUnit_ControllerTestCase Eclipse can't resolve Zend_Test_PHPUnit_ControllerTestCase

NetBull
  • 51
  • 7