首頁 >後端開發 >php教程 >php 使用靜態方法的幾個注意事項說明

php 使用靜態方法的幾個注意事項說明

怪我咯
怪我咯原創
2017-07-05 10:17:481139瀏覽

這篇文章主要介紹了PHP使用靜態方法的幾個注意事項,以實例的形式講述了PHP靜態方法調用的技巧和易錯點分析,需要的朋友可以參考下

本文實例介紹了PHP使用靜態方法的幾個常見注意事項。分享給大家供大家參考。具體方法如下:

1. 即使類別中的方法並未用static聲明,但其未使用到可改變的類別成員變量,在外部仍可用運算子::來呼叫;

2. 以靜態方式(用::運算子)呼叫的方法中$this的取值是由呼叫時的上下文決定的!而不是定義他的類別!!

例如以下的程式碼:

<?php 
class TestClass1 
{ 
  public $normal_v = &#39;normal_v from TestClass1&#39;; 
  public static $STATIC_V = &#39;STATIC_V from TestClass1&#39;; 
  public function test_func1() 
  { 
    echo $this->normal_v.&#39;<br />&#39;.self::$STATIC_V; 
  } 
} 
class TestClass2 
{ 
  public $normal_v = &#39;normal_v from TestClass2&#39;; 
  public static $STATIC_V = &#39;STATIC_V from TestClass2&#39;; 
  public function test_func2() 
  { 
    TestClass1::test_func1(); 
  } 
} 
$t2 = new TestClass2(); 
$t2->test_func2();

這段程式碼是輸出會是什麼呢,我以為會是normal_v from TestClass1 df250b2156c434f3390392d09b1c9563 STATIC_V from TestClass1,測試發現其實我錯了,正確的輸出是:

normal_v from TestClass2
STATIC_V from TestClass1

說明:test_func1()雖然是在TestClass1中定義的,但卻是在TestClass2中呼叫的,其內部的$this變數則是由TestClass2決定的!

其實這兩個類別的關係應該屬於"雙向關聯".

有興趣的朋友可以測試運行本文實例,相信會有新的收穫!

以上是php 使用靜態方法的幾個注意事項說明的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn