eclipse
Новичок
MySQL + класс + недокументированные (?) конструкции PHP
Регулярно пишу классы, достающие много полей из БД. В один момент надоело писать конструкции типа
и я решил написать в конструкторе класса так:
1.
И это работает. Однако вопрос:
- это документированная конструкция языка? Могу ли я так написать и быть спокоен, что оно будет работать в следующих версиях PHP?
2.
Поля, полученные таким образом, не были объявлены в явном виде как public, private или какие-либо еще. Попробовал создать экземпляр объекта и напечатать какое-нибудь поле:
Поле видно извне, то есть оно public. Мне так и надо. Но опять же,
Вопрос: Написано ли где-нибудь в документации, что вот этакие «динамически создаваемые» поля объекта по умолчанию становятся именно public? Могу ли я так написать и быть спокоен, что оно будет работать в следующих версиях PHP?
P.S. PHP 5.2.
Регулярно пишу классы, достающие много полей из БД. В один момент надоело писать конструкции типа
PHP:
$this->$field1 = $data->field1;
$this->$field2 = $data->field2;
//...
$this->$field20 = $data->field20;
1.
PHP:
$sql = "SELECT i.item_id, i.full_descr, ... FROM item i, ... WHERE ...";
$res = mysql_query($sql);
$data = mysql_fetch_object($res);
foreach($data as $key => $value)
$this->$key = $value;
И это работает. Однако вопрос:
PHP:
$this->$key
2.
Поля, полученные таким образом, не были объявлены в явном виде как public, private или какие-либо еще. Попробовал создать экземпляр объекта и напечатать какое-нибудь поле:
PHP:
$i = new Item(12);
echo $i->full_descr;
Вопрос: Написано ли где-нибудь в документации, что вот этакие «динамически создаваемые» поля объекта по умолчанию становятся именно public? Могу ли я так написать и быть спокоен, что оно будет работать в следующих версиях PHP?
P.S. PHP 5.2.