PHP에서 정적 메서드와 일반 메서드의 차이점은 다음과 같습니다. 일반 메서드에는 호출할 개체가 필요하고 $this는 바인딩되어야 합니다. 즉, 일반 메서드에는 개체가 있어야 하며 개체가 해당 개체를 호출하도록 해야 합니다. $this를 바인딩해야 합니다. 즉, 개체 없이 호출할 수 있습니다.
일반 메서드는 클래스에 저장되고 복사본이 하나만 있습니다. 정적 메서드도 클래스에 저장되며 복사본이 하나만 있습니다.
(추천 튜토리얼: php 그래픽 튜토리얼)
차이점은: 일반 메소드는 호출할 객체가 필요하고 $this는 바인딩되어야 합니다. 즉, 일반 메소드에는 객체가 있어야 하며 객체가 이를 호출하도록 해야 합니다. 정적 메서드는 어떤 객체에도 속하지 않으므로 $this를 바인딩할 필요가 없습니다. 즉, 객체 없이 호출할 수 있습니다.
(학습 영상 추천: 프로그래밍 입문)
예시 분석:
<?php header('content-type:text/html;charset=utf-8'); class Human{ static public $head=1; public function easyeat(){ echo '普通方法吃饭<br />'; } static public function eat(){ echo '静态方法吃饭<br />'; } 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(); ?>
위 내용은 PHP의 정적 메소드와 일반 메소드의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!