recherche

Maison  >  Questions et réponses  >  le corps du texte

Les propriétés statiques peuvent être appelées dans des méthodes non statiques

Comme mentionné à 15h30 dans cette leçon, les propriétés statiques ne peuvent pas être appelées dans les méthodes non statiques

Mais selon des tests personnels, les méthodes non statiques de cette classe peuvent appeler des propriétés statiques

Utilisez [self des propriétés statiques. : Nom de l'attribut】Juste

God_LikeGod_Like2051 Il y a quelques jours2195

répondre à tous(3)je répondrai

  • God_Like

    God_Like2019-04-15 17:18:21

    Tout d'abord, merci beaucoup pour la réponse du professeur

    1. La classe dans l'exemple de code que vous avez donné ne définit pas la méthode test(), donc l'instanciation s'exécutera avec une erreur

    echo (nouvelle démo) ->test(); // "Erreur "

    Deuxièmement, j'utilise la version php7.2 pour m'entraîner

    Dans le code que vous m'avez donné, j'ai changé (nouvelle démo)->test() to (new Demo) ->test2() Running

    les deux résultats de sortie sont peter

    Est-ce que cela prouve que la [méthode ordinaire] de la

    class peut appeler à la fois la [propriété statique de la classe] et la [statique méthode] de la classe

    répondre
    0
  • 天蓬老师

    天蓬老师2019-04-14 22:23:30

    Tout d'abord, merci pour votre attitude d'étude sérieuse. Vous avez raison, il y a quelques laxismes dans le tutoriel...

    En fait, dans les méthodes ordinaires, appeler directement des propriétés statiques ne signalera pas d'erreur, mais c'est absolument le cas. non autorisé. Appel de méthodes statiques,

    Dans les méthodes ordinaires, il est officiellement déconseillé d'utiliser des membres statiques. L'utilisation d'attributs statiques est autorisée ici. Il s'agit d'un bug historique, qui pourra être corrigé dans les versions futures...

    . Voici le code de test, pour votre référence :

    class Demo
    {
        // 静态属性
        public static $name = 'peter';
        
        // 静态方法
        public static function hello()
        {
           return self::$name;
        }
        
        //  普通方法1
        public function test1()
        {
            return self::$name;
        }
        
        //  普通方法1
        public function test2()
        {
            return self::hello();
        }
    }
    
    echo (new Demo)->test1();    // "peter"
    echo '<hr>';
    echo (new Demo)->test();    // "Error"


    répondre
    1
  • Annulerrépondre