Le contenu de cet article présente la différence entre les appels de méthode statique PHP et les appels de classe instanciés. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer
1. 🎜>
Comme il n'y a qu'une seule copie de la méthode statique en mémoire, peu importe le nombre de fois que vous l'appelez, elle est partagée et il n'y a pas de concept d'objet, vous ne pouvez donc pas utiliser $this call dans la méthode statique Si vous devez l'appeler, vous ne pouvez instancier que votre propre classe Mais l'instanciation est différente. Chaque instanciation est un objet, et il y en a plusieurs dans la mémoire.
<?phpError_reporting (E_ALL|E_STRICT);class A{ public function bar(){ echo 'bar'.PHP_EOL; } public static function foo(){ echo 'foo'.PHP_EOL; } } A::bar();//会报错 A::foo();//正确 $obj = new A(); $obj -> foo();//正确
/* bar()是一个非静态方法,应该由对象来调用,但用静态来调用此方法也可以执行,而严格状态下,此方法会执行,同时报错, Strict Standards: Non-static method Human::easyeat() should not be called statically in........ 但是实例化的类是可以调用静态方法的。 */
<?phpclass A{ public $name = 'zongshuai'; public function bar(){ echo 'bar'.PHP_EOL; } public static function foo(){ echo self::$name.PHP_EOL;//报错 } } A::foo();/* 静态方法不能调用非静态属性 。不能使用self::调用非静态属性。*/
总结: 类》访问->静态方法(类的方法)->可以 类》访问->普通方法(对象的方法)->不可以(虽然方法里不用$this关键字时,可以!但不支持这种写法) 对象》访问》静态方法(类的方法)->可以 对象》访问》普通方法(对象的方法)->可以 相关推荐:
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!