Laravel 为所有 eloquent 模型添加自定义方法
Laravel add custom method for all eloquent models
我正在寻找一种方法来添加一些将在所有模型中使用的自定义方法。我可以想象 3 种方法:
- 将自定义方法添加到主 Eloquent 的 Model.php class 文件(我想避免这样做,因为这是一个核心文件)
- 正在使用所需的自定义方法创建自定义模型 class,这将扩展到 eloquent 的模型 class 并且项目中的所有模型都将扩展到自定义模型 class.
- 添加将具有我的方法并将其包含在所有模型中的特征
但是,我想以尽可能最好的方式更有效地完成它。他们还有其他方法吗?
PS 我正在使用 laravel 5.2 作为一个旧项目。
根据评论讨论并添加我在 Laravel 中的经验,我建议您使用 #2 或 #3 方法,正如@ceejayoz 在评论中指定的那样
第一个绝对是一个糟糕的方法,因为您需要修改核心,这根本不是一个好的做法。第二个和第三个都是很好的方法。
但是,在此之前,您需要检查您的要求是否真的所有模型(包括您的应用程序将拥有的任何未来模型)都需要额外的功能,但是您可以为所有模型使用特征。
如果我有选择,我可能会选择 traits 而不是自定义模型,因为 traits 比自定义模型相对简单
我正在寻找一种方法来添加一些将在所有模型中使用的自定义方法。我可以想象 3 种方法:
- 将自定义方法添加到主 Eloquent 的 Model.php class 文件(我想避免这样做,因为这是一个核心文件)
- 正在使用所需的自定义方法创建自定义模型 class,这将扩展到 eloquent 的模型 class 并且项目中的所有模型都将扩展到自定义模型 class.
- 添加将具有我的方法并将其包含在所有模型中的特征
但是,我想以尽可能最好的方式更有效地完成它。他们还有其他方法吗?
PS 我正在使用 laravel 5.2 作为一个旧项目。
根据评论讨论并添加我在 Laravel 中的经验,我建议您使用 #2 或 #3 方法,正如@ceejayoz 在评论中指定的那样
第一个绝对是一个糟糕的方法,因为您需要修改核心,这根本不是一个好的做法。第二个和第三个都是很好的方法。
但是,在此之前,您需要检查您的要求是否真的所有模型(包括您的应用程序将拥有的任何未来模型)都需要额外的功能,但是您可以为所有模型使用特征。
如果我有选择,我可能会选择 traits 而不是自定义模型,因为 traits 比自定义模型相对简单