要求
> PSR-0兼容
>可以通过自己的PEAR channel安装
>单元测试支持:
检查是否发送正确的HTTP头
>捕获输出以允许在单元测试中进行检查
>优选PHPUnit帮助程序方法来帮助检查输出(对于不同的输出类型,即HTML,XML,JSON)
>允许设置传入的HTTP头,GET和POST参数和cookie,而不会实际执行HTTP请求
>需要独立使用 – 没有db抽象,模板化,所以fat框架都提供
背景
SemanticScuttle,一定要获得正确的“C”支持的应用程序是一个现有的工作应用程序.图书馆需要融入其中,需要与现有的结构和课程配合使用.我不会重写它来匹配框架的特定的所需目录布局.
应用程序已经具有单元测试,但是基于使HTTP缓慢的HTTP请求.此外,目前在www目录中拥有几十个.PHP文件的旧方式不是最具有管理性的解决方案,因此需要引入正确的控制器类.总而言之,将有约20-30个控制器.
以往的经验
一般来说,对于以前的一些项目,我对Zend Framework感到非常高兴,但它有几个缺点:
>不是可以安装的,所以我不能用它作为我的pear安装应用程序的依赖
>只能作为一个胖的下载,所以我手动需要从它提取所需的位 – 对于每一个ZF更新.
>当ZF控制器存在单元测试支持时,它缺乏一些高级实用功能,如json断言,HTTP状态代码和内容类型检查.
虽然这些观点似乎是挑剔的,但对我来说重要.如果我必须自己实现,我不需要使用外部的libary,而是写我自己的.
我不想要什么
StackOverflow有一个百万“什么是最好的PHP框架”的问题(1,2,3,4,5),但我不是在寻找那些,而是一个特定的库,帮助控制器.如果它是模块化框架的一部分,很好.
我也知道PHP framework comparison website,但这并没有帮助我回答我的问题,因为我的要求不在那里.
而且我知道我可以自己构建这一切,并发明另一个微框架.但为什么?已经有这么多人了,只有一件我需要的.
相关问题
> What’s your ‘no framework’ PHP framework?
> How do you convert a page-based PHP application to MVC?
对于功能测试,这正是您在文章中正在谈论的内容,您要查看的是WebTestCase类,它可以为the LiipFunctionalTestBundle bundle提供更高级的案例.
这允许一些事情,例如testing a contact form that sends an email的这个例子,其中整个HTTP请求已经完成,因为框架被编写为允许每个进程多个请求,并且没有全局状态,这很好,并且不需要http服务器正在运行或任何东西.您可以看到我对响应的HTTP状态代码做了断言,并且自从在Symfony2的标准发行版中的测试配置sending of emails is disabled之后,可以捕获电子邮件而不发送.
话虽如此,您也可以使用Symfony2的HttpFoundation组件的Request and Response类.它应该允许您测试您的代码,但是如果您使用整个框架,IMO将不会获得尽可能多的不错功能.当然这只是我有偏见的意见)