据我所知,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/