据我所知,Laravel将它作为Contracts扩展的接口引用,因为它们被Laravel使用。但这看起来有点像循环推理。仅仅因为您的项目使用它,更改现有PHP功能的术语没有任何附加值。
还有什么东西吗?什么是为一个标准PHP功能的东西创造一个新术语背后的逻辑?或者是否有一些尚未在接口中的合同功能?
修改:为了澄清,在我对Thomas's post
答案 0 :(得分:19)
“合同”并不是泰勒创造的一些新术语。这是程序员常用的术语。
接口是合同,但合同不一定是接口。简而言之,接口定义了类必须实现的契约。
抽象类也是合同。不同之处在于抽象类可以提供实际的实现,状态等,因此,它(在某种意义上)是一个更严格的合同。
另一个关键区别是子类只能扩展1个抽象类,但它可以实现多个接口。
所以基本上,“合同”不是一个新的命名约定。这是泰勒常用的术语。
答案 1 :(得分:14)
描述使用接口的想法只是一个好词。
Laravel合同只是PHP接口,因此它们不提供任何其他功能。
中阅读有关此主题的更多信息答案 2 :(得分:4)
正如其他人所说的那样,这对于Interfaces来说只是一个奇特的词,但我认为Taylor决定让它变得更加个性化。
我个人所说的是界面,它是编程语言的一个非常广泛/常用的词,你有你的接口,你可能正在使用的库有自己的接口等等。
您只是假设合约,因为Laravel将其作为属于this repo的所有接口的包装或别名。
答案 3 :(得分:0)
简短说明:合同是一个用于接口的术语,也用于抽象类。