按合同编程是.NET的一个现代趋势,但是PHP中的代码契约的库/框架呢?您如何看待这种范例对PHP的适用性?
谷歌搜索“代码合同php”对我没有任何帮助。
注意:“按合同编写代码”,我指的是Design by contract,因此它与.NET或PHP接口无关。
答案 0 :(得分:25)
答案 1 :(得分:2)
我创建了PHP-Contract,
PHP的C#契约的轻量级和多功能实现。 这些合同在很多方面都超过了C#的功能。请 查看我的Github项目,获取一份副本,并查看维基。
<强> https://github.com/axiom82/PHP-Contract 强>
这是一个基本的例子:
class Model {
public function getFoos($barId, $includeBaz = false, $limit = 0, $offset = 0){
$contract = new Contract();
$contract->term('barId')->id()->end()
->term('includeBaz')->boolean()->end()
->term('limit')->natural()->end()
->term('offset')->natural()->end()
->metOrThrow();
/* Continue with peace of mind ... */
}
}
有关文档, please visit the wiki.
答案 2 :(得分:1)
interface is not a contact(实际上,Laravel definition是错误的),按合同设计(DbC)是一种软件正确性方法。它使用前提条件和后置条件来记录(或以编程方式断言)某个程序所引起的状态变化。我找到了一种不错的php方法here
答案 3 :(得分:0)
我猜WikiPedia提到了面向组件的软件方法。在这种方法中,方法被称为组件的公共接口或合同。
合同是服务提供者与客户之间的“协议”。在组件环境中,系统由各种创建者/供应商的组件组成,合同的“构造”至关重要。
在这样的环境中,将您的组件视为一个黑盒子,必须能够与其他人创建的其他组件有效地共存和协作,从而形成更大系统的更大系统或子系统,等
有关详细信息,我建议您使用Google阅读“组件软件 - 超越面向组件的编程”一书,了解与组件编程相关的所有内容。