訪問控制 – PHP面向對象編程(OOP)

    PHP 對屬性或方法的訪問控制,是通過在前面添加關鍵字 public(公有),protected(受保護)或 private(私有)來實現的。

    • public(公有):公有的類成員可以在任何地方被訪問。
    • protected(受保護):受保護的類成員則可以被其自身以及其子類和父類訪問
    • private(私有):私有的類成員則只能被其定義所在的訪問。

    在子類中,可以對 public(公有)和protected(受保護)進行重定義,但private(私有)而不能

    屬性的訪問控制

    類屬性必須定義為公有,受保護,私有之一。

    如果用 var 定義,則被視為公有。

    <?php
    /**
     * Define MyClass
     */
    class MyClass
    {
        public $public = 'Public';
        protected $protected = 'Protected';
        private $private = 'Private';
    
        function printHello()
        {
            echo $this->public;
            echo $this->protected;
            echo $this->private;
        }
    }
    
    $obj = new MyClass();
    echo $obj->public; // 這行能被正常執行
    echo $obj->protected; // 這行會產生一個致命錯誤
    echo $obj->private; // 這行也會產生一個致命錯誤
    $obj->printHello(); // 輸出 Public、Protected 和 Private
    
    
    /**
     * Define MyClass2
     */
    class MyClass2 extends MyClass
    {
        // 可以對 public 和 protected 進行重定義,但 private 而不能
        protected $protected = 'Protected2';
    
        function printHello()
        {
            echo $this->public;
            echo $this->protected;
            echo $this->private;
        }
    }
    
    $obj2 = new MyClass2();
    echo $obj2->public; // 這行能被正常執行
    echo $obj2->private; // 未定義 private,私有的類成員則只能被其定義所在的類訪問
    echo $obj2->protected; // 這行會產生一個致命錯誤
    $obj2->printHello(); // 輸出 Public、Protected2 和 Undefined
    
    ?>

    注意,什么是類,什么是對象(類的實例)

    方法的訪問控制

    類中的方法可以被定義為公有,私有或受保護。

    如果沒有設置這些關鍵字,則該方法默認為公有。

    <?php
    /**
     * Define MyClass
     */
    class MyClass
    {
        // 聲明一個公有的構造函數
        public function __construct() { }
    
        // 聲明一個公有的方法
        public function MyPublic() { }
    
        // 聲明一個受保護的方法
        protected function MyProtected() { }
    
        // 聲明一個私有的方法
        private function MyPrivate() { }
    
        // 此方法為公有
        function Foo()
        {
            $this->MyPublic();
            $this->MyProtected();
            $this->MyPrivate();
        }
    }
    
    $myclass = new MyClass;
    $myclass->MyPublic(); // 這行能被正常執行
    $myclass->MyProtected(); // 這行會產生一個致命錯誤
    $myclass->MyPrivate(); // 這行會產生一個致命錯誤
    $myclass->Foo(); // 公有,受保護,私有都可以執行
    
    
    /**
     * Define MyClass2
     */
    class MyClass2 extends MyClass
    {
        // 此方法為公有
        function Foo2()
        {
            $this->MyPublic();
            $this->MyProtected();
            $this->MyPrivate(); // 這行會產生一個致命錯誤
        }
    }
    
    $myclass2 = new MyClass2;
    $myclass2->MyPublic(); // 這行能被正常執行
    $myclass2->Foo2(); // 公有的和受保護的都可執行,但私有的不行
    
    class Bar 
    {
        public function test() {
            $this->testPrivate();
            $this->testPublic();
        }
    
        public function testPublic() {
            echo "Bar::testPublicn";
        }
        
        private function testPrivate() {
            echo "Bar::testPrivaten";
        }
    }
    
    class Foo extends Bar 
    {
        public function testPublic() {
            echo "Foo::testPublicn";
        }
        
        private function testPrivate() {
            echo "Foo::testPrivaten";
        }
    }
    
    $myFoo = new foo();
    $myFoo->test(); // Bar::testPrivate 
                    // Foo::testPublic
    ?>

    參考文章

    給TA贊賞
    共{{data.count}}人
    人已贊賞
    ??
    Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
    無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
    ?
    購物車
    優惠劵
    搜索
    主站蜘蛛池模板: 国产Av一区二区精品久久| 欧美亚洲精品一区二区| 国产AV一区二区三区无码野战| 日韩毛片一区视频免费| A国产一区二区免费入口| 亚洲日韩精品无码一区二区三区 | 久久精品亚洲一区二区| 91大神在线精品视频一区| 午夜性色一区二区三区不卡视频 | 手机福利视频一区二区| 美女视频黄a视频全免费网站一区| 中文字幕在线无码一区| 国产精品福利一区二区| 一区二区三区四区无限乱码 | 亚洲影视一区二区| 国产视频一区二区| 亚洲国产成人一区二区三区 | 亚洲国产精品成人一区| 无码一区二区三区| 高清一区二区三区视频| 伊人久久大香线蕉av一区| 午夜福利无码一区二区 | 在线播放一区二区| 日本一区二区三区在线网| 亚洲国产精品一区二区成人片国内 | 无码av免费一区二区三区| 日韩精品一区二区三区中文版| 国产免费无码一区二区| 日韩AV片无码一区二区不卡| 国产AV一区二区三区传媒| 视频一区视频二区制服丝袜| 精品无码成人片一区二区98| 精品人妻少妇一区二区| 精品人妻无码一区二区色欲产成人 | 亚洲综合av永久无码精品一区二区| 最新欧美精品一区二区三区| 成人日韩熟女高清视频一区| 国产亚洲综合精品一区二区三区| 日韩在线不卡免费视频一区| 久久精品国产第一区二区| 精品欧美一区二区在线观看|