#php #oop
Вопрос:
как зациклить все свойства класса
class object {
public $a = 1;
public $b = 2;
public $c = 3;
}
и результат будет
"property $a is 1";
"property $b is 2";
"property $c is 3";
Комментарии:
1. Что ты пытаешься сделать ? Какова цель всего этого? Массив может подходить для вашей проблемы гораздо лучше, чем любое решение, основанное на отражении.
2. моя цель-установить свойство результата
mysql_fetch_object()
в объект PHP3. @GusDe круто: Не можете ли вы просто передать имя класса
"object"
этой функции, и она автоматически вернет ваши результаты в виде этих объектов?4. Даже если вы сделаете это с помощью операции в стиле отражения, такой как ответ BoltClock, вам все равно потребуется проверить значение каждого параметра, прежде чем использовать его где-либо. Существует очень мало случаев, когда вы можете пропустить проверку.
5. Ищите
PDO::FETCH_CLASS
в php.net/manual/en/pdostatement. fetch.php — это может быть то, что вы ищете — или используйте$class_name
параметрmysql_fetch_object
для инкапсуляции вашей логики в сам возвращаемый объект.
Ответ №1:
Вы можете использовать цикл foreach:
foreach (new object as $prop => $value) {
echo "property $prop is $valuen";
}
Комментарии:
1. вау, я не знал
foreach()
, можно ли использовать для возражения. Постараюсь это проверить 😀2. Это «только» работает, если объект ведет
Iterator
себя по умолчанию. Просто отмечаю.3. я не совсем понимаю , что вы имеете в виду
Iterator
, есть ли у вас ссылка, объясняющая это?4. @GusDe Отправная точка-это docs.php.net/control-structures.foreach , оттуда перейдите по ссылке в разделе «Начиная с PHP 5, итерацию объектов также можно настраивать».
Ответ №2:
Вы могли бы взглянуть get_object_vars()
, но не после того, как взглянете на комментарий Полинома.
Комментарии:
1. да, я избегаю использования
ger_object_vars()
, так как мне нужно изменить тип значения.2. Я действительно не знаю, что ты имеешь в виду под этим.