ADUNIT000

static變數、public變數、private變數、protected變數的使用方法-PHP

 

PHP的物件有4種定義變數的可用範圍

這些定義方法分別是 static 、 public 、 private 、 protected

而使用範圍由大到小剛好也是

static(靜態變數) > public(公有變數) > protected > private(私有變數)

 

static(靜態變數):使用時不需要特別建立物件,就可以直接使用;例如:$類別名稱::$static變數;

public(公有變數):必須建立物件後才可以使用,但是可以在類別以外的地方做使用;例如:$變數 = new 類別();  $變數->public變數;(不需加$字號)

protected:必須建立物件後才可以使用,不可以在類別以外的地方做使用,但是可以被繼承並在子類別使用,範例如下

private(私有變數):必須建立物件後才可以使用,只可以在這個類別內使用且不能被繼承

 

class Father{

      //不需建立物件可以直接使用

      static $static_value = "static";

 

       //需要建立物件,但是在類別以外也可以用

      public $public_value = "public";

 

      //只有這個類別才能使用

      private $private_value = "private";

 

      //只有這個類別和子類別才能使用

      protected $protected_value = "protected";

 

      //private 變數只能在類別內的函數使用

      function getprivate(){

            return $this->private_value;

      }

}

 

      // static 變數不需建立物件可以直接使用

      echo Father::$static_value;

 

      //建立後可以直接呼叫 public 變數讓類別外的函數使用

      $testFather = new Father();

      echo $testFather->public_value;

 

      //使用protected變數的繼承特性之前,必須先建立子類別來繼承父類別

      class son extends Father{

            function __construct(){

                  //可直接從父類別取得變數

                  echo $this->protected_value."子類別";

            }

            function testextend(){

                  return  $this->protected_value."來自testextend";

            }

      }

 

      //當子物件被建立時會直接從父類別取得變數,下面是兩種不同的做法

      $testSon = new son();

      echo $testSon->testextend();

 

      //private 變數只能在類別內的函數使用,不能像 public 變數直接使用也無法被繼承

      // echo $testFather->private_value; 這行會失敗

      echo $testFather->getprivate();

 

 

      如果覺得對你有幫助的話. 請幫小弟按個讚吧~

 

文章標籤
創作者介紹

史丹利愛碎念

newaurora 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • 訪客
  • private 跟protected 的敘述寫反了
  • 感謝前輩指正~已修正^^

    newaurora 於 2015/07/05 14:21 回覆

找更多相關文章與討論