Maison  >  Article  >  développement back-end  >  Comment définir des classes et leurs propriétés de membre en PHP

Comment définir des classes et leurs propriétés de membre en PHP

怪我咯
怪我咯original
2017-06-28 13:32:422771parcourir

Le concept de classe : Une classe est une collection d'objets ayant les mêmes propriétés et opérations. Il fournit une description abstraite unifiée pour tous les objets appartenant à cette classe, qui comprend deux parties principales : les attributs et les opérations. Dans le langage de programmation orienté objet, une classe est une unité de programme indépendante. Elle doit avoir un nom de classe et comprendre deux parties principales : la description de l'attribut et la description de l'opération.

1. Définition de classe :

i. La définition du mot-clé de classe utilise la classe

Définir une classe vide

Class Person{};
2. avec les attributs et les opérations des membres

Class Person{
成员属性........
操    作........
}
3. Définissez une classe qui ne peut pas être héritée, utilisez le mot-clé final

Final class Person{
成员属性........
操    作........
}
4. Remarque : le mot-clé final ne peut pas être utilisé pour modifier le membre. attributs, vous ne pouvez modifier que les classes et les méthodes (les méthodes finales seront introduites plus tard)

5 Voici une classe avec final

Définir une classe finale FinalClass, comprenant une fonction publique

.

final class FinalClass {
public function ffun() {
echo “本类为final类”;
}
}
Définissez une classe ChildFinalClass et héritez de la classe FinalClass

class ChildFinalClass extends FinalClass {
public function fchildfun() {
echo ‘本类继承final类FinalClass ’;
}
}
De cette façon, lorsque la commande ci-dessus est exécutée, le système demandera

Fatal error: Class ChildFinalClass may not inherit from final class (FinalClass)
Prouvé par le mot-clé final La classe définie ne peut pas être héritée par les sous-classes

2 Définition des attributs membres dans la classe

i Les attributs membres sont des attributs variables définis pour la classe, qui sont considérés comme un. classe On dit que tout le monde a une paire d'yeux (normaux, sauf Erlangshen), une bouche, deux oreilles, etc. Certains noms propres fixes utilisés pour décrire ou exprimer certaines choses sont appelés attributs de membre

ii. les mots-clés utilisés dans la déclaration des attributs membres d'une classe sont

iii. Les déclarations d'attributs membres courants commencent par les mots-clés suivants :

public, var, protected, private, puis suivis de composer of. variables. Il existe également certains attributs de membre, notamment un const statique et constant.

Public : indique global et est accessible par les sous-classes à l'intérieur et à l'extérieur de la classe

Var : cet attribut de membre sera pris en compte dans. Version PHP 5 Attributs de type public

protected signifie protégé et n'est accessible que dans cette classe ou sous-classe ou classe parent

private

signifie privé et ne peut être utilisé que dans cette classe

Statique : 1) Attributs statiques,

2) Les attributs membres modifiés avec static peuvent être partagés par tous les objets de la même classe

3) Données statiques Cela existe dans le segment de données en mémoire lorsque la classe est chargée pour la première fois (initialisation du segment statique)

4) Utiliser self:: nom de l'attribut membre dans la classe

                        5) Classe Externe nom de classe : nom de l'attribut membre

Const : 1) Attributs constants dans la classe, vous devez utiliser const

                2) Utiliser self:: nom de l'attribut membre dans. la classe

3) Utilisation du nom de classe :: nom de l'attribut membre

Remarque : les variables de l'attribut peuvent être initialisées, mais l'initialisation doit être constante. La constante signifie ici qu'il s'agit d'un. constante, et non une constante calculée au moment de l'exécution après l'étape de compilation. Par exemple, il ne peut contenir aucun opérateur, ne peut être aucune variable, ne peut pas être une fonction, etc.

iv. Comment appeler les propriétés des membres :

Dans la

méthode membre

