【发布时间】:2017-03-27 21:15:23
【问题描述】:
当我向各种 DB_DataObject 类添加方法时,我倾向于
Class Example extends DB_DataObject {
function methodx() //start fresh
{
$newObject = DB_DataObject::factory($this->__table);
/* do stuff with $newObject */
}
而不是
function methodx() //use current instance
{
/* do stuff with $this */
}
我意识到我这样做是因为我不知道如何确定 $this 的状态。调用代码可能执行了以下任何操作:
$e = DB_DataObject::factory('Example'); $e->get(16); $e->methodx();
$e = DB_DataObject::factory('Example'); $e->somekey=$value; $e->methodx();
$e = DB_DataObject::factory('Example'); $e->somekey=$value; $e->find(); $e->methodx();
当我拿到“$this”时,如何确定它的状态?
对于使用当前实例与创建类的新实例,是否有经验法则或设计规则?
【问题讨论】:
-
我认为这个问题的一般性/通用性无法让您满意。这很大程度上取决于 methodx() 如何依赖/与对象的状态交互。
-
谢谢,公平点。但是关于我的第一个问题:methodx 如何确定 $this 是一个干净的实例(本质上是数据库中的一行)还是一个查找“设置”(其中 ->find() 将是适当的下一步)或一个 fetch “设置”(“获取”同上)。
-
我猜不会,至少不会超过
== null。如果它是一个新实例(如果我理解您的代码/问题),您的对象不应该有任何数据。编辑;对不起 - 刚刚看到这个问题的日期。