recherche

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

Pourquoi PHP peut-il appeler directement les méthodes non statiques d'une classe via :: ?

Le code est le suivant :

<?php

class Demo
{
    public function testing()
    {
        echo "testing\n";
    }
}

Demo::testing();

Sortie d'exécution php7.0 :

$ php demo.php 
testing

Sortie d'exécution php5.6

$ php demo.php
PHP Strict Standards:  Non-static method Demo::testing() should not be called statically in /home/runner/Code/funny/demo.php on line 11

testing

Il existe aussi ce genre d'opération ?? Quel est le principe ??

滿天的星座滿天的星座2714 Il y a quelques jours520

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

  • 大家讲道理

    大家讲道理2017-06-10 09:49:28

    http://www.laruence.com/2012/...

    Hahaha, merci à tous pour vos réponses. Pour les raisons spécifiques, veuillez lire l'article de frère Bird ci-dessus

    .

    répondre
    0
  • 高洛峰

    高洛峰2017-06-10 09:49:28

    Si une classe inférieure à la version 5.6 appelle directement des méthodes et des attributs sans instanciation, les méthodes et les attributs doivent être des méthodes statiques, c'est-à-dire que si la classe Demo appelle directement la méthode de test, le test doit être public static function testing() { }. Sinon, une erreur sera signalée.
    Je ne sais pas s'il n'est pas nécessaire de déclarer quoi que ce soit au-dessus de 7,0

    répondre
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-10 09:49:28

    Je l'ai vu, mais php-cli peut l'exécuter, mais php-fpm ne le peut toujours pas

    Deprecated: Non-static method Demo::testing() should not be called statically in test.php on line 11
    
    testing

    répondre
    0
  • 某草草

    某草草2017-06-10 09:49:28

    Bien que cela puisse être utilisé, ce n'est pas recommandé.

    répondre
    0
  • 習慣沉默

    習慣沉默2017-06-10 09:49:28

    php7.0 peut être écrit comme ceci, mais php5.6 ne peut certainement pas être écrit comme self::testing

    .

    répondre
    0
  • 大家讲道理

    大家讲道理2017-06-10 09:49:28

    __callStatic()

    répondre
    0
  • 学习ing

    学习ing2017-06-10 09:49:28

    On peut considérer que la mise en œuvre de PHP n'est pas rigoureuse.

    Si $this n'est pas utilisé dans la méthode non statique, vous pouvez utiliser :: pour l'appeler.

    répondre
    0
  • Annulerrépondre