1

是否可以在现有实体模型上使用学说,例如:

class user{
protected $_id;
protected $_name;

public function set_id($_id){}
public function get_id(){}
public function set_name($_name){}
public function get_name(){}
}

或使用硬编码的 getter 和 setter 生成或使用模型。

我不想用

$user->name
$user['name'] 
$user->get('name')

这可以用教义来完成吗?

谢谢

4

1 回答 1

3

对于直到 Doctrine 1.2 的所有版本:您的实体模型类需要扩展 Doctrine_Record 类。

模型字段的定义也需要按照“教义方式”来完成。见: http: //www.doctrine-project.org/documentation/manual/1_2/en/defining-models

例子:

公共函数 setTableDefinition() {

   $this->hasColumn('username', 'string', 255);
   $this->hasColumn('password', 'string', 255);

}

如果您想使用自己的自定义硬编码 setter/getter,您可以覆盖魔术 getter/setter。请参阅: http: //www.doctrine-project.org/documentation/manual/1_2/en/introduction-to-models 示例:

类用户扩展 BaseUser {

public function setPassword($password)
{
    return $this->_set('password', md5($password));
} 

}

最后一句话/问题:使用神奇的 setter/getter 方法是很好的做法。如果您需要以某种方式操作数据,您应该只使用自定义方法。

于 2009-12-17T14:32:58.243 回答