Maison développement back-end tutoriel php Comment former une liaison statique entre static :: et new static () en PHP

Comment former une liaison statique entre static :: et new static () en PHP

Jun 06, 2020 pm 03:20 PM
liaison statique

Comment former une liaison statique entre static :: et new static () en PHP

static::liaison statique tardive avec new static() en PHP

1. self, $this, __CLASS__

class A {}
class B extends A{
parent::(public|protected)(静态方法|静态变量)  ===> parent永远是A
self::(public|protected)(静态方法|静态变量)  ===> self永远是B
$this->(public|protected)(非静态方法|非静态变量)  ===> $this永远是B的是实例化对象
__CLASS__    ===> 永远是B
} 
class C extends B{
parent::(public|protected)(静态方法|静态变量)  ===> parent永远是B
self::(public|protected)(静态方法|静态变量)  ===> self永远是C
$this->(public|protected)(非静态方法|非静态变量)  ===> $this永远是C的是实例化对象
__CLASS__    ===> 永远是C 
}
Copier après la connexion

2 static::

Le mot-clé static peut réaliser les fonctions suivantes :

1 Appel. une méthode statique d'une classe a un effet de liaison statique tardif ;

2 appeler une propriété statique d'une classe a un effet de liaison statique tardive

3 appeler une méthode non statique d'une classe ; n'a pas d'effet de liaison statique tardif ;

4 Remarque : les propriétés non statiques ne peuvent pas être appelées ;

class A {
    private static function foo() {
        echo "A success!\n";
    }
    public function test() {
         $this->foo();
    }
}
 
class B extends A {
}
 
class C extends A {
    private static function foo() {
    echo "C success!\n";
    }
}
 
$b = new B();
$b->test();//A success!
$c = new C();
$c->test();//A success!
Copier après la connexion
class A {
    private static function foo() {
        echo "A success!\n";
    }
    public function test() {
        static::foo();
    }
}
 
class B extends A {
}
 
class C extends A {
    private static function foo() {
    echo "C success!\n";
    }
}
 
$b = new B();
$b->test();//A success!
$c = new C();
$c->test();//A无法调用C里的私有foo方法 
 
 
 
 
//将C的foo改成非private(public|protected)就可以解决
class A {
    private static function foo() {
        echo "A success!\n";
    }
    public function test() {
        static::foo();
    }
}
 
class B extends A {
}
 
class C extends A {
    public static function foo() {
    echo "C success!\n";
    }
}
 
$b = new B();
$b->test();//A success!
$c = new C();
$c->test();//C success!
Copier après la connexion
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(); 
A =>A::foo()的结果
C =>parent::foo()能走到A的foo,里面static::who找C::who
C =>self::foo()能走到B的foo,B继承A,走到A的foo,里面static::who找C::who
 
 
 
 
 
class A {
    protected static function foo() {
        static::who();
    }
 
    protected static function who() {
        echo __CLASS__."\n";
    }
}
 
class B extends A {
    public static function test() {
        A::foo();
        parent::foo();
        self::foo();
    }
 
    protected static function who() {
        echo __CLASS__."\n";
    }
}
class C extends B {
    protected static function who() {
        echo __CLASS__."\n";
    } 
}
 
C::test(); //A C C,解释同上
 
 
 
 
 
class A {
 public static function foo() {
     static::who();
 }
 
 private static function who() {
     echo __CLASS__."\n";
 }
}
 
class B extends A {
 public static function test() {
     A::foo();
     parent::foo();
     // self::foo();  
 }
 
 private static function who() {
     echo __CLASS__."\n";
 }
}
class C extends B {
 private static function who() {
     echo __CLASS__."\n";
 } 
}
 
C::test();
//A =>A::foo()的结果 
//报错 A不可C的私有方法who => parent::foo()能走到A的foo,里面static::who找C::who,C的who只能在C里调用,不能在A里调用
//报错 A不可C的私有方法who => self::foo()能走到B的foo,B继承A,走到A的foo,里面static::who找C::who,C的who只能在C里调用,不能在A里调用
Copier après la connexion

3. Tutoriel recommandé : "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 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Expliquez la liaison statique tardive en PHP (statique: :). Expliquez la liaison statique tardive en PHP (statique: :). Apr 03, 2025 am 12:04 AM

Liaison statique (statique: :) ​​implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Liaison statique tardive PHP : conseils techniques pour briser la pensée de la programmation traditionnelle Liaison statique tardive PHP : conseils techniques pour briser la pensée de la programmation traditionnelle Sep 15, 2023 am 08:46 AM

Liaison statique PHPLate : conseils techniques qui rompent avec la pensée de programmation traditionnelle. Introduction : La manière traditionnelle de penser en programmation consiste généralement à déterminer l'appel des méthodes et des propriétés au moment de la compilation, mais dans certains cas où un appel dynamique est requis, cette approche semble restrictive et déraisonnable. Soyez flexible. PHP fournit une fonctionnalité puissante, « Liaison statique tardive », qui brise la pensée de programmation traditionnelle et facilite la liaison dynamique des méthodes et des propriétés. Cet article présente L à travers des exemples de code spécifiques.

