Estoy tratando de crear un objeto PHP (5) que pueda recorrer sus propiedades, creando una consulta SQL basada solo en sus propiedades públicas, no en las privadas.Detectar si una propiedad de objeto es privada en PHP
Como este método de objetos primarios debe ser utilizado por objetos secundarios, no puedo simplemente omitir las propiedades privadas por nombre (no sabré qué son en los objetos secundarios).
¿Existe una manera simple de detectar desde el interior de un objeto cuáles de sus propiedades son privadas?
Aquí está un ejemplo simplificado de lo que tengo hasta ahora, pero esta salida incluye el valor de $ 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();
proporciona la salida:
property 'foo' = 'foo'
property 'fee' = 'fee'
property 'fum' = 'fum'
property 'bar' = 'bar'
me gustaría que para no incluir 'bar'.
Si hay una forma mejor de iterar solo a través de las propiedades públicas de un objeto, eso funcionaría también aquí.
Gracias, creo que powtac te ganó en unos 30 segundos, pero sí, eso funciona exactamente como es necesario. – Hippyjim
Sí, creo que se pasó demasiado tiempo haciendo una bonita respuesta con enlaces limpios y ordenados a los documentos. Lección aprendida, respuestas rápidas y sucias de aquí en adelante! :-) – salathe