php存取控制

來源:互聯網
上載者:User

標籤:

存取控制

存取控制通過關鍵字public,protected和private來實現。被定義為公有的類成員可以在任何地方被訪問。被定義為受保護的類成員則可以被其自身以及其子類和父類訪問。被定義為私人的類成員則只能被其定義所在的類訪問。

類屬性必須定義為公有受保護私人之一。為相容PHP5以前的版本,如果採用 var 定義,則被視為公有。

class Car {

    $speed = 10; //錯誤 屬性必須定義存取控制

    var $speed = 10; //相當於public 

    public $name;   //定義共有屬性

}

 

類中的方法可以被定義為公有、私人或受保護。如果沒有設定這些關鍵字,則該方法預設為公有。

class Car {

    //預設為共有方法

    function turnLeft() {

    }

}

 

如果建構函式定義成了私人方法,則不允許直接執行個體化對象了,這時候一般通過靜態方法進行執行個體化,在設計模式中會經常使用這樣的方法來控制對象的建立,比如單例模式只允許有一個全域唯一的對象。

class Car {

    private function __construct() {

        echo ‘object create‘;

    }

 

    private static $_object = null;

    public static function getInstance() {

        if (empty(self::$_object)) {

            self::$_object = new Car(); //內部方法可以調用私人方法,因此這裡可以建立對象

        }

        return self::$_object;

    }

}

//$car = new Car(); //這裡不允許直接執行個體化對象

$car = Car::getInstance(); //通過靜態方法來獲得一個執行個體

 

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.