Maison >développement back-end >tutoriel php >Quelles sont les fonctionnalités de php oop ? Introduction aux trois caractéristiques majeures de la pensée php oop
Les trois caractéristiques majeures de la pensée php opp sont : l'encapsulation, l'héritage et le polymorphisme. Ici, je vais parler en détail de ma compréhension de la pensée php opp. Ensuite, examinons-la en détail. pensé et php opp pensé.
Encapsulation
L'encapsulation consiste à combiner les propriétés et le comportement d'un objet dans une unité indépendante.
L'encapsulation d'une classe nécessite deux étapes. La première étape consiste à privatiser une classe. La deuxième étape consiste à utiliser set et à lire et à attribuer des valeurs.
L'avantage est que cela masque les détails d'implémentation de la classe. peut facilement ajouter de la logique, limitant les opérations déraisonnables sur les attributs, facilitant la modification et améliorant la maintenabilité du code.
__get et __set
De manière générale, il est plus conforme à une logique réaliste de rendre les cours privés.
Deux fonctions prédéfinies sont utilisées pour obtenir et stocker des valeurs.
__get Obtient la valeur, généralement la valeur du domaine
__set Définit la valeur, généralement la valeur du domaine
__call Lors de l'appel d'une méthode qui n'existe pas dans un objet, une erreur d'appel se produira. () est la méthode pour gérer cette situation.
Propriétés et méthodes statiques
mot-clé statique pour déclarer des méthodes statiques
la variable statique statique génère une variable statique à l'intérieur de la classe, qui peut être partagée par toutes les classes. En d'autres termes, les membres statiques sont mis. dans le "Segment statique d'initialisation", qui est inséré lorsque la classe est chargée pour la première fois, afin qu'elle puisse être partagée par tous les objets de la mémoire tas
Méthodes d'utilisation : self::$static propriétés, self : :méthodes statiques
static function p(){ echo self::$country; echo self::PI;//访问常量 //echo $this->name;在静态方法中只能操作静态属性 //self::p(); }
Appels externes : propriétés Class::$static, méthodes Class::static
mot-clé const : utilisé pour générer des constantes. et ne peut pas être modifié. La constante de convention est en majuscule
const CONSTANT = 'constant value'; génère une constante
echo self::CONSTANT;//Internal className
echo ClassName::CONSTANT;//External accès aux classes
Héritage
Les objets de classe B ont tous les attributs et comportements de la classe A, qui est appelé l'héritage de B de la classe A.
Si une classe hérite des propriétés et des services de plusieurs classes, c'est ce qu'on appelle l'héritage multiple. Habituellement, nous appelons la classe héritière une sous-classe et la classe héritée est une classe parent. En PHP, il n'y a qu'un seul héritage, mais une classe parent. peut Hérité par plusieurs classes, mais une sous-classe ne peut avoir qu'une seule classe parent, mais l'héritage associé est autorisé et la définition de la classe peut être réduite par héritage.
extende déclare une relation d'héritage
Format de syntaxe : la classe B étend A Cet exemple indique que B hérite de A
L'accès externe de la classe est valide pour les sous-classes
Attributs et méthodes des sous-classes et des classes parentes
Le la sous-classe hérite de tout le contenu de la classe parent, mais la partie privée de la classe parent n'est pas directement accessible
Les attributs et méthodes nouvellement ajoutés dans la sous-classe sont des extensions de la classe parent
Ce qui est défini dans la sous-classe est le même que la classe parent L'attribut du même nom est un remplacement de l'attribut de la classe parent, et la méthode du même nom est également un remplacement de la méthode de la classe parent
Méthode remplacée
Dans le sous-classe, utilisez parent pour accéder à l'attribut remplacé dans la classe et les méthodes parent
parent::__construce();
parent::$name;
parent::fun();
écraser les attributs d'origine de la classe parent
objet clone Format de syntaxe $c=clone $p; $c objet $p sorties echo $c->name;
Comparaison d'objets
=== deux opérateurs de comparaison.
== compare le contenu de deux objets.
=== est le handle de l'objet de comparaison, c'est-à-dire l'adresse de référence.
L'opérateur instanceof est utilisé pour détecter si l'objet appartient à une certaine classe. Le type renvoie true s'il n'appartient pas
__clone() Si vous souhaitez modifier le contenu de l'objet d'origine après. le clonage, vous devez utiliser __clone() dans
function __clone(){ $this->name="我是一个克隆人"; }
final signifie qu'une classe est la version finale, ce qui signifie qu'elle ne peut pas être appelée par des sous-classes
Polymorphisme
Le polymorphisme signifie qu'une fois que les attributs ou les comportements définis dans la classe parent sont hérités par la sous-classe, ils peuvent avoir différents types de données ou afficher des comportements différents. Cela permet à la même propriété ou comportement d'avoir une sémantique différente dans la classe parent et ses différentes sous-classes.
C'est-à-dire que les résultats de l'exécution de la même méthode dans la sous-classe et la classe parent sont différents.
class A { function info(){ echo “A INFO”; } } class B extends A { function info(){ echo “B INFO”; } } class C extends A { function info(){ echo “C INFO”; } } function printinfo($obj){ function printinfo(A $obj){ if($obj instanceof A) $obj->info(); $obj->info(); } } $a=new A(); $b=new B(); $c=new C(); printinfo($a); //输出A INFO printinfo($b); //输出B INFO printinfo($c); //输出C INFO
Méthodes abstraites et classes abstraites
Les méthodes abstraites sont utilisées comme modèles pour les sous-classes.
abstract class Person{ public $name; abstract function getInfo(); }
Les classes abstraites ne peuvent pas être utilisées. Dans une classe abstraite, il doit y avoir une méthode abstraite. Mais les fonctions dynamiques peuvent être définies dans des classes abstraites.
Interface
Lorsqu'une classe hérite d'une interface, elle doit remplacer toutes les méthodes de l'interface. Les interfaces ne peuvent déclarer que des constantes. Les méthodes d'interface doivent être définies comme partagées, sinon elles ne peuvent pas être héritées de plusieurs interfacesSyntaxe :
interface PCI{ const TYPE="PCI"; //public $name; error function start(); function stop(); } 接口中的方法可以声明为static interface A{ function a();} interface B{ function b();} interface C extends A{ function c();} class D implements B,C{ function a(){} function b(){} function c(){} }Recommandations associées :
Introduction aux mécanismes et modèles PHP OPP (classes abstraites, interfaces et programmation contractuelle)_exemples 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!