用PHP编写合同编程

时间:2010-10-25 23:58:27

标签: php design-patterns code-contracts design-by-contract

按合同编程是.NET的一个现代趋势,但是PHP中的代码契约的库/框架呢?您如何看待这种范例对PHP的适用性?

谷歌搜索“代码合同php”对我没有任何帮助。

注意:“按合同编写代码”,我指的是Design by contract,因此它与.NET或PHP接口无关。

4 个答案:

答案 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阅读“组件软件 - 超越面向组件的编程”一书,了解与组件编程相关的所有内容。