Я хочу создать свойства, настроенные на данные mysql.
class MyClass{
private $a = $r['a'];
private $b = $r['a'];
private $c = $r['c'];
}
Я знаю, что это неправильный синтаксис, но хочу, чтобы вы поняли идею.
Я мог бы создать метод, который возвращает запрошенные данные mysql, но я не хочу, чтобы функция вызывалась для каждой отдельной строки.
0
Zebra
11 Янв 2011 в 14:31
2 ответа
Лучший ответ
Зачем изобретать велосипед?
Проверьте этот mysqli_result :: fetch_object
1
ajreal
11 Янв 2011 в 15:21
Вам необходимо реализовать магический метод __get
.
Что-то типа:
class MyClass {
protected $_row = array();
public function __get( $name )
{
if (array_key_exists($name, $this->_row)) {
return $this->_row[$name];
}
return null;
}
public function __isset( $name )
{
return array_key_exists($name, $this->_row);
}
}
И вы можете использовать как:
$obj = new MyClass();
$obj->load(); // Or any method to load internal data
echo $obj->a . $obj->b;
2
joksnet
11 Янв 2011 в 14:39
У ajreal есть хорошая идея, почему вы создаете класс с массивом для хранения значений свойств и магических геттеров / настроек, когда mysqli_result :: fetch_object (или mysql_fetch_object) может делать то же самое без лишней работы?
– Jonathan Amend
11 Янв 2011 в 17:00
Похожие вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.