laravel - Laravel 中的契约(Contract)和 PHP 中的接口(interface)有什么区别?

标签 laravel interface laravel-5.1

据我所知,Laravel 将它扩展的接口(interface)称为契约(Contract),因为它们被 Laravel 使用。但这似乎有点像循环推理。仅仅因为您的项目使用它而更改现有 PHP 功能的术语并没有增加任何值(value)。

还有更多的东西吗?为标准 PHP 功能创造一个新术语背后的逻辑是什么?或者接口(interface)中是否存在一些合约功能?

编辑 : 澄清一下,我在文档中使用 Contract 作为专有名词让我感到困惑,正如我对 Thomas's post 的评论中所解释的那样。

最佳答案

“契约(Contract)”并不是泰勒创造的一些新术语。这是程序员使用的一个非常常见的术语。

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

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

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

所以基本上,“契约(Contract)”不是一个新的命名约定。这是泰勒使用的常用术语。

关于laravel - Laravel 中的契约(Contract)和 PHP 中的接口(interface)有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34072046/

相关文章:

laravel - 如何在流明中执行 {{ asset ('/css/app.css' ) }} ?

c# - 需要接口(interface)名称 - 但我不明白如何实现它

javascript - 从 Laravel 5.1 中的 sessionStorage 获取值(value)

php - 在 laravel 5 中将一个表复制到另一个表

jquery - Laravel Ajax 请求 $request 空结果

laravel - 在查询生成器 laravel 中,datediff < 15 从今天开始

php - 将时间戳从数据库转换为 Day laravel

c++ - 防止通过接口(interface)删除对象

java - 为什么java中的Stack类不会在 'add'方法上抛出UnsupportedOperationException?

php - Laravel 5 Auth 更改表列