Maison  >  Article  >  développement back-end  >  À propos de l'encapsulation et de l'héritage des classes PHP

À propos de l'encapsulation et de l'héritage des classes PHP

墨辰丷
墨辰丷original
2018-06-07 10:39:101180parcourir

Cet article présente principalement l'encapsulation et l'héritage des classes PHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Encapsulation

Encapsulez les méthodes membres et les attributs des membres dans des classes, masquez les détails de l'implémentation des attributs et des méthodes et limitez l'accès aux membres de la classe via public, protégé, privé, etc. Les autorisations et les données sont protégées en interne et ne peuvent être utilisées que par les méthodes des membres autorisés. Les membres sont encapsulés autant que possible.

public : Une méthode ou une propriété est accessible dans n'importe quelle portée, et l'est par défaut. Si aucun modificateur d'accès n'est spécifié pour une propriété ou une méthode, elle sera publique.
protected : Cette classe et ces sous-classes sont accessibles, mais les objets externes ne peuvent pas être appelés.
private : n'est accessible que dans cette classe et ne peut pas être appelé par des sous-classes ou des objets externes. Les méthodes ou attributs marqués comme privés peuvent être redéfinis dans les classes héritées, et chaque classe ne peut voir que ses propres méthodes privées définies.

Ces trois modificateurs doivent être triés du plus grand au plus petit en termes de portée : public→protected→private La raison pour laquelle on dit qu'ils sont dans la portée est que la classe encapsule certaines propriétés et méthodes, cette encapsulation. détermine la "visibilité" des données, de sorte que nous ne pouvons pas modifier à volonté les propriétés et méthodes définies en dehors de la classe mais pouvons seulement les appeler. C'est l'avantage de l'encapsulation, et cela améliore également la sécurité.
Nous donnons un exemple de code :

 class myClass{ 
  public $public="Public";    //public属性
  protected $protected="Protected"; //protected属性
  private $private="Private";   //private 属性
  function say_Hello() {    //public属性 
  //只是举例说明,自行添加内容
  } 
 
 $obj=new myClass(); 
 echo $obj->public; 
 //echo $obj->protected; 
 //echo $obj->private;

En exécutant l'exemple ci-dessus, nous obtenons un "Public", mais lorsque vous mettez //echo $obj->private; Lorsque le commentaire est supprimé, vous obtiendrez l'erreur suivante :

Erreur fatale : Impossible d'accéder à la propriété protégée myClass::$protected dans E:apachehtdocsexamplefile.php à la ligne 13.

Vous pouvez voir que nous ne pouvons pas accéder à volonté aux définitions d'attributs d'une classe. Nous ne savons pas "à l'extérieur" quels sont les membres de cette classe, car ces membres peuvent ne pas être disponibles pour les autres classes. Bien entendu, si l'on doit accéder ou modifier des attributs définis comme "privés", on peut également utiliser les méthodes système fournies par PHP : _get() et _set().

Héritage

Vous pouvez faire en sorte qu'une classe hérite et avoir les propriétés et méthodes membres d'une autre classe existante. La classe héritée est appelée classe parent ou classe de base. La classe est une sous-classe. La relation d'héritage est implémentée via le mot-clé extends. D'une manière générale, pour avoir un héritage, il faut avoir une « racine ». Pour cette « racine », vous imaginez peut-être que si vous donnez naissance à un fils ou à une fille dans le futur, ils obtiendront des « choses (propriétés et méthodes) ». de vous, de sorte que vos « Descendants » soient ceux qui possèdent certaines de vos caractéristiques (la source).

Générer la classe "racine" (classe parent ou classe de base) Syntaxe : classe père{
}

Générer "descendant" (sous-classe) Syntaxe : la classe fils étend le père{
}

PHP étend le code d'exemple d'héritage de classe :

class father{ 
 protected $name; 
 function __construct($name){  //构造函数 
  $this->name=$name; 
 } 
 
 function work(){ 
  echo "{$this->name}我在工作;
 } 
 function __destruct(){}  //析构函数
} 
 
class son extends father{  //继承父类
 function play(){ 
  echo "{$this->name}我在玩游戏;
 }  
} 
 
 $my_father=new father(“爸爸”);  //创建父类对象
 $my_father->work(); 

 $my_son=new son(“儿子”); 
 $my_son->work(); 
 $my_son->play();

Analyse : Dans la classe parent père, nous définissons les attributs et méthodes généraux, puis définissez des sous-classes. Vous constaterez peut-être qu'il n'y a pas de constructeurs et de destructeurs dans la sous-classe, car la sous-classe hérite de toutes les méthodes de la classe parent, vous pouvez donc appeler $my_son->work(); C'est l'héritage de la classe PHP. Notez également : PHP ne peut pas avoir d'héritage à plusieurs niveaux, tel que : la classe A étend B étend C. Un tel héritage n'est pas valide en PHP. Il n'y a qu'un seul héritage en PHP, pas d'héritage multiple. D'autres méthodes sont nécessaires pour "implémenter" l'héritage multiple. déguisé.

Résumé : Ce qui précède représente l’intégralité du contenu de cet article, j’espère qu’il sera utile à l’étude de chacun.

Recommandations associées :

Deux méthodes de génération aléatoire de nombres en PHP

Analyse d'exemples de PHP obtenant l'horodatage zéro heure du jour

Analyse de cas d'exportation de données PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn