假设我有一个非常简单的模型,如下所示:
class Model_Person extends ORM
{
/*
CREATE TABLE `persons` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`firstname` VARCHAR(45) NOT NULL,
`lastname` VARCHAR(45) NOT NULL,
`date_of_birth` DATE NOT NULL,
);
*/
}
有什么方法可以添加带有全名的假装属性吗?
例如,我可以这样做:
$person = ORM::factory('person', 7);
echo $person->fullname;
而不是这个:
$person = ORM::factory('person', 7);
echo $person->firstname.' '.$person->lastname;
另一个示例是 is_young
属性,该属性将计算人的年龄并在年龄低于特定数字时返回 true。
最佳答案
您可以使用“神奇”__get()
方法,如下所示:
public function __get($column)
{
switch($column)
{
case 'fullname' :
return $this->firstname.' '.$this->lastname;
case 'is_young' :
// calculate persons age
}
return parent::__get($column);
}
或者您可以创建其他方法,例如 fullname()
和 age()
(对我来说似乎更好)。
关于model - KO3 : Pretend properties on a Kohana_ORM Model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3669513/