Après avoir lu this question Une idée pour mon problème était de mettre en œuvre la méthode dans les classes d'enfants comme:Comment parcourir les champs privés d'un enfant?
class Child {
private $childField = "Want to see";
public $pubChildField = "Will see";
public function method()
{
$assoc = []; // a associative array
foreach ($this as $field => $value) {
$assoc[$field] = doStuff($value);
}
return $assoc;
}
}
var_dump((new Child())->jsonSerialize());
Mais pour cela, je dois copycat le code dans chaque classe enfant. Pour faciliter la lecture, je veux factoriser en un (déjà existant) parentClass
semblable à:
abstract class parentClass {
public function method()
{
$assoc = []; // a associative array
foreach ($this as $field => $value) {
$assoc[$field] = doStuff($value);
}
return $assoc;
}
}
class Child extends parentClass {
private $childField;
public $pubChildField;
}
var_dump((new Child())->jsonSerialize());
Les deux foreach ($this as $k=>$v)
et get_object_vars()
obtiendrez les champs publics de l'instance. J'ai besoin d'obtenir des champs privés pour la sérialisation.
Edit 1: Typo méthode abstraite - ce que je pensais
Edit 2: Clarifiée l'exemple
Edit 3: reformulé la question car il semblait être fausse idée
'évidemment $ cela fait référence à la méthode abstraite' .... Non !!!! '$ this' fait référence à' l'instance'; '$ this' ne fait jamais référence à une classe –
Pourquoi voulez-vous faire ça, Janseen? –
Voici le manuel PHP avec les bases pour les objets et les classes en PHP: http://php.net/manual/fr/language.oop5.basic.php. Voici un peu plus sur Object Inheritance: http://php.net/manual/en/language.oop5.inheritance.php. Je pense que vous devriez regarder à travers eux. –