据我所知,Laravel将它作为Contracts扩展的接口引用,因为它们被Laravel使用.但这看起来有点像循环推理.仅仅因为您的项目使用它,更改现有PHP功能的术语没有任何附加值.
还有更多的东西吗?为标准PHP功能创建新术语背后的逻辑是什么?或者是否有一些尚未出现在接口中的合同功能?
编辑:为了澄清,正如我对托马斯的帖子的评论中所解释的那样,在合同中使用契约作为专有名词让我感到困惑.
"契约"并不是泰勒创造的一些新术语.这是程序员使用的一个非常常见的术语.
接口是合同,但合同不一定是接口.简而言之,接口定义了类必须实现的契约.
抽象类也是合同.不同之处在于抽象类可以提供实际的实现,状态等,因此,它(在某种意义上)是一个更严格的契约.
另一个关键的区别是子类只能扩展1个抽象类,但它可以实现多个接口.
所以基本上,"合同"不是一个新的命名约定.这是泰勒正在使用的常用术语.
描述使用接口的想法只是一个好词.
Laravel契约只是PHP接口,因此它们不提供任何其他功能.
您可以在http://laravel.com/docs/5.1/contracts文档中阅读有关此主题的更多信息
正如其他人所说的,这只是Interfaces的一个奇特的词,但我认为Taylor做出了这个决定,使其更具个性。
我个人的意思是,接口在编程语言上是一个非常广泛/常用的词,您有自己的接口,库(您可能正在使用)有自己的接口,等等。
您仅假设Laravel接口具有合约性质,就像所有属于此repo的接口的包装或别名一样。