de la classe, vous pouvez utiliser $this->property (la propriété est le nom de la propriété) . Pour accéder aux propriétés et aux méthodes d'une classe, mais il ne peut pas être utilisé pour accéder aux propriétés statiques d'une classe ou dans une méthode statique, utilisez plutôt self::$property. La pseudo variable $this peut être utilisée dans les méthodes non statiques d'une classe. Cette pseudo variable est une référence à l'objet instancié qui appelle la méthode. Ensuite, utilisez le code pour expliquer le contenu ci-dessus :

3 Définition des opérations dans une classe
class FinalClass {
//static $a = strTolower();   
//这种写法错误
//const  A = 1+2;              //这种写法错误
//public $name = 123+456;     
//这种写法错误
static $a = '$a';
const  A = 'A';
public $name = '凤姐';
protected $sex = '男+女';
private $age = 23;
}
class ChildFinalClass extends FinalClass{
public function fchildfun(){
echo &#39;ChildFinalClass类中ChildFinalClass::$a->&#39;.ChildFinalClass::$a."<hr>";
Echo &#39;ChildFinalClass类中ChildFinalClass::A->&#39;.ChildFinalClass::A."<hr>";
echo &#39;大家好,我叫&#39;.$this->name."<hr>";
echo &#39;我是:&#39;.$this->sex.&#39;生<hr>&#39;;
echo &#39;我今年:&#39;.$this->age.&#39;<hr>&#39;;   
//由于age是私有的成员属性,所以在这里将不会被调用,将提示没有定义此属性在ChildFinalClass类中。
 
}
}
$obj = new ChildFinalClass();
$obj->fchildfun();

J'aime généralement appeler les opérations en tant que membres Méthodes. , ci-dessous, j'appellerai les opérations comme des méthodes, mais elles sont toutes identiques

ii Définition des méthodes membres : les méthodes membres sont des méthodes de fonction définies pour la classe. Par exemple, prenez cette classe comme exemple, les gens. peut manger, peut exécuter, peut taper du code, ce sont des méthodes membres. C'est-à-dire que vous pouvez effectuer certaines actions exécutables, que nous comprenons comme méthodes membres

iii. Pour accéder aux méthodes membres et aux attributs des membres, vous pouvez vous référer à l'introduction à l'accès aux attributs des membres ci-dessus.

iv. Les méthodes membres et les attributs de membre incluent également public, protected, private, static, final et la portée est la même. Voici quelques exemples pour votre référence et votre compréhension.

v. Les méthodes membres statiques ne peuvent accéder qu'aux propriétés et méthodes membres statiques, et vous pouvez utiliser self::static method() pour accéder aux méthodes statiques à l'intérieur de la classe et utiliser class name::static method(). pour accéder à la classe externe. )

1. Méthodes personnalisées :

2. Les méthodes magiques
class FinalClass {
static $a = &#39;$a&#39;;
const  A = &#39;A&#39;;
public $name = &#39;凤姐&#39;;
protected $sex = &#39;男+女&#39;;
private $age = 23;
 
