PHP ORM 最佳实践:从另一个对象类型检索值:


PHP ORM Best Practices: Retrieving values from another object type:

我最近开始使用RedBean ORM。

我有一个用户 bean 类型来存储用户的信息,以及一个用于用户功能的关联 FUSE 模型。

当用户登录或已经设置会话时,Redbean 会检索用户的信息,包括地址。

在用户登录之前,我通过 geoip 位置服务为新用户 bean 设置州和城市值。

我想知道这种类型的程序的最佳实践是什么。

在我看来,我有几个选择:

  1. 在用户 FUSE 模型中创建一个方法,该方法实例化 geoip 对象并设置值。
  2. 在 FUSE 模型之外实例化 geoip 对象并直接设置值,即:$user->状态 = $location->状态;
  3. 在 FUSE 模型之外实例化 geoip 对象,但将该对象传递给知道如何处理它的 FUSE 模型资源库。

我猜你真的不想做选项一,因为它为类创建了一个依赖项。

有什么想法吗?

如果您需要在每次登录时都与用户一起处理geoip内容 - 创建方法并在用户登录时初始化它(1(。在其他选项中,我会使用选项 3 ( Instantiate the geoip object outside of the FUSE model, but pass the object to a FUSE model setter which knows how to handle it. (。最好不要直接使用对象属性,并设置一些 metods 来处理这些属性。

$user->setProperty('one'); // Actually can just execute `$user->property = $var;`

但不是

$user->property = 'one';