如何使用 Zend Framework 和 PHPUnit 成功创建项目?

Ste*_*e K 3 php phpunit zend-framework

首先让我说我已经在多个论坛上发布了这个,甚至试图在 ZF IRC 频道上获得帮助。我一直在谷歌上搜索一个星期,但仍然没有结果。过去我在这个网站上阅读了很多 Q 和 A,所以我想我会注册一个帐户并试着问你。

(是的,我搜索了以前提出的问题,但没有一个答案对我有帮助。)

我正在尝试学习如何将 Zend Framework 用于我加入的新项目。出于兼容性原因,他们使用 Zend 1(而不是较新的 Zend 2)。我找到并遵循了许多在线和实体书籍教程,但我一遍又一遍地得到相同的结果。

所以这里是(这是所有教程给出的说明)。我去framework.zend.com下载了完整版的ZF 1.12。

  1. 我解压了内容
  2. 我将库文件夹移动到一个不会被修改的安全目录
  3. 我将 bin 文件夹的内容移动到与我的 PHP 可执行文件相同的目录
  4. 我更改了 php.ini 文件中的 include_path 以包含库目录
  5. 我更新了我的 Windows PATH 变量以确保它包含 PHP 可执行文件的路径
  6. 我跑了

    zf --help

  7. 此命令按预期工作。我也成功运行了 zf show version (Zend Framework Version 1.12.7)。

  8. 我运行了命令

    zf 创建项目 myproject

执行此操作后,我收到以下错误消息:

Fatal error: Class 'PHPUnit_Framework_TestCase' not found in D:\Zend\library\Zend\Test\PHPUnit\ControllerTestCase.php on line 48
Run Code Online (Sandbox Code Playgroud)

有问题的那一行是扩展 PHPUnit_Framework_TestCase 的类声明。我不知道 PHPUnit_Framework_TestCase 在哪里定义的。它不在我从 Zend 下载的单个 ZIP 文件中的任何文件或目录中。我什至在所有文件和文件夹上运行 grep 搜索字符串“class PHPUnit_Framework_TestCase”,但没有打印任何结果。

有人建议我没有安装 PHPUnit(现在对我来说很明显)。困扰我的部分是我读过的教程绝对没有提到任何关于事先安装 PHPUnit 或如何安装它或 Zend 对它有什么依赖关系的任何内容。其中许多是初学者教程,假设您只有 PHP 的基本知识,这让我感到非常震惊,甚至没有人提到 PHPUnit。如果 PHPUnit 如此重要,我会认为我从 Zend 下载的文件会包含它。我猜不是。

所以我又上网了,得到了 PHPUnit 的 PHAR 文件,但是现在呢?我尝试将它放在多个不同的目录中,但仍然出现相同的错误。我不应该使用 PHAR 文件吗?我应该使用实际文件吗?

我该怎么做才能让 ZF 识别 PHPUnit、解决此错误并创建我的第一个 ZF 项目?

附加信息:Windows 7、XAMPP 服务器(在本地主机上运行)、PHP 5.5.6

bas*_*ten 5

假设您安装了 PHPUnit 并且它在您的包含路径中(请记住,ZF1 仅正式支持 PHPUnit 3.4.x,并且绝对不支持 PHPUnit 3.5.x 以上的任何内容,因此如果您使用的是 XAMPP,您可能需要降级PHPUnit的描述在这里)。问题很可能是由于这个commit,其中对 PHPUnit 的 require 调用被剥离以支持使用自动加载器。尽管 CLI 上的 ZF 工具没有设置自动加载器,因此找不到 PHPUnit,因为它根本不是required!要修复,您可以将这些行返回到开头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';
Run Code Online (Sandbox Code Playgroud)

值得注意的是,即使出现您提到的错误,ZF 工具在设置项目时仍应正常工作,只是不会产生单元测试操作(您必须自己制作)。如果你不想降级XAMPP PHPUnit的版本,你应该能够在本地添加正确的版本使用作曲家描述您的项目在这里。

2015 年 1 月更新: 不再需要为 XAMPP 降级 PHPUnit,因为 ZF1 自 1.12.7 以来至少支持 PHPUnit 4.1 版本(我没有在 4.1 以上进行测试)。这很有帮助,因为 PHPUnit 已于2014 年 12 月完全删除了其已弃用的 Pear 存储库,这意味着无论如何您都无法再下载 3.7 之前的版本!(目前 XAMPP 随 PHPUnit 3.6 一起提供)。如今,尽管在 Vagrant 配置期间通过 Composer 将 XAMPP 用于 Vagrant 并在全球范围内安装 PHPUnit 4.1 可能是值得的。