Expérimentez les classes et les objets
1, Introduction orientée objet PHP
En programmation orientée objet (anglais : Programmation orientée objet, abréviation : OOP), un objet est un ensemble d'informations et d'informations. l'ensemble de la description en cours de traitement est une abstraction du monde réel.
Dans le monde réel, les choses auxquelles nous sommes confrontés sont des objets, comme des ordinateurs, des téléviseurs, des vélos, etc.
Les trois principales caractéristiques des objets :
Comportement de l'objet : Quelles opérations peuvent être appliquées à l'objet, allumer et éteindre la lumière sont des comportements. La forme de l'objet : comment l'objet réagit lorsque ces méthodes sont appliquées, couleur, taille, apparence. 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.
Par exemple, Animal est une classe abstraite. Nous pouvons spécifier un chien et un mouton, et les chiens et les moutons sont des objets concrets. Ils ont des attributs de couleur, peuvent être écrits, peuvent courir et d'autres états comportementaux.
Contenu orienté objet
Classe − définit les caractéristiques abstraites d'une chose. La définition d'une classe inclut la forme des données et les opérations sur les données.
Object - est une instance d'une classe.
Variables membres - 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.
Fonctions membres - sont définies à l'intérieur de la classe et peuvent être utilisées pour accéder aux données de l'objet.
Héritage - L'héritage est un mécanisme permettant aux sous-classes de partager automatiquement les structures de données et les méthodes des classes parentes. Lors de la définition et de l'implémentation d'une classe, vous pouvez le faire sur la base d'une classe existante, prendre le contenu défini par la classe existante comme votre propre contenu et ajouter du nouveau contenu.
Classe parent - Une classe est héritée par d'autres classes. Cette classe peut être appelée une classe parent, une classe de base ou une super classe.
Sous-classe - Une classe qui hérite d'autres classes est appelée une sous-classe, ou elle peut également être appelée une classe dérivée.
Polymorphisme - Le polymorphisme signifie que la même fonction ou méthode peut être appliquée à plusieurs types d'objets et obtenir des résultats différents. Différents objets peuvent produire des résultats différents lorsqu'ils reçoivent le même message. Ce phénomène est appelé polymorphisme.
Surcharge - En termes simples, il s'agit d'une situation dans laquelle des fonctions ou des méthodes ont le même nom mais des listes de paramètres différentes. De telles fonctions ou méthodes avec le même nom et des paramètres différents sont appelées fonctions ou méthodes surchargées.
Abstraction - L'abstraction fait référence à l'abstraction d'objets avec des structures de données (attributs) et des comportements (opérations) cohérents 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.
Encapsulation - L'encapsulation fait référence à la liaison des attributs et des comportements d'un objet existant dans le monde réel et à leur placement dans une unité logique.
Constructeur - 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 pour créer l'objet.
Destructor − Destructor (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).
2. Définir une classe d'élève
Deux concepts sont proposés dans la pensée orientée objet, classe et objet. Une classe est une description abstraite d'une classe de choses, ce qui signifie que la classe doit avoir les caractéristiques. de cet objet. Nous avons l'habitude de décrire les caractéristiques d'une personne ? Par exemple, si l'on veut comprendre un élève, il faut d'abord connaître au moins son nom, son sexe, son âge, son apparence, etc... Et ces attributs sont appelé membres dans la classe Attributs.Après avoir compris les attributs de base d'une personne, nous voulons mieux comprendre ce que la personne fera.Cela s'appelle une méthode membre dans la classe. les détails spécifiques de la personne. Fonction. Prenons l'exemple de l'étudiant
Créez d'abord une classe d'étudiant, définie comme le fichier Student.class.php (ici, afin de distinguer les fichiers de script ordinaires, le nom de la classe est généralement modifié sous la forme de ".class.php", et le nom de la classe doit être le même que Gardez le nom de fichier cohérent)
Remarque : C'est précisément parce que le nom de fichier de la classe doit être cohérent avec le nom de la classe, donc un Le fichier php ne peut contenir qu’un seul code de définition de classe.
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/3 0003 * Time: 上午 9:42 */ //定义student类 class Student{ //成员属性 //成员方法 }Habituellement, la convention de dénomination PHP pour les classes est la suivante :
(1). Utilisez les noms anglais et les fichiers de classe sont écrits en casse chameau. Séparez les mots par des lettres majuscules, utilisez des lettres minuscules pour toutes les autres lettres, utilisez une lettre majuscule pour la première lettre d'un nom et n'utilisez pas de soulignement.
(2). Utilisez des mots complets et évitez les abréviations (sauf si l'abréviation est plus largement utilisée, comme URL, HTML)
(3). Avant de nommer une classe, sachez d'abord de quoi il s'agit. Si vous ne vous souvenez toujours pas de ce qu'est la classe en fonction des indices fournis par le nom de la classe, alors votre conception n'est pas assez bonne.
(4). Les noms de classe mixtes composés de plus de trois mots peuvent facilement provoquer une confusion entre diverses entités du système. Veuillez repenser le nom de la classe.
Par exemple :
class UserAccount{
...
}
class PaintingOrder{
...
}
3, définition des attributs et des méthodes des membres<?php
class Student{
//成员属性
public $studentId; //学生学号
public $studentName;//学生姓名
public $studentAge; //学生年龄
//成员方法
public function goSchool(){
echo "{$this->studentName}去上学<br>";
}
public function study($time){
echo "学习到{$time}";
}
}
4. Création d'objetsCréez un nouveau fichier php pour instancier l'objet étudiant
object.php:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/3 0003 * Time: 上午 10:25 */ header("content-type:text/html;charset=utf8"); require './Student.class.php'; $student=new Student(); echo "<pre>"; var_dump($student);//查看对象的类型以及具体数据 echo "</pre>";
Le résultat de l'impression est le suivant :
5, paramètre d'attribut de membre
Nous pouvons voir que les attributs imprimés ci-dessus sont tous nuls, car aucun attribut n'est défini pour cela. Ensuite, nous définissons les attributs
Le code est le suivant :
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/3 0003 * Time: 上午 10:25 */ header("content-type:text/html;charset=utf8"); require './Student.class.php'; $student=new Student(); $student->studentName='小张'; $student->studentId=1; $student->studentAge=25; echo "<pre>"; var_dump($student); echo "</pre>";
Imprimer. Les résultats sont les suivants :
6, appel de méthode membre
Ajoutez le code suivant dans l'objet :
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/3 0003 * Time: 上午 10:25 */ header("content-type:text/html;charset=utf8"); require './Student.class.php'; $student=new Student(); $student->studentName='小张'; $student->studentId=1; $student->studentAge=25; $student->goSchool(); $student->study("22:00");
Impression des résultats :