首先我要说的是,我已将其发布到多个论坛,甚至试图在ZF IRC频道上获得帮助.我一直在谷歌搜索,但仍然没有结果.我过去在这个网站上看过很多Q和A,所以我想我会创建一个帐户并尝试问你.
(是的,我搜索了之前提出的问题,但没有一个答案对我有帮助.)
我正在尝试学习如何将Zend Framework用于我加入的新项目.出于兼容性原因,他们使用的是Zend 1(而不是更新的Zend 2).我发现并遵循了许多在线和实体书籍教程,但我一遍又一遍地得到相同的结果.
所以这里(这是所有教程给出的指令).我去了framework.zend.com并下载了完整版的ZF 1.12.
>我解压缩了内容
>我将库文件夹移动到一个不会被修改的安全目录
>我将bin文件夹的内容移动到与PHP可执行文件相同的目录中
>我更改了PHP.ini文件中的include_path以包含库目录
>我更新了我的Windows PATH变量,以确保它包含PHP可执行文件的路径
>我跑了
zf –help
>此命令按预期工作.我也成功运行了zf show version(Zend Framework Version 1.12.7).
>我跑了命令
zf创建项目myproject
执行此操作时,我收到以下错误消息:
Fatal error: Class 'PHPUnit_Framework_TestCase' not found in D:\Zend\library\Zend\Test\PHPUnit\ControllerTestCase.PHP on line 48
这个特定的行是一个扩展PHPUnit_Framework_TestCase的类声明.我不知道PHPUnit_Framework_TestCase的定义在哪里.它不在我从Zend下载的单个ZIP文件中的任何文件或目录中.我甚至在搜索字符串“class PHPUnit_Framework_TestCase”的所有文件和文件夹上运行grep,但它没有打印结果.
有人建议我没有安装PHPUnit(这对我来说很明显).让我烦恼的部分是,我读过的任何教程都没有提到任何关于安装PHPUnit的事情或者如何安装它或者Zend对它有什么依赖.其中许多是初学者教程,假设你只有PHP的基本知识,而且我甚至没有提到过PHPUnit,这让我很震惊.如果PHPUnit非常重要,我会认为我从Zend下载的文件会包含它.我猜不会.
所以我再次上网并获得了PHPUnit的PHAR文件,但现在又怎样了?我尝试将它放在多个不同的目录中,但我仍然得到相同的错误.我不应该使用PHAR文件吗?我应该使用实际文件吗?
我需要做些什么才能让ZF识别PHPUnit,解决此错误并创建我的第一个ZF项目?
附加信息:
Windows 7,XAMPP Server(在localhost上运行),PHP 5.5.6
解决方法:
假设您已经安装了PHPUnit并且它位于您的include路径上(请记住,ZF1仅正式支持PHPUnit 3.4.x并且绝对不支持PHPUnit 3.5.x以上的任何内容,因此如果您使用的是XAMPP,则可能需要降级PHPUnit如here所述.问题很可能是由于这个commit,其中对PHPUnit的require调用被剥离,支持使用自动加载器. CLI上的ZF工具不会设置自动加载器,因此找不到PHPUnit,因为它根本不是必需的!要解决此问题,可以将这些行返回到Zend / Test / PHPUnit / ControllerTestCase.PHP的开头
/** @see PHPUnit_Runner_Version */
require_once 'PHPUnit/Runner/Version.PHP';
/**
* Depending on version, include the proper PHPUnit support
* @see PHPUnit_Autoload
*/
require_once (version_compare(PHPUnit_Runner_Version::id(), '3.5.0', '>=')) ? 'PHPUnit/Autoload.PHP' : 'PHPUnit/Framework.PHP';
值得注意的是,即使你提到错误,ZF工具在设置项目时仍然可以正常工作,它不会产生单元测试操作(你必须自己制作).如果您不想降级XAMPP PHPUnit版本,则应该能够使用composer在本地向项目添加正确的版本,如here所述.
2015年1月更新:
不再需要为XAMPP降级PHPUnit,因为自1.12.7以来ZF1至少支持PHPUnit 4.1版本(我没有在4.1以上测试过).这很有用,因为截至2014年12月,PHPUnit拥有completely removed他们已弃用的Pear存储库,这意味着您无论如何都无法下载早于3.7的版本! (目前XAMPP附带PHPUnit 3.6).这些天虽然在Vagrant配置期间可能值得让XAMPP用于Vagrant并通过Composer全局安装PHPUnit 4.1.