php中靜態(tài)方法與普通方法的區(qū)別是:普通方法需要對(duì)象去調(diào)用,需要綁定$this,即普通方法必須要有對(duì)象,然后讓對(duì)象來(lái)調(diào)用;靜態(tài)方法不屬于哪一個(gè)對(duì)象,因此不需要綁定$this,即不需要對(duì)象也可以調(diào)用。
普通方法存放類(lèi)內(nèi),只有一份;靜態(tài)方法也是存放于類(lèi)內(nèi),只有一份。
(推薦教程:php圖文教程)
區(qū)別在于:普通方法需要對(duì)象去調(diào)用,需要綁定$this,即普通方法,必須要有對(duì)象,然后讓對(duì)象來(lái)調(diào)用。而靜態(tài)方法,不屬于哪一個(gè)對(duì)象,因此不需要綁定$this,即不需要對(duì)象也可以調(diào)用。
(學(xué)習(xí)視頻推薦:編程入門(mén))
舉例分析:
<?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 '靜態(tài)方法吃飯<br />'; } public function intro(){ echo $this->name; } } Error_reporting(E_ALL|E_STRICT); //此時(shí)沒(méi)有對(duì)象!方法可以執(zhí)行 Human::eat(); /* 以下方法easyeat是一個(gè)非靜態(tài)方法,就由對(duì)象來(lái)調(diào)用,但,用類(lèi)來(lái)調(diào)用此方法來(lái)也可以執(zhí)行,而嚴(yán)格狀態(tài)下,此方法會(huì)執(zhí)行,同時(shí)報(bào)錯(cuò), Strict Standards: Non-static method Human::easyeat() should not be called statically in D:applicationPHPnow-1.5.6htdocsyan18typesstaticfun.php on line 32 */ Human::easyeat(); /* 接上,從邏輯來(lái)理解,如果用類(lèi)名靜態(tài)調(diào)用非靜態(tài)(普通)方法 比如:intro() 那么,這個(gè)$this是指哪個(gè)對(duì)象呢?? 因此會(huì)報(bào)錯(cuò),因?yàn)檎也坏綄?duì)象! Fatal error: Using $this when not in object context in D:applicationPHPnow-1.5.6htdocsyan18typesstaticfun.php on line 23 */ Human::intro(); /* 如上分析,其實(shí),非靜態(tài)方法,是不能由類(lèi)名靜態(tài)調(diào)用的,但目前,php中的面向?qū)ο髾z測(cè)不夠嚴(yán)格,只要靜態(tài)方法中沒(méi)有$this關(guān)鍵字,就會(huì)轉(zhuǎn)化成靜態(tài)方法來(lái)處理! */ $li=new Human(); $li->eat(); ?>