讨论数量:
扩展包应做到高内聚低耦合,举个例子,你这个扩展包需要用户ID,你可以让使用包的人传入 User 模型,但是这样还存在强依赖!也就是说你这个包要依赖 illuminate/auth
、illuminate/database
等包。
为了降低耦合度,那么可以定义个 Interface,Interface 中定义个方法如:getPrimaryKey()
,只需要调用者传入这个 Interface 的实现即可!当然如果扩展包中的逻辑只用到用户 ID 的话,只让调用者传入用户 ID 。
作为扩展包开发者,你无需考虑用户认证逻辑,这个应该有包使用者来保证的!
Do one thing and do it well!
扩展包应做到高内聚低耦合,举个例子,你这个扩展包需要用户ID,你可以让使用包的人传入 User 模型,但是这样还存在强依赖!也就是说你这个包要依赖
illuminate/auth
、illuminate/database
等包。为了降低耦合度,那么可以定义个 Interface,Interface 中定义个方法如:
getPrimaryKey()
,只需要调用者传入这个 Interface 的实现即可!当然如果扩展包中的逻辑只用到用户 ID 的话,只让调用者传入用户 ID 。作为扩展包开发者,你无需考虑用户认证逻辑,这个应该有包使用者来保证的!
Do one thing and do it well!