Laravel中的合同与PHP中的接口之间的区别是什么?

时间:2015-12-03 17:07:28

标签: laravel interface laravel-5.1

据我所知,Laravel将它作为Contracts扩展的接口引用,因为它们被Laravel使用。但这看起来有点像循环推理。仅仅因为您的项目使用它,更改现有PHP功能的术语没有任何附加值。

还有什么东西吗?什么是为一个标准PHP功能的东西创造一个新术语背后的逻辑?或者是否有一些尚未在接口中的合同功能?

修改:为了澄清,在我对Thomas's post

4 个答案:

答案 0 :(得分:19)

“合同”并不是泰勒创造的一些新术语。这是程序员常用的术语。

接口是合同,但合同不一定是接口。简而言之,接口定义了类必须实现的契约。

抽象类也是合同。不同之处在于抽象类可以提供实际的实现,状态等,因此,它(在某种意义上)是一个更严格的合同。

另一个关键区别是子类只能扩展1个抽象类,但它可以实现多个接口。

所以基本上,“合同”不是一个新的命名约定。这是泰勒常用的术语。

答案 1 :(得分:14)

描述使用接口的想法只是一个好词。

Laravel合同只是PHP接口,因此它们不提供任何其他功能。

您可以在文档http://laravel.com/docs/5.1/contracts

中阅读有关此主题的更多信息

答案 2 :(得分:4)

正如其他人所说的那样,这对于Interfaces来说只是一个奇特的词,但我认为Taylor决定让它变得更加个性化。

我个人所说的是界面,它是编程语言的一个非常广泛/常用的词,你有你的接口,你可能正在使用的库有自己的接口等等。

您只是假设合约,因为Laravel将其作为属于this repo的所有接口的包装或别名。

答案 3 :(得分:0)

简短说明:合同是一个用于接口的术语,也用于抽象类。

相关问题