Maison  >  Article  >  développement back-end  >  Self représente-t-il la classe actuelle ou la classe d'accès en héritage ?

Self représente-t-il la classe actuelle ou la classe d'accès en héritage ?

autoload
autoloadoriginal
2021-03-04 10:18:021878parcourir

Le mot-clé

self est utilisé pour remplacer une classe au sein d'une classe, en remplaçant la classe elle-même où se trouve la méthode actuelle Avec l'implémentation de 继承, si 子类 accède à 父类方法, self. Est-ce que cela remplace la classe actuelle ou la classe d'accès ?

<?php
   class Fu{
       public static $type="Fu";
       public static function getType(){
           echo self::$type." self<br>";
           
       }
   }

   class Zi extends Fu{
    public static $type="Zi";
    
   }
   Fu::gettype();//Fu self
   Zi::gettype();//Fu self
?>

Comme le montre l'exemple ci-dessus, self représente la classe actuelle, c'est-à-dire sa classe parent, et non la sous-classe héritée.

Si vous sélectionnez dynamiquement la classe à laquelle appartient le visiteur lors de l'accès à la méthode, vous devez utiliser le mot-clé static关 au lieu de self pour accéder aux membres de la classe.

<?php
   class Fu{
       public static $type="Fu";
       public static function getType(){
           echo self::$type." self<br>";//类的静态绑定
           echo static::$type." static<br>";//类的静态延迟绑定
       }
   }

   class Zi extends Fu{
    public static $type="Zi";
    
   }

   Fu::gettype();//Fu self Fu self
   Zi::gettype();//Fu self Zi static
?>

Recommandé : ptutoriel hp, tutoriel vidéo 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