Liaison statique et liaison dynamique en Java Liaison statique et liaison dynamique en Java Aug 19, 2023 pm 02:57 PM

Oui! Lorsque le compilateur connaît l'objet à utiliser pour l'exécution de la méthode, il peut lier statiquement la référence à l'objet. Par exemple, les variables statiques, les variables privées et les variables finales utilisent la liaison statique. Si la reconnaissance d'objets est requise au moment de l'exécution, utilisez la liaison dynamique. Le remplacement de méthode est un cas de liaison dynamique. La surcharge de méthode est un cas de liaison statique.

Créez une structure de code efficace et évolutive via la liaison statique PHP Late Créez une structure de code efficace et évolutive via la liaison statique PHP Late Sep 15, 2023 am 09:00 AM

Créez une structure de code efficace et évolutive grâce à la liaison statique PHPLate Résumé : Dans les grands projets, l'évolutivité et l'efficacité de la structure du code sont très importantes. La liaison statique PHPLate est une fonctionnalité puissante qui nous aide à créer un code facile à maintenir et à étendre. Cet article présentera le concept de liaison statique PHPLate et utilisera des exemples de code spécifiques pour illustrer comment l'utiliser pour créer des structures de code efficaces et évolutives. Introduction : À mesure que les activités de l'entreprise continuent de se développer et de se développer, l'échelle du projet augmente également progressivement. De cette façon

Comment utiliser la liaison statique PHP Late pour améliorer la réutilisabilité du code Comment utiliser la liaison statique PHP Late pour améliorer la réutilisabilité du code Sep 15, 2023 am 11:36 AM

Comment utiliser la liaison statique PHPLate pour améliorer la réutilisabilité du code Introduction : Dans le développement PHP, la réutilisation du code est l'un des facteurs clés pour améliorer l'efficacité et la maintenabilité du développement. PHP fournit une variété de techniques pour parvenir à la réutilisabilité du code, l'une des techniques importantes étant l'utilisation de la liaison statique tardive. Cet article présentera le concept, les avantages et l'application de la liaison statique tardive dans le développement réel. 1. Présentation de la liaison statique tardive La liaison statique tardive fait référence à la détermination dynamique de la méthode appelante de méthodes ou de propriétés statiques en fonction du contexte au moment de l'appel. exister

Déverrouiller les secrets techniques de la liaison statique PHP Late Déverrouiller les secrets techniques de la liaison statique PHP Late Sep 15, 2023 am 09:39 AM

Déverrouiller les secrets techniques de la liaison statique PHPLate nécessite des exemples de code spécifiques. Ces dernières années, PHP, en tant que langage de script côté serveur couramment utilisé, a été bien accueilli par les développeurs. Avec le développement du langage PHP, de plus en plus de techniques et de fonctionnalités de programmation ont été ajoutées à PHP, dont la liaison statique tardive. Une liaison statique tardive signifie que dans une relation d'héritage, les sous-classes peuvent remplacer et appeler des méthodes et propriétés statiques de la classe parent. Cette relation d'héritage peut grandement améliorer la flexibilité et l'évolutivité du code. Alors laisse-moi

La différence entre la liaison statique et la liaison dynamique en Java La différence entre la liaison statique et la liaison dynamique en Java Aug 27, 2023 pm 11:09 PM

La liaison est un mécanisme qui crée un lien entre un appel de méthode et l’implémentation réelle de la méthode. Selon le concept de polymorphisme en Java, les objets peuvent avoir de nombreuses formes différentes. Le formulaire objet peut être résolu au moment de la compilation et de l'exécution. Si le lien entre l'invocation de la méthode et l'implémentation de la méthode est résolu au moment de la compilation, nous l'appelons liaison statique ; s'il est résolu au moment de l'exécution, nous l'appelons liaison dynamique. La liaison dynamique utilise des objets pour résoudre les liaisons, tandis que la liaison statique utilise les types de classes et de champs. Vieux monsieur. Non. Liaison statique de clé Liaison dynamique 1 Résolution de base au moment de la compilation Résolu au moment de l'exécution 2 Mécanisme de résolution La liaison statique utilise le type de classe et de champ La liaison dynamique utilise des objets pour résoudre la liaison 3 Un exemple de surcharge est un exemple de liaison statique Surcharge de méthode L'écriture est un exemple de liaison dynamique 4. Le type de méthode est privé,

PHP Late static Binding : un outil technique pour optimiser l'héritage du code PHP Late static Binding : un outil technique pour optimiser l'héritage du code Sep 15, 2023 am 08:57 AM

Liaison statique PHPLate : un outil technique pour optimiser l'héritage de code Introduction : dans la programmation orientée objet, l'héritage est une technologie courante de réutilisation de code. Grâce à l'héritage, nous pouvons créer une nouvelle classe et hériter des propriétés et méthodes d'une classe existante (appelée classe parent ou classe de base). De cette façon, nous pouvons réduire la duplication de code et améliorer la maintenabilité et l’évolutivité du code. Cependant, en héritage, nous rencontrons souvent un problème : lors de l'appel de la méthode statique de la classe parent dans la sous-classe, parce que la liaison de la méthode statique est terminée au moment de la compilation, la sous-classe appelle la méthode statique.

See all articles