Свойство класса Цикла

#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() в объект PHP

3. @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. Я действительно не знаю, что ты имеешь в виду под этим.