    //定义一个公共方法
public function publickfun(){
echo &#39;FinalClass类中self::$a->&#39;.self::$a."<hr>";
echo "FinalClass类中self::A->".self::A."<hr>";
echo &#39;大家好,我叫:&#39;.$this->name."<hr>";
echo &#39;我是:&#39;.$this->sex.&#39;生<hr>&#39;;
echo &#39;我今年:&#39;.$this->age.&#39;<hr>&#39;;
}
 
//定义一个受保护的方法
protected function protectedfun(){
echo &#39;FinalClass类中self::$a->&#39;.self::$a."<hr>";
echo "FinalClass类中self::A->".self::A."<hr>";
echo &#39;大家好,我叫:&#39;.$this->name."<hr>";
echo &#39;我是:&#39;.$this->sex.&#39;生<hr>&#39;;
echo &#39;我今年:&#39;.$this->age.&#39;<hr>&#39;;
}
    //定义一个私用方法
private function privatefun(){
echo &#39;FinalClass类中self::$a->&#39;.self::$a."<hr>";
echo "FinalClass类中self::A->".self::A."<hr>";
echo &#39;大家好,我叫:&#39;.$this->name."<hr>";
echo &#39;我是:&#39;.$this->sex.&#39;生<hr>&#39;;
echo &#39;我今年:&#39;.$this->age.&#39;<hr>&#39;;
}
}
class ChildFinalClass extends FinalClass{
public function fchildfun(){
echo &#39;ChildFinalClass类中ChildFinalClass::$a->&#39;.ChildFinalClass::$a."<hr>";
 
Echo &#39;ChildFinalClass类中ChildFinalClass::A->&#39;.ChildFinalClass::A."<hr>";
 
echo &#39;我是:&#39;.$this->sex.&#39;生<hr>&#39;;
 
echo &#39;我今年:&#39;.$this->age.&#39;<hr>&#39;;   
//由于age是私有的成员属性,可以理解为我不想让别人知道我的年龄,所以在这里将不会被调用,将提示没有定义此属性在ChildFinalClass类中。
 
$this->publickfun();
 
$this->protectedfun();
 
$this->privatefun();            
//由于privatefun是私有的成员方法,所以在这里将不会被调用。
}
}
$obj = new ChildFinalClass();
$obj->fchildfun();

i. les méthodes magiques doivent l'être

ii. À partir de PHP 5 et versions ultérieures, les classes en PHP peuvent utiliser des méthodes magiques. Il stipule que les méthodes commençant par deux traits de soulignement () sont réservées comme méthodes magiques, il est donc recommandé que les noms de fonctions de chacun ne commencent pas par eux, à moins que ce ne soit pour surcharger les méthodes magiques existantes. Ensuite, certaines méthodes magiques sont répertoriées si vous le souhaitez. élaborer Pour comprendre, vous pouvez interroger et comprendre un certain élément, je ne le présenterai donc pas en détail ici.

1. construct() Méthode de construction

destruct()

Méthode de destruction

2 , clone()

Si vous souhaitez copier un objet, vous devez utiliser la méthode clone

3. La méthode toString()

est automatiquement appelée lors de la conversion d'un objet. dans une chaîne. Par exemple, lorsque vous utilisez echo pour imprimer des objets,

4. sleep(), lors de la sérialisation, utilisez

wakeup, lors de la désérialisation, appelez

5. set_state()

Lorsque var_export() est appelé, cette méthode statique sera appelée (valable depuis PHP 5.1.0)

invoquer (valable en PHP 5.3.0 ou supérieur)

6. 🎜>

Lorsque vous essayez d'invoquer un objet en tant que fonction, la méthode d'invocation est automatiquement appelée.

7. callStatic (valable pour PHP 5.3.0 et supérieur) consiste à gérer les appels de méthode statiques

8. get() Cette méthode sera déclenchée lorsqu'une propriété non définie est appelée. transmis est le nom de la propriété à laquelle vous accédez.

set() Lors de l'attribution d'une valeur à une propriété non définie, cette méthode sera déclenchée. Les paramètres passés sont le nom de la propriété et la valeur à définir. La non-déclaration inclut ici les attributs dont le contrôle d'accès est protégé et privé (c'est-à-dire les attributs qui n'ont pas l'autorisation d'accéder) lorsqu'ils sont appelés à l'aide d'un objet.

9. isset() Cette méthode est appelée lorsque la fonction isset() est appelée sur un attribut non défini.

unset() Lorsque la fonction unset() est appelée sur un attribut non défini. Cette méthode est appelé quand

10. call($method, $arg_array)

Lorsqu'une méthode non définie est appelée, cette méthode est appelée

Les méthodes non définies incluent ici Une méthode sans autorisation d'accès ; si la méthode n'existe pas, accédez à la classe parent pour rechercher la méthode. Si elle n'existe pas dans la classe parent, appelez la méthode call() de cette classe. dans cette classe, recherchez-la. La méthode call() dans la classe parent.

11. autoload() Chargement automatique

Méthode magique


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