如何制作可扩展的 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 模型?的主要内容,如果未能解决你的问题,请参考以下文章