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 ??
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
.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
Je l'ai vu, mais php-cli peut l'exécuter, mais php-fpm ne le peut toujours pas
Bien que cela puisse être utilisé, ce n'est pas recommandé.
php7.0 peut être écrit comme ceci, mais php5.6 ne peut certainement pas être écrit comme self::testing
.__callStatic()
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.