#php #oop #orm #model #kohana
#php #ооп #orm #Модель #kohana
Вопрос:
У меня есть аппаратное обеспечение модели ORM. И аппаратное обеспечение имеет отношение к типу модели ORM. Мне нужна опция get из аппаратной модели, например:
$hardware->option
Но если опция пуста, я хочу получить опцию из типа model:
$hardware->type->option
Я хочу сделать это автоматически (прозрачно) в аппаратном orm. Я сделал:
public function __get($column) {
if($column == 'option') {
if ($this->option != null) {
return $this->option;
} else {
// if option equals null then use value from type of this hardware
return $this->type->captive_portal;
}
}
return parent::__get($column);
}
Но это не работает. Потому что $this->опция не работает, потому что сначала мне нужно вызвать родительский метод __get для работы с отношениями. Но я не могу вызвать родительский метод __get и после него получить истинное значение. Или может?
Ответ №1:
Это работает хорошо 😉
public function __get($column) {
if($column == 'option') {
return $this->getOption( parent::__get($column) );
} else {
return parent::__get($column);
}
}
public function getOption($thisValue) {
if ($thisValue != null) {
return $thisValue;
} else {
// if option equals null then use value from type of this hardware
return $this->type->option;
}
}