Переменная переменной при вызове метода модели
Переменная переменной при вызове метода модели
Доброго времени суток всем. Столкнулся вот с какой проблемкой.
Не работает конструкция $this->{model_name}::model()->название метода, в лог валится: "syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM".
Версия php: 5.2.4. Как можно обойти эту проблему и сделать символический вызов ( то есть с подстановкой имени модели из переменной) ?
Не работает конструкция $this->{model_name}::model()->название метода, в лог валится: "syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM".
Версия php: 5.2.4. Как можно обойти эту проблему и сделать символический вызов ( то есть с подстановкой имени модели из переменной) ?
Re: Переменная переменной при вызове метода модели
В Yii есть стандартный способ
Код: Выделить всё
CActiveRecord::model($this->model_name)->method()
Последний раз редактировалось ElisDN 2012.11.20, 15:03, всего редактировалось 3 раза.
Re: Переменная переменной при вызове метода модели
Код: Выделить всё
$res = call_user_func($this->{model_name}.'::model')->method;
Re: Переменная переменной при вызове метода модели
Не работает. Выводит "Use of undefined constant model_name - assumed 'model_name' "Loki писал(а):Код: Выделить всё
$res = call_user_func($this->{model_name}.'::model')->method;
Re: Переменная переменной при вызове метода модели
Ну да. Переменные в PHP со знака доллара начинаться должны. $this->$model_name или $this->{$model_name}.vitaliy43 писал(а):Не работает. Выводит "Use of undefined constant model_name - assumed 'model_name' "
- lancecoder
- Сообщения: 2532
- Зарегистрирован: 2012.06.26, 17:16
Re: Переменная переменной при вызове метода модели
зис не надо
$model_name::model()->find()
$model_name::model()->find()
- lancecoder
- Сообщения: 2532
- Зарегистрирован: 2012.06.26, 17:16
Re: Переменная переменной при вызове метода модели
а если зыс юзаете значит модель у вас в свойствах и тогда не надо ::model()
- lancecoder
- Сообщения: 2532
- Зарегистрирован: 2012.06.26, 17:16
Re: Переменная переменной при вызове метода модели
может быть еще 1 вариант если в свойстве строка с именем модели, тогда
$model = $this->model_name;
$model::model()->find()
$model = $this->model_name;
$model::model()->find()
Re: Переменная переменной при вызове метода модели
В 5.2?lancecoder писал(а):$model::model()->find()
- lancecoder
- Сообщения: 2532
- Зарегистрирован: 2012.06.26, 17:16
Re: Переменная переменной при вызове метода модели
не вижу преград или может не знаю, 5.4 помоему хавает такое
- lancecoder
- Сообщения: 2532
- Зарегистрирован: 2012.06.26, 17:16
Re: Переменная переменной при вызове метода модели
ну если любите пожоще:
$model=$model.'::model()';
$model=eval('return '.$model);
$model->find();
$model=$model.'::model()';
$model=eval('return '.$model);
$model->find();
Re: Переменная переменной при вызове метода модели
Это $model::model() вместе с анонимными функциями в 5.3.0 появилось.