Функция, которую вы ищете: get_object_vars
:
$vars = get_object_vars($input);
foreach ($vars as $outputname => $outputval) {
///...
}
Не пытайтесь выполнять итерации по самому объекту (foreach ($object as $key => $value)
), потому что он не всегда будет работать правильно. Иногда это будет (stdClass
в качестве примера), а иногда нет (любой класс, реализующий Traversable
...
Редактировать
Что касается вашего комментария ... Пока классы не делают ничего смешного (__get
или __set
, protected
или private
), вы можете сделать:
$newoutput = clone $input; //make a copy to return
$vars = get_object_vars($input);
foreach ($vars as $outputname => $outputval) {
$newoutput->$outputname = htmlspecialchars(stripslashes($outputval));
}
Но я не могу придумать ни одного метода, который будет работать 100% времени ... Другой вариант - вернуть объект nieve (stdclass
) вместо представленного:
$newoutput = new StdClass();
$vars = get_object_vars($input);
foreach ($vars as $outputname => $outputval) {
$newoutput->$outputname = htmlspecialchars(stripslashes($outputval));
}