php 後知後覺

來源:互聯網
上載者:User

標籤:動態調用   return   extend   例子   obj   object   看到了   繼承   highlight   

1.$this :動態調用,指當前對象

通過一個例子,說明一下我當時的心理曆程:

/*** 父類*/class A {function show(){echo $this->msg();}function msg(){return "";}}

 

這是父類,裡面有兩個方法, 我看到了show調用了msg,msg裡面不是沒有東西嗎?這有什麼意思? 是不是**啊?  (→_→)

然後再寫了他的一個子類:

/*** A的子類之一*/class B extends A{function msg(){return "this is child";}}$b_obj=new B;echo $b_obj->show();

 

 

 根據查看的項目裡A類的子類,我發現在A的子類裡都會重寫A類的msg()方法,最終調用的還是子類自己的方法。 產生這個問題的原因就是 我沒理解  $this 的 真正意義。

通過上面的輸出,在頁面上可以看到結果:這是子類的輸出。

在A類的show方法裡 var_dump($this);  結果是: object(B)#1 (0) { }    也就是說 執行個體化B 調用show方法,根據繼承關係 會找到A類裡的show 方法,

$this是動態調用,$this指當前對象,這個時候的當前對象不一定就是A類的執行個體化對象啊,這時候的$this 是B類的執行個體化對象。

然後$this->msg();就等於是B類的執行個體化對象調用自己的msg方法。

如果A類裡show 方法這樣寫 echo A::msg();   那麼就是寫死的調用,就是調用A類自己的方法。

 

弄明白了這個,真的覺得自己是菜的難受啊......  \(-_-||)/

 

2017-7-10   在菜的道路上,控制不住記幾,越走越遠......

php 後知後覺

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.