Der Inhalt dieses Artikels stellt den Unterschied zwischen statischen PHP-Methodenaufrufen und instanziierten Klassenaufrufen vor. Jetzt können Freunde in Not darauf verweisen.
1 🎜>
Da es nur eine Kopie der statischen Methode im Speicher gibt, wird sie unabhängig davon, wie oft Sie sie aufrufen, gemeinsam genutzt, und es gibt kein Objektkonzept, sodass Sie $this nicht in der statischen Methode verwenden können Methode. Wenn Sie sie aufrufen müssen, können Sie nur Ihre eigene Klasse instanziieren Aber jede Instanziierung ist ein Objekt und es gibt mehrere im Speicher
<?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关键字时,可以!但不支持这种写法) 对象》访问》静态方法(类的方法)->可以 对象》访问》普通方法(对象的方法)->可以 相关推荐:
Das obige ist der detaillierte Inhalt vonÜber den Unterschied zwischen Aufrufen statischer PHP-Methoden und instanziierten Klassenaufrufen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!