2009-12-16 55 views
1

是否可以使用原则上现有实体模型,如:Zend框架和学说(getter和setter)

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') 

可以这样教义做了什么?

感谢名单

回答

3

所有版本高达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); 

}

如果你想使用自己定制的硬编码的制定者/吸气你可以重写魔术获得者/设置者。 请参阅: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方法是很好的做法..如果您需要以某种方式操作数据,则只应使用自定义方法。

+0

我浏览了doctrune 2.0的文档,我发现这个 $ user = new CmsUser; $ user-> setStatus('user'); $ user-> setUsername('user'。$ i); $ user-> setName('Mr.Smith-'。$ i); – 2009-12-17 21:39:46