Я пытаюсь создать объект PHP (5), который может выполнять итерацию по своим свойствам, создавая SQL-запрос только на основе его общедоступных свойств, а не частных.
Поскольку этот метод родительского объекта должен использоваться дочерними объектами, я не могу просто пропустить частные свойства по имени (я не буду знать, что они есть в дочерних объектах).
Есть ли простой способ определить изнутри объекта, какие из его свойств являются частными?
Вот упрощенный пример того, что у меня есть до сих пор, но этот вывод включает значение $bar:
class testClass {
public $foo = 'foo';
public $fee = 'fee';
public $fum = 'fum';
private $bar = 'bar';
function makeString()
{
$string = "";
foreach($this as $field => $val) {
$string.= " property '".$field."' = '".$val."' <br/>";
}
return $string;
}
}
$test = new testClass();
echo $test->makeString();
Дает вывод:
property 'foo' = 'foo'
property 'fee' = 'fee'
property 'fum' = 'fum'
property 'bar' = 'bar'
Я бы хотел, чтобы это не включало «бар».
Если есть лучший способ выполнить итерацию только по общедоступным свойствам объекта, он будет работать и здесь.