Introduction à l'orientation objet pour débutants PHP
Qu'est-ce que l'orientation objet
Un objet est un tout composé d'informations et d'une description de la façon de traiter les informations. C'est une abstraction du monde réel
Programmation orientée objet. , appelé POO
Dans la vraie société, les choses auxquelles nous sommes confrontés sont des objets, comme des ordinateurs, des tasses, des maisons, etc.
Les 3 principales caractéristiques des objets
1. Comportement de l'objet : quelles opérations peuvent être appliquées à l'objet, allumer et éteindre la lumière sont des comportements.
2. La forme de l'objet : comment l'objet répond, sa couleur, sa taille et son apparence lorsque ces méthodes sont appliquées.
3. Représentation des objets : La représentation des objets équivaut à une carte d'identité, distinguant spécifiquement les différences dans un même comportement et un même statut
Contenu orienté objet
1.Classe : Définit les caractéristiques abstraites d'une chose. La définition d'une classe comprend la forme des données et les opérations sur les données
2 Objet : est une instance de la classe
3. variable : Variables définies à l'intérieur de la classe. La valeur de cette variable est invisible pour le monde extérieur, mais est accessible via les fonctions membres. Une fois la classe instanciée en tant qu'objet, la variable peut être appelée un attribut de l'objet
4.Fonction membre : définie à l'intérieur de la classe et peut être utilisée pour accéder aux données de l'objet
5Héritage : l'héritage est un mécanisme permettant aux sous-classes de partager automatiquement la structure des données et. méthodes de la classe parent. Il s'agit d'une relation entre. Lors de la définition et de l'implémentation d'une classe, vous pouvez le faire sur la base d'une classe existante, utiliser le contenu défini par la classe existante comme votre propre contenu et ajouter du nouveau contenu
6 .Classe parent : Une classe est héritée par d'autres classes. Cette classe peut être appelée classe parent, ou classe de base, ou super classe
7.Sous-classe : Une classe qui hérite d'autres classes est appelée une sous-classe, qui peut également être appelée une classe dérivée
8.Polymorphisme : Le polymorphisme fait référence à la même opération ou fonction, les procédures peuvent opérer sur de nombreux types d'objets et obtenir des résultats différents. Différents objets peuvent produire des résultats différents après avoir reçu le même message. Ce phénomène est appelé polymorphisme
9.Surcharge : En termes simples, cela signifie que les fonctions ou méthodes ont le même nom, mais le paramètre. les listes sont différentes, de telles fonctions ou méthodes portant le même nom et des paramètres différents sont appelées fonctions ou méthodes surchargées
10.Abstraction : L'abstraction est Il fait référence à l'abstraction d'objets avec des structures de données cohérentes (propriétés ) et les comportements (opérations) en classes. Une classe est une abstraction qui reflète les propriétés importantes liées à une application tout en ignorant les autres contenus non pertinents. La division de toute classe est subjective, mais doit être liée à l'application spécifique
11.Encapsulation : L'encapsulation fait référence à la liaison des propriétés et du comportement d'un objet qui existe dans le monde réel. et placé dans une unité logique
12.Constructeur; est principalement utilisé pour initialiser l'objet lors de la création de l'objet, c'est-à-dire attribuer des valeurs initiales aux variables membres de l'objet, toujours avec la nouvelle opération utilisée avec dans les instructions qui créent des objets
13.Destructeur : Destructeur (destructeur) Contrairement au constructeur, lorsque l'objet termine son cycle de vie (par exemple, la fonction dans laquelle se trouve l'objet a été appelée), le système exécute automatiquement le destructeur. Les destructeurs sont souvent utilisés pour effectuer un travail de "nettoyage" (par exemple, lors de la création d'un objet, utilisez new pour ouvrir un espace mémoire, qui doit être libéré avec delete dans le destructeur avant de quitter)
Définition de la classe :
1 Une classe est définie à l'aide du mot-clé class suivi du nom de la classe.
2. Les variables et les méthodes peuvent être définies entre une paire d'accolades ({}) après le nom de la classe.
3. Les variables de classe sont déclarées à l'aide de var, et les variables peuvent également être initialisées.
4. La définition de la fonction est similaire à la définition de la fonction PHP, mais la fonction n'est accessible que via la classe et ses objets instanciés
<?php class Site { /* 成员变量 */ var $url; var $title; /* 成员函数 */ function setUrl($par){ $this->url = $par; } function getUrl(){ echo $this->url; } function setTitle($par){ $this->title = $par; } function getTitle(){ echo $this->title; } } //注:变量 $this 代表自身的对象。 ?>
Objets créés en php
Une fois la classe créée, nous pouvons utiliser l'opérateur new pour instancier les objets de cette classe
$php = new Site;
$taobao = nouveau site ;
$google = nouveau site ;
Nous avons créé trois objets dans le code ci-dessus, chacun des trois objets est indépendant
<?php header("Content-type: text/html; charset=utf-8");//设置编码 class Site { /* 成员变量 */ var $url; var $title; /* 成员函数 */ function setUrl($par){ $this->url = $par; } function getUrl(){ echo $this->url . "</br>"; } function setTitle($par){ $this->title = $par; } function getTitle(){ echo $this->title . "</br>"; } } $php = new Site; $taobao = new Site; $google = new Site; // 调用成员函数,设置标题和URL $php->setTitle( "php中文网" ); $taobao->setTitle( "淘宝" ); $google->setTitle( "Google 搜索" ); $php->setUrl( 'm.sbmmt.com' ); $taobao->setUrl( 'www.taobao.com' ); $google->setUrl( 'www.google.com' ); // 调用成员函数,获取标题和URL $php->getTitle(); $taobao->getTitle(); $google->getTitle(); $php->getUrl(); $taobao->getUrl(); $google->getUrl(); ?>
Constructeur
Le constructeur est une méthode spéciale. Il est principalement utilisé pour initialiser l'objet lors de la création de l'objet, c'est-à-dire attribuer des valeurs initiales aux variables membres de l'objet. Il est toujours utilisé avec l'opérateur new dans l'instruction qui crée l'objet. PHP 5 permet aux développeurs de définir une méthode comme constructeur dans une classe. Le format de syntaxe est le suivant :
void __construct ([ Mixed $args [, $... ]] )
Constructeur d'analyseDestructeur (destructeur) Contrairement au constructeur, lorsque l'objet termine son cycle de vie (par exemple, la fonction dans laquelle le l'objet est localisé a été appelé), le système exécute automatiquement le destructeur
PHP 5 a introduit le concept de destructeur, qui est similaire à d'autres langages orientés objet. Son format de syntaxe est le suivant :
void __destruct. ( void )<?php
header("Content-type: text/html; charset=utf-8");//设置编码
class MyDestructableClass {
function __construct() {
print "构造函数</br>";
$this->name = "MyDestructableClass";
}
function __destruct() {
print "销毁 " . $this->name;
}
}
$obj = new MyDestructableClass();
?>
HéritagePHP utilise le mot-clé extends pour hériter d'une classe PHP ne prend pas en charge l'héritage multiple. Le format est le suivant :
classe L'enfant prolonge Parent {
Également appelé
remplacement
d'une méthode. Les méthodes getUrl et getTitle sont réécrites dans l'instance :<?php // 子类扩展站点类别 class Child_Site extends Site { var $category; function setCate($par){ $this->category = $par; } function getCate(){ echo $this->category; } } ?>Access Control
public (Public) : les membres de la classe publique sont accessibles de n'importe où.
protected (protected) : les membres de la classe protégée sont accessibles par eux-mêmes, ainsi que par leurs sous-classes et classes parentes.
privé (privé) : les membres de la classe privée ne sont accessibles que par la classe dans laquelle ils sont définis.
Contrôle d'accès des attributs
Les attributs de classe doivent être définis comme étant publics, protégés et privés. S'il est défini avec var, il est considéré comme public
<?php function getUrl() { echo $this->url . PHP_EOL; return $this->url; } function getTitle(){ echo $this->title . PHP_EOL; return $this->title; } ?>
Contrôle d'accès aux méthodes
Les méthodes d'une classe peuvent être définies comme publiques ou privées ou protégé. Si ces mots-clés ne sont pas définis, la méthode par défaut est public
<?php /** * Define MyClass */ class MyClass { public $public = 'Public'; protected $protected = 'Protected'; private $private = 'Private'; function printHello() { echo $this->public; echo $this->protected; echo $this->private; } } $obj = new MyClass(); echo $obj->public; // 这行能被正常执行 //echo $obj->protected; // 这行会产生一个致命错误 //echo $obj->private; // 这行也会产生一个致命错误 $obj->printHello(); // 输出 Public、Protected 和 Private /** * Define MyClass2 */ class MyClass2 extends MyClass { // 可以对 public 和 protected 进行重定义,但 private 而不能 protected $protected = 'Protected2'; function printHello() { echo $this->public; echo $this->protected; //echo $this->private; } } $obj2 = new MyClass2(); echo $obj2->public; // 这行能被正常执行 //echo $obj2->private; // 未定义 private //echo $obj2->protected; // 这行会产生一个致命错误 $obj2->printHello(); // 输出 Public、Protected2 和 Undefined ?>
Constant
peut être placé dans la classe Une valeur qui reste toujours la même est définie comme une constante. Il n'est pas nécessaire d'utiliser le symbole $ lors de la définition et de l'utilisation de constantes.
La valeur d'une constante doit être une valeur fixe et ne peut pas être une variable, un attribut de classe, le résultat d'une opération mathématique ou un appel de fonction.
Depuis PHP 5.3.0, vous pouvez utiliser une variable pour appeler dynamiquement une classe. Mais la valeur de cette variable ne peut pas être un mot-clé (comme self, parent ou static)
Classe abstraite
N'importe quelle classe si elle l'est inside Si au moins une méthode est déclarée abstraite, alors la classe doit être déclarée abstraite.
Une classe définie comme abstraite ne peut pas être instanciée.
Une méthode définie comme abstraite déclare uniquement sa méthode appelante (paramètres) et ne peut pas définir son implémentation de fonction spécifique.
Lors de l'héritage d'une classe abstraite, la sous-classe doit définir toutes les méthodes abstraites de la classe parent ; de plus, le contrôle d'accès de ces méthodes doit être le même que celui de la classe parent (ou plus détendu). Par exemple, si une méthode abstraite est déclarée comme protégée, alors la méthode implémentée dans la sous-classe doit être déclarée comme protégée ou publique et ne peut pas être définie comme privée. De plus, les méthodes d'appel doivent correspondre, c'est-à-dire que le type et le nombre de paramètres requis doivent être cohérents. Par exemple, si la sous-classe définit un paramètre facultatif, mais qu'il n'est pas inclus dans la déclaration de la méthode abstraite de la classe parent, il n'y a pas de conflit entre les deux déclarations
Interface
À l'aide d'une interface, vous pouvez spécifier quelles méthodes une classe doit implémenter, mais vous n'avez pas besoin de définir le contenu spécifique de ces méthodes.
L'interface est définie via le mot-clé interface, tout comme la définition d'une classe standard, mais toutes les méthodes qui y sont définies sont vides.
Toutes les méthodes définies dans l'interface doivent être publiques. C'est une caractéristique de l'interface.
Pour implémenter une interface, utilisez l'opérateur Implements. La classe doit implémenter toutes les méthodes définies dans l'interface, sinon une erreur fatale sera signalée. Une classe peut implémenter plusieurs interfaces. Utilisez des virgules pour séparer les noms de plusieurs interfaces.