【发布时间】:2011-09-10 15:01:07
【问题描述】:
我正在寻找一个(小型)库,它可以帮助我为我的 pet project 干净地实现 front controller 并将请求分派到单个控制器类。前端控制器/调度程序和控制器类需要完全可单元测试,而无需发送 HTTP 请求。
要求
- PSR-0 兼容
- 可通过自己的PEAR channel 安装
- 支持单元测试:
- 检查是否发送了正确的 HTTP 标头
- 捕获输出以允许在单元测试中进行检查
- 最好使用 PHPUnit 辅助方法来帮助检查输出(针对不同的输出类型,即 HTML、XML、JSON)
- 允许设置传入的 HTTP 标头、GET 和 POST 参数以及 cookie,而无需实际执行 HTTP 请求
- 需要独立使用 - 没有 db 抽象、模板等,因此胖框架都提供了
背景
SemanticScuttle 是一个必然会获得适当“C”支持的应用程序,它是一个现有的工作应用程序。库需要融入其中,并且需要与现有的结构和类一起工作。我不会重写它以匹配框架的特定所需目录布局。
应用程序已经有单元测试,但基于 HTTP 请求,这使得它们变慢。此外,当前在www 目录中拥有几十个.php 文件的旧方法并不是最易于管理的解决方案,这就是需要引入适当的控制器类的原因。总而言之,将有大约 20-30 个控制器。
以前的经验
总的来说,我对以前的一些项目中的 Zend Framework 非常满意,但它有几个缺点:
- 不是 pear 可安装的,因此我不能在我的 pear 可安装应用程序中将其用作依赖项
- 仅作为一个胖下载提供,因此我需要手动从中提取所需的位 - 用于每个 ZF 更新。
- 虽然 ZF 控制器存在单元测试支持,但它缺少一些高级实用程序功能,例如 json 断言、HTTP 状态代码和内容类型检查。
虽然这些观点似乎很挑剔,但它们对我来说很重要。如果我必须自己实现它们,我不需要使用外部库,而是自己编写。
我不想要的
StackOverflow 有一百万个“什么是最好的 PHP 框架”问题(1、2、3、4、5),但我不是在寻找那些,而是在寻找一个 特定的库,可帮助控制器。如果它是模块化框架的一部分,那很好。
我也知道PHP framework comparison website,但这无助于回答我的问题,因为那里没有列出我的要求。
而且我知道我可以自己构建这一切并发明另一个微框架。但为什么?已经有这么多,我只需要拥有我需要的一切。
相关问题
【问题讨论】:
-
not pear-installable那又怎样?许多发行版都有一个用于维护当前安装版本的软件包。only available as one fat download- 又一次,那又怎样?您只需下载并安装一次。it's lacking some advanced utility functionality很容易用你自己的扩展基础测试类并添加额外的断言。 -
@zerkms:我不会只安装一次。我需要升级和维护它。拥有一个梨形频道会有所帮助。
-
@cweiske:每个 linux 发行版的软件包中都有它。你用哪个?顺便说一句,用梨你也可以下载一个胖文件。
-
@zerkms:“使用梨,您还可以下载一个和一个胖文件” - 是的,这是一个问题,因为 ZF 没有在单独的模块中提供。你看我的问题 :) 另外,该软件也应该可以安装在 OSX 和 Windows 上。
-
@cweiske:当你想测试没有 HTTP 请求时,你写了一个要求:“检查是否发送了正确的 HTTP 标头”。我认为这行不通。您至少需要模仿请求标头来执行此类测试。
标签: php model-view-controller frameworks controller phpunit