Возможно ли как то изменить имя объекта что бы функция get_class() его возвращала.
т.е.:
class A {}
$a = new A();
get_class($a); // A
// set_class_name($a, 'B');
get_class($a); // B
Примечание:
DenisDangerous, нет, не то. class_alias('foo', 'bar'); не меняет его имя, а как я понял устанавливает имя в области видимости, это действует например для создания объекта:
class A {}
class_alias('A', 'B');
$a = new B();
get_class($a); // A
Примечание:
John Freeman, работаю с Yii.
У меня есть универсальная модель Setting для работы с разными компонентами. Когда создаю модель, например:
$model = new Setting('Page');
Yii при submit возвращает $_POST['Setting'] - берется с имени класса, а мне надо что бы возвращала в зависимости от переданного параметра, в данном случае $_POST['Page'].
Поэтому мне нужно менять имя класса Setting в зависимости от параметра.
Когда их много:
$model[] = new Setting('Page');
$model[] = new Setting('Comment');
$model[] = new Setting('User');
Можно конечно и использовать $_POST[Setting']['Page'], $_POST[Setting']['Comment'] ... , но так было бы удобнее...
Примечание:
Prototype.Denis, не то. Класс у меня один, это Setting, мне нужно что бы у него название было разное в зависимости с чем он работает. Нет классов Page, Comment ... , мне нужно что бы они, так сказать создавались виртуально. Клоны Setting с различными именами.
Примечание:
ладно, видимо я много хочу, и это не реализовать...
Примечание:
Если поподробнее о Setting, то он работает с конфигурацией приложений (изменение конфигураций в админке), является так сказать моделью другого класса Configuration, которая все обрабатывает.
Вот как он работает на самом деле:
$model = Setting::model(array('comp1','comp2',..., 'compn'));
// Внутри как раз таки он сам себя и клонирует через __clone() для каждого componenta.
Дальше я могу работать как с обычной моделью yii.
Валидировать:
$model['comp1']->validate();
Сохранить:
$model['comp1']->save();
Вывести форму:
<?php echo $form->textField($model[comp1],'[comp1]title'); ?>
А вся проблема (даже не проблема, а желание) избавиться в формах от "[comp1]" перед названием атрибута.
Примечание:
... что бы было не так:
Форма:
<?php echo $form->textField($model[comp1],'[comp1]title'); ?>
Установка атрибутов:
$model['comp1']->setAttributes($_POST['Setting']['comp1']);
а так:
Форма:
<?php echo $form->textField($model[comp1],'title'); ?>
Установка атрибутов:
$model['comp1']->setAttributes($_POST['comp1']);
Примечание:
Prototype.Denis, все эти доки мною перечитаны несколько раз. Конструктор форм мне в данном случае не подойдет. Формы попадаются не стандартные, и я так только еще больше гемороя получу.
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.