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

2024-02-01

首先我要说的是,我已将其发布到多个论坛,甚至尝试在 ZF IRC 频道上获取帮助。我已经用谷歌搜索了一周,但仍然没有结果。我过去在这个网站上读过很多问答,所以我想我应该注册一个帐户并尝试询问你。

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

我正在尝试学习如何在我加入的新项目中使用 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. I ran

    zf--帮助

  7. 该命令按预期工作。我还成功运行了 zf show 版本(Zend Framework 版本 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

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

有些人建议我没有安装 PHPUnit(现在对我来说这是显而易见的)。让我烦恼的部分是绝对none我阅读的教程中提到了有关预先安装 PHPUnit 或如何安装它或 Zend 对它有哪些依赖项的内容。其中许多都是初学者教程,假设您只有 PHP 的基本知识,令我震惊的是,竟然没有一个教程提到 PHPUnit。如果 PHPUnit 如此重要,我会认为我从 Zend 下载的文件应该包含它。我猜不会。

所以我再次上网并获取了 PHPUnit 的 PHAR 文件,但现在怎么办?我尝试将其放入多个不同的目录中,但仍然遇到相同的错误。我不应该使用 PHAR 文件吗?我应该使用实际文件吗?

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

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


假设您安装了 PHPUnit 并且它位于您的包含路径中(请记住,ZF1 仅正式支持 PHPUnit 3.4.x,并且绝对不支持 PHPUnit 3.5.x 以上的任何内容,因此如果您使用 XAMPP,您可能必须降级PHPUnit 如上所述here https://stackoverflow.com/questions/1569012/how-to-install-an-older-version-of-phpunit-through-pear)。问题很可能是由于这个commit https://github.com/zendframework/zf1/commit/18327f18baa2fa0b6c8a47d2ad323859dc35040a,其中 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';

值得注意的是,即使出现您提到的错误,ZF 工具在设置项目时仍然应该正常工作,它只是不会产生单元测试操作(您必须自己制作它们)。如果您不想降级 XAMPP PHPUnit 版本,您应该能够使用 Composer 将正确的版本本地添加到您的项目中,如下所述here http://adamcod.es/2013/05/30/zend-1.x-phpunit-3.4-and-3.7-composer.html.

2015 年 1 月更新:不再需要为 XAMPP 降级 PHPUnit,因为 ZF1 自 1.12.7 起至少支持 PHPUnit 4.1 版本(我没有测试过 4.1 以上版本)。这很有帮助,因为 PHPUnit 具有完全移除 https://github.com/sebastianbergmann/phpunit/wiki/End-of-Life-for-PEAR-Installation-Method自 2014 年 12 月起,他们已弃用 Pear 存储库,这意味着无论如何您都无法再下载 3.7 之前的版本了! (目前 XAMPP 随 PHPUnit 3.6 一起提供)。不过,现在可能值得放弃 Vagrant 的 XAMPP,并在 Vagrant 配置期间通过 Composer 全局安装 PHPUnit 4.1。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Zend Framework 和 PHPUnit 成功创建项目? 的相关文章

  • gmail 不断阻止 PHPmailer 登录

    我将在接下来的 8 小时内部署一个网站 而 Gmail 刚刚停止接受 PHPmailer 登录我的帐户 起初 它在测试过程中工作了几个小时 然后 它就停止工作了 我已经允许所有允许不太安全的应用程序从 gmail 登录 但它仍然不允许 ph
  • 重定向而不改变url

    我总是不喜欢 htaccess 我正在尝试建立一个所有请求都通过index php 的网站 但我希望URL 类似于www sample com home 该网址实际上会加载 www sample com index php page hom
  • MySQL/PDO::quote() 尽管使用 PDO::PARAM_INT 参数,但仍在整数周围加上引号

    无论我传递给什么值 数据类型对 它都会出现 pdo gt quote value type 它总是将其引用为字符串 echo pdo gt quote foo PDO PARAM STR foo as expected echo pdo g
  • 在 php 中为类自动生成 getter 和 setter 的最佳方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我经常创建一个包含一些私有变量的类 当设置此类的实例时 应该可以使用 getter 和 setter 填充该类的所有变量 有没有一种简单的方法可
  • Woocommerce 让产品显示在存档页面中

    我正在尝试让所有产品显示在我商店的存档页面中 我想知道他们的id我正在使用我的一个钩子 它在 wp head 上运行并检查 if is product category 我想以某种方式访问 产品的查询并获取它们的 ID if is prod
  • 如何使用 php 下载/打印页面的特定部分

    我有一个 HTML 页面如下 Lorem Ipsum is simply dummy text of the printing and typesetting industry Lorem Ipsum has been the indust
  • 是否可以使用 PHP 重定向发送 POST 数据?

    更新 这不是重复的如何使用 PHP 发送 POST 请求 https stackoverflow com questions 5647461 how do i send a post request with php 那里的解决方案对我不起
  • 为什么 iconv 在 php:7.4-fpm-alpine docker 中返回空字符串

    给出以下代码
  • PHPUnit 在 IDE 中工作,但服务器说找不到类

    我在 PhpStorm 中使用 Symfony3 插件 我的 PHP 解释器是 7 0 18 我在 PhpStorm 中配置了 PHPUnit 6 3 0 phar文件位于我的项目的根目录中 单元测试就像 IDE 中的魅力一样工作 但在服务
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • 覆盖控制器 Symfony 3.4/4.0

    我目前正在尝试覆盖 FOSUserBundle 中的控制器 在新的文档中 https symfony com doc 3 4 bundles override html https symfony com doc 3 4 bundles o
  • Woocommerce 结账自定义选择字段

    我有以下功能 将选择列表添加到 woo commerce 结账表单中 woocommerce form field airport pickup array type gt select class gt array airport pic
  • 在 apache docker 容器中运行虚拟主机

    我在同一个 apache 容器中有两个 php 应用程序 我试图在端口上运行其中一个应用程序 因为它需要通过根域而不是子文件夹进行访问 我想在端口 8060 上运行应用程序 我尝试使用 apache 虚拟主机执行此操作 但它不会加载页面 h
  • PHP 中只保留数组的前 N ​​个元素? [复制]

    这个问题在这里已经有答案了 有没有办法只保留数组的前 N 个 例如 10 个 元素 我知道有array pop 但是有没有更好 更优雅的方法呢 您可以使用array slice http php net array slice or arr
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • php 错误 fopen(): 文件名不能为空

    发送带有附件代码的电子邮件工作正常 最近我们已将文件传输到另一个托管服务器 idk 发生了什么 它显示以下错误 警告 fopen 第 106 行 home hugerecruitmetnt public html validatecva p
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主
  • ini_set 'session.gc_maxlifetime' 为 1 天

    If I do ini set session gc maxlifetime 86400 这是否意味着用户可以将浏览器留在同一页面 非活动状态 最多 1 天 而不必担心会话被垃圾收集并被注销 如果服务器配置不支持此功能会发生什么 它会给我一
  • Magento - 自定义支付模块

    这是一个非常普遍的问题 但这里是 我正在尝试在 Magento 中创建一个自定义支付模块 我创建了一个 常规 模块 可以连接到 Magento 事件 观察者模型 但是我如何告诉 Magento 将模块视为支付模块 以便它显示在管理后端和结账

随机推荐