当前位置:  开发笔记 > 编程语言 > 正文

Laravel中的契约与PHP中的接口有什么区别?

如何解决《Laravel中的契约与PHP中的接口有什么区别?》经验,为你挑选了3个好方法。

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

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

编辑:为了澄清,正如我对托马斯的帖子的评论中所解释的那样,在合同中使用契约作为专有名词让我感到困惑.



1> Thomas Kim..:

"契约"并不是泰勒创造的一些新术语.这是程序员使用的一个非常常见的术语.

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

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

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

所以基本上,"合同"不是一个新的命名约定.这是泰勒正在使用的常用术语.


我意识到这是一个常用术语,但泰勒使它成为一个专有名词 - 资本"C""契约"[在文档的第一句中](http://laravel.com/docs/5.1/contracts).这意味着它与常规界面不同,或者是合同概念的新实现,就像Laravel"Facades"与[facade"一词的一般软件用法]不同(http:// webspicy) .blogspot.fr/2014/08/laravel-facadesmisuse长期-它们-are.html).因此我的困惑.

2> 小智..:

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

Laravel契约只是PHP接口,因此它们不提供任何其他功能.

您可以在http://laravel.com/docs/5.1/contracts文档中阅读有关此主题的更多信息



3> Fabio Antune..:

正如其他人所说的,这只是Interfaces的一个奇特的词,但我认为Taylor做出了这个决定,使其更具个性。

我个人的意思是,接口在编程语言上是一个非常广泛/常用的词,您有自己的接口,库(您可能正在使用)有自己的接口,等等。

您仅假设Laravel接口具有合约性质,就像所有属于此repo的接口的包装或别名一样。

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有