Puis-je utiliser l'opérateur Double Colon (::) pour appeler des méthodes non statiques en PHP ?

Barbara Streisand
Libérer: 2024-11-19 17:00:03
original
378 Les gens l'ont consulté

Can I Use the Double Colon (::) Operator to Call Non-Static Methods in PHP?

Invocation de méthodes non statiques à l'aide de doubles deux-points (::)

En PHP, les méthodes non statiques ne peuvent pas être invoquées en utilisant la syntaxe de méthodes statiques (class::method). Ce comportement découle de la nature distincte des méthodes statiques et non statiques.

Les méthodes statiques sont définies au sein d'une classe mais ne nécessitent pas d'appel d'une instance de la classe. Ils sont généralement utilisés pour des fonctions utilitaires ou des constantes. En revanche, les méthodes non statiques nécessitent la création d'une instance de la classe avant de pouvoir y accéder.

La syntaxe double deux-points (::) est réservée à l'appel de méthodes statiques. Lorsque vous tentez d'invoquer une méthode non statique à l'aide de cette syntaxe, PHP génère une erreur. Cette erreur n'est pas un problème de configuration mais plutôt une limitation fondamentale du langage.

Exemple :

class Teste {

    public function fun1() {
        echo 'fun1';
    }
    public static function fun2() {
        echo "static fun2" ;
    }
}

// Attempt to invoke non-static method using double colon syntax
Teste::fun1(); // Raises error

// Invocation of static method using double colon syntax
Teste::fun2(); // Works as expected
Copier après la connexion

Considérations spéciales

Bien que non- les méthodes statiques ne peuvent pas être invoquées à l’aide de la syntaxe double-point, il existe une exception à cette règle. Au sein d'une méthode non statique, vous pouvez invoquer une méthode non statique de la même classe en utilisant la syntaxe suivante :

$this->nonStaticMethod();
Copier après la connexion

Dans ce contexte, le mot clé $this représente l'instance actuelle de la classe, permettant vous d'accéder à des méthodes non statiques à partir de la même instance. De plus, si vous appelez une méthode non statique de manière statique à partir d'une méthode non statique de la même classe, le $this à l'intérieur de la méthode invoquée fera référence à l'instance de la classe appelante.

Exemple :

class A {

    public $name;
    public function test() {
        echo $this->name;
    }
}

class C {

    public function q() {
        $this->name = 'hello';
        A::test();
    }
}

$c = new C();
$c->q(); // Prints 'hello'
Copier après la connexion

Il est important de noter que cette exception à la règle n'est pas toujours souhaitable. Un rapport d'erreurs strict peut entraîner des erreurs si vous tentez d'utiliser cette syntaxe par inadvertance.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal