|
|
|
| Добрый день.
Подскажите, как создавать свойства объекта на "лету"? По аналогии с "переменными переменных".
На примере:
$array = array('name1','name2','name2');
|
Как создать свойства с именами значений массива. Т.е. $Object->name1 и т.д. | |
|
|
|
|
|
|
|
для: buratinkin
(30.06.2009 в 12:20)
| |
<?php
$obj = new stdClass();
foreach( array( 'name1','name2' ) as $name )
{
$obj->$name = null;
}
var_dump($obj);
?>
|
UPD.
Подумав:
<?php
$array = array( 'name1','name2' );
$obj = (object) array_fill_keys($array, null);
var_dump($obj);
?>
|
| |
|
|
|
|
|
|
|
для: Root
(30.06.2009 в 13:48)
| | . | |
|
|
|
|
|
|
|
для: Root
(30.06.2009 в 13:48)
| | А в самом объекте? Т.е. чтобы какой-либо метод создавал новые свойства объекта с именами значений массива.
<?php
public function method_name()
{
$names = array( 'name1','name2' );
/* ??? что-то вроде $this->$names[0] */
}
?>
|
| |
|
|
|
|
|
|
|
для: Buratinkin
(30.06.2009 в 18:06)
| | В PHP нельзя создавать реальные свойства "на лету", но можно воспользоваться волшебными методами __set и __get. | |
|
|
|
|
|
|
|
для: golovdinov
(30.06.2009 в 18:30)
| | А $MysqliResult->fetch_object()->column_name не из этой "оперы"? | |
|
|
|
|
|
|
|
для: Buratinkin
(30.06.2009 в 18:45)
| | Без понятия. Все-равно это реализовано в модуле PHP, на C скорее всего. | |
|
|
|
|
|
|
|
для: golovdinov
(30.06.2009 в 18:30)
| | >В PHP нельзя создавать реальные свойства "на лету", но можно воспользоваться волшебными методами __set и __get.
Ну-ну..
В php как раз свойства в классе объявлять не обязательно.
<?php
$obj = new stdClass();
$obj->test = 'test';
echo $obj->test;
?>
|
и никакого public $test в stdClass'e нет.
А методами __set, __get можно пользоваться чтобы, например, чтобы избежать создания динамических свойств. | |
|
|
|
|
|
|
|
для: Root
(30.06.2009 в 19:09)
| | Опять же, реализация этого класса лежит в недрах ядра PHP (даже не PEAR). Если бы мне дали работать с кодом, где подобное реализовано, я бы повесился. | |
|
|
|
|
|
|
|
для: golovdinov
(30.06.2009 в 21:33)
| | с любыми классами тоже самое. | |
|
|
|
|
|
|
|
для: Buratinkin
(30.06.2009 в 18:06)
| | >А в самом объекте? Т.е. чтобы какой-либо метод создавал новые свойства объекта с именами значений массива.
Неужели так тяжело самому попробовать? | |
|
|
|