Maison >développement back-end >tutoriel php >Exemples de code d'appels non renvoyés et d'appels renvoyés en PHP

Exemples de code d'appels non renvoyés et d'appels renvoyés en PHP

不言
不言original
2018-08-10 10:37:262552parcourir

Cet article vous apporte des exemples de code sur les appels non transférés et les transferts d'appels en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

Accès statique aux membres d'une classe :

1. Appels non transférés

1) Effacer le nom de la classe (A::funcA())

2. Appel direct

    1)self::
    2)parent::
    3)static::
    4)forward_static_call()
    5)get_called_class()
Remarque :

"Liaison tardive" signifie que static:: n'est plus analysé dans la classe dans laquelle la méthode actuelle est définie, mais in Calculé pendant l'exécution réelle. Elle peut également être appelée « liaison statique » car elle peut être utilisée pour (mais sans s’y limiter) des appels à des méthodes statiques.

Résultat d'exécution :
<?php
class A {
    public static function foo() {
        static::who();
    }

    public static function who() {
        echo __CLASS__."\n";
    }
}

class B extends A {
    public static function test() {
        A::foo();
        parent::foo();
        self::foo();
    }

    public static function who() {
        echo __CLASS__."\n";
    }
}
class C extends B {
    public static function who() {
        echo __CLASS__."\n";
    }
}

C::test();
?>
Remarque :
A
C
C
Dans un environnement non statique, la classe appelée est la classe à laquelle appartient l'instance d'objet. Puisque $this-> tentera d'appeler la méthode privée dans la même portée, static:: peut donner des résultats différents. Une autre différence est que static:: ne peut être utilisé qu'avec des propriétés statiques.
La propriété héritée vous appartient

Chaîne d'héritage. Accédez d'abord à la classe actuelle, accédez en fonction des caractéristiques du mot réservé, puis accédez en fonction de la chaîne d'héritage.

$ce membre d'accès (contexte d'appel)

self :: membre d'accès (contexte d'analyse)

<?php
 
class A{
    protected $value = "A value";
 
    public function printValue(){
        echo $this->value;
    }
}
class B extends A{
   protected $value = "B value";
}
$app = new B();
$app->printValue();
运行结果:B value
<?php
 
class A{
    //只有将属性定义为静态的才能使用self::进行调用
    static protected $value = "A static value ";
    public function printValue(){
        echo self::$value;
    }
}
 
class B extends A{
    static protected $value = "B static value";
}
 
$app = new B();
$app->printValue();
运行结果:A static value
<?php
class A{
    static protected $value = "A static value ";
}
 
class B extends A{
    public function printValue(){
        echo self::$value;
    }
}
$app = new B();
$app->printValue();
运行结果:A static value
Recommandations associées :

Comment implémenter la fonction de saut de page en PHP ? (Exemple de balise de fonction)

Comment implémenter le menu déroulant PHP et les colonnes multi-niveaux ? (Test de code réel)

Le code qui combine php et html pour télécharger des fichiers image sur le serveur

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