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

时间:2012-05-05 16:40:58

标签: php orm redbean

我最近开始使用RedBean ORM。

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

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

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

我想知道这种程序的最佳做法是什么。

我看到它的方式,我有几个选择:

  1. 在用户FUSE模型中创建一个方法,该方法实例化geoip对象并设置值。
  2. 在FUSE模型之外实例化geoip对象并直接设置值,即:$ user-> state = $ location-> state;
  3. 在FUSE模型之外实例化geoip对象,但将对象传递给知道如何处理它的FUSE模型setter。
  4. 我猜你真的不想做第一个选项,因为它会为类创建一个依赖。

    有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您需要在每次登录时都与用户一起处理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.)。最好不要直接使用对象属性并设置一些方法来处理这些属性。

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

但不是

$user->property = 'one';