Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist der Unterschied zwischen statischen Methoden und gewöhnlichen Methoden in PHP?

Was ist der Unterschied zwischen statischen Methoden und gewöhnlichen Methoden in PHP?

王林
王林Original
2020-08-06 15:32:323302Durchsuche

Der Unterschied zwischen statischen Methoden und gewöhnlichen Methoden in PHP besteht darin: Gewöhnliche Methoden erfordern den Aufruf von Objekten und müssen $this binden, das heißt, gewöhnliche Methoden müssen Objekte haben und dürfen dann nicht dazu führen, dass die Objekte zu ihnen gehören Objekt, damit sie es nicht tun. Sie müssen $this binden, was bedeutet, dass Sie es ohne Objekt aufrufen können.

Was ist der Unterschied zwischen statischen Methoden und gewöhnlichen Methoden in PHP?

Normale Methoden werden in der Klasse gespeichert und haben nur eine Kopie; statische Methoden werden ebenfalls in der Klasse gespeichert und haben nur eine Kopie.

(Empfohlenes Tutorial: php-Grafik-Tutorial)

Der Unterschied besteht darin, dass gewöhnliche Methoden Objekte zum Aufrufen benötigen und $this gebunden werden muss, das heißt, gewöhnliche Methoden müssen Objekte haben und diese dann von den Objekten aufrufen lassen. Statische Methoden gehören zu keinem Objekt, daher besteht keine Notwendigkeit, $this zu binden, d. h. sie können ohne Objekt aufgerufen werden.

(Lernvideo-Empfehlung: Einführung in die Programmierung)

Beispielanalyse:

<?php
header(&#39;content-type:text/html;charset=utf-8&#39;);

class Human{
  static public $head=1;
  public function easyeat(){
    echo &#39;普通方法吃饭<br />&#39;;
  }
  static public function eat(){
    echo &#39;静态方法吃饭<br />&#39;;
  }
  public function intro(){
    echo $this->name;
  }
}
Error_reporting(E_ALL|E_STRICT);
//此时没有对象!方法可以执行
Human::eat();
/*
以下方法easyeat是一个非静态方法,就由对象来调用,但,用类来调用此方法来也可以执行,而严格状态下,此方法会执行,同时报错,
Strict Standards: Non-static method Human::easyeat() should not be called statically in D:\application\PHPnow-1.5.6\htdocs\yan18\types\staticfun.php on line 32

*/
Human::easyeat();
/*
接上,从逻辑来理解,如果用类名静态调用非静态(普通)方法
比如:intro()
那么,这个$this是指哪个对象呢??
因此会报错,因为找不到对象!
Fatal error: Using $this when not in object context in D:\application\PHPnow-1.5.6\htdocs\yan18\types\staticfun.php on line 23
*/
Human::intro();
/*
如上分析,其实,非静态方法,是不能由类名静态调用的,但目前,php中的面向对象检测不够严格,只要静态方法中没有$this关键字,就会转化成静态方法来处理!
*/
$li=new Human();
$li->eat();
?>

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen statischen Methoden und gewöhnlichen Methoden in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:So löschen Sie Dateien in PHPNächster Artikel:So löschen Sie Dateien in PHP