|
Table des matières
VisibilitéLa visibilité d’une propriété ou d’une méthode peut être définie en préfixant la déclaration avec un mot-clé : “public”, “protected” ou “private”. Les éléments déclarés publics (”public”) peuvent être utilisés par n’importe quelle partie du programme. L’accès aux éléments protégés (”protected”) est limité aux classes et parents hérités (et à la classe qui a défini l’élément). L’accès aux éléments privés (”private”) est uniquement réservé à la classe qui les a définis. Visibilité des membresLes classes membres doivent être définies comme publiques, protégées ou privées.
<?php /** * Définition de MyClass */ class MyClass { public $public = 'Public'; protected $protected = 'Protected'; private $private = 'Private'; function printHello() { echo $this->private; echo $this->protected; echo $this->private; } } $obj = new MyClass(); echo $obj->public; // Fonctionne echo $obj->protected; // Erreur fatale echo $obj->private; // Erreur fatale $obj->printHello(); // Affiche Public, Protected et Private /** * Définition de MyClass2 */ class MyClass2 extends MyClass { // On peut redéclarer les éléments publics ou protégés, mais pas ceux privés protected $protected = 'Protected2'; function printHello() { echo $this->public; echo $this->protected; echo $this->private; } } $obj2 = new MyClass2(); echo $obj->public; // Fonctionne echo $obj2->private; // Indéfini echo $obj2->protected; // Erreur fatale $obj2->printHello(); // Affiche Public, Protected2 et non Private ?>
Visibilité des méthodesLes méthodes des classes doivent être définies en tant que publiques, privées ou protégées. Les méthodes sans déclaration seront automatiquement définies comme étant publiques.
<?php /** * Définition de MyClass */ class MyClass { // Les contructeurs doivent être publics public function __construct() { } // Déclaration d'une méthode publique public function MyPublic() { } // Déclaration d'une méthode protégée protected function MyProtected() { } // Déclaration d'une méthode privée private function MyPrivate() { } // Celle-ci sera publique function Foo() { $this->MyPublic(); $this->MyProtected(); $this->MyPrivate(); } } $myclass = new MyClass; $myclass->MyPublic(); // Fonctionne $myclass->MyProtected(); // Erreur fatale $myclass->MyPrivate(); // Erreur fatale $myclass->Foo(); // Public, Protected et Private fonctionnent /** * Définition de MyClass2 */ class MyClass2 extends MyClass { // Celle-ci sera publique function Foo2() { $this->MyPublic(); $this->MyProtected(); $this->MyPrivate(); // Erreur fatale } } $myclass2 = new MyClass2; $myclass2->MyPublic(); // Fonctionne $myclass2->Foo2(); // Public et Protected fonctionnent, non pas Private ?> Travail collaboratifContribuez, en ajjoutant des elements a cette page de manuel : Merci de votre aide |