如何制作可扩展的 Eloquent 模型?

Posted

技术标签:

【中文标题】如何制作可扩展的 Eloquent 模型?【英文标题】:How to make extensible Eloquent models? 【发布时间】:2013-06-12 02:36:20 【问题描述】:

如何在不修改源代码的情况下添加到 Eloquent 模型?我的意思是说我有一个用户模型,我想向 ProfilePost 添加一个 has_many 关系,但我不想修改用户模型。我想这样做是因为稍后,第 3 方开发人员也可以将他们的关系添加到我的用户模型中,而无需更改我的用户模型的源代码。什么是公认的解决方案?我一直在研究单对多关系,但我仍然需要在 User 模型中添加一个 belongs_to 子句。

对此,公认的解决方案是什么?

【问题讨论】:

【参考方案1】:

是解决方案开发人员创建一个新的用户模型,扩展您的用户模型。

您的用户模型

<?php namespace \App\Models;

use Eloquent;

class User extends Eloquent 

第三方开发者用户模型

<?php namespace \custom_lib\Models;

use \App\Models\User as BaseUser;

class User extends BaseUser 

现在在\custom_lib\Models\User 中,第三方开发者可以添加他的lib/plugin 的关系。

【讨论】:

这仍然存在一个问题,即开发人员扩展了用户模型,但已经编写的代码将使用旧的。我一直在为此查看 IOC 容器,但感觉它的可扩展性不够。有什么想法吗?

以上是关于如何制作可扩展的 Eloquent 模型?的主要内容,如果未能解决你的问题,请参考以下文章

如何制作可扩展卡?

如何构建可扩展的图像搜索引擎 [关闭]

如何制作可扩展的导航栏

如何制作可扩展的 UITableView 标头?

如何在没有 Eloquent 的情况下创建 Laravel 模型?

如何在 ngFor 循环 [Angular] 中制作可扩展的表格行?