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

不言
Libérer: 2023-04-03 17:54:01
original
2524 Les gens l'ont consulté

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()
Copier après la connexion
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();
?>
Copier après la connexion
Remarque :
A
C
C
Copier après la connexion
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();
Copier après la connexion
运行结果:B value
Copier après la connexion
<?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();
Copier après la connexion
运行结果:A static value
Copier après la connexion
Copier après la connexion
<?php
class A{
    static protected $value = "A static value ";
}
 
class B extends A{
    public function printValue(){
        echo self::$value;
    }
}
$app = new B();
$app->printValue();
Copier après la connexion
运行结果:A static value
Copier après la connexion
Copier après la connexion
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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal