訪問控制 - PHP面向?qū)ο缶幊蹋∣OP)

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

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

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

    屬性的訪問控制

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

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

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

    方法的訪問控制

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

    如果沒有設(shè)置這些關(guān)鍵字,則該方法默認(rèn)為公有。

    <?php
    /**
     * Define MyClass
     */
    class MyClass
    {
        // 聲明一個公有的構(gòu)造函數(shù)
        public function __construct() { }
    
        // 聲明一個公有的方法
        public function MyPublic() { }
    
        // 聲明一個受保護(hù)的方法
        protected function MyProtected() { }
    
        // 聲明一個私有的方法
        private function MyPrivate() { }
    
        // 此方法為公有
        function Foo()
        {
            $this->MyPublic();
            $this->MyProtected();
            $this->MyPrivate();
        }
    }
    
    $myclass = new MyClass;
    $myclass->MyPublic(); // 這行能被正常執(zhí)行
    $myclass->MyProtected(); // 這行會產(chǎn)生一個致命錯誤
    $myclass->MyPrivate(); // 這行會產(chǎn)生一個致命錯誤
    $myclass->Foo(); // 公有,受保護(hù),私有都可以執(zhí)行
    
    
    /**
     * Define MyClass2
     */
    class MyClass2 extends MyClass
    {
        // 此方法為公有
        function Foo2()
        {
            $this->MyPublic();
            $this->MyProtected();
            $this->MyPrivate(); // 這行會產(chǎn)生一個致命錯誤
        }
    }
    
    $myclass2 = new MyClass2;
    $myclass2->MyPublic(); // 這行能被正常執(zhí)行
    $myclass2->Foo2(); // 公有的和受保護(hù)的都可執(zhí)行,但私有的不行
    
    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
    ?>

    參考文章

    php

    繼承與方法重寫 - PHP面向?qū)ο缶幊蹋∣OP)

    2022-8-24 14:27:51

    php

    接口 - PHP面向?qū)ο缶幊蹋∣OP)

    2022-8-24 16:29:34

    ??
    Npcink上的部份代碼及教程來源于互聯(lián)網(wǎng),僅供網(wǎng)友學(xué)習(xí)交流,若您喜歡本文可附上原文鏈接隨意轉(zhuǎn)載。
    無意侵害您的權(quán)益,請發(fā)送郵件至 1355471563#qq.com 或點(diǎn)擊右側(cè) 私信:Muze 反饋,我們將盡快處理。
    0 條回復(fù) A文章作者 M管理員
      暫無討論,說說你的看法吧
    ?
    個人中心
    購物車
    優(yōu)惠劵
    今日簽到
    有新私信 私信列表
    搜索
    主站蜘蛛池模板: 东京热无码av一区二区| 国产在线一区二区杨幂| 国内精品视频一区二区八戒| 国产成人精品视频一区| 91久久精品午夜一区二区| 精品无人乱码一区二区三区| 国产一区二区三区免费| 亚洲AV永久无码精品一区二区国产| 国产成人精品视频一区二区不卡| 日本精品视频一区二区| 78成人精品电影在线播放日韩精品电影一区亚洲| 亚洲AV无码一区二区三区在线观看| 国产乱码精品一区三上| 精品久久久久久无码中文字幕一区| AV鲁丝一区鲁丝二区鲁丝三区| 亚洲AV本道一区二区三区四区| 亚洲一区二区三区自拍公司| 国产伦一区二区三区高清| 国产一区二区三区精品视频| 久久精品综合一区二区三区| 好吊视频一区二区三区| 日本高清成本人视频一区| 一区二区视频免费观看| 亚洲国产精品一区二区三区久久| 亚洲AV成人精品日韩一区18p| 一区二区国产精品| 久久AAAA片一区二区| 中文乱码精品一区二区三区| 上原亚衣一区二区在线观看| 亚洲国产成人一区二区三区| 美女毛片一区二区三区四区| 亚洲熟妇AV一区二区三区宅男| 无码精品不卡一区二区三区| 免费观看日本污污ww网站一区| 亚洲国产精品一区二区第一页免| 嫩B人妻精品一区二区三区| 亚洲av午夜福利精品一区人妖| 亚洲综合色一区二区三区小说| 99偷拍视频精品一区二区| 一区二区三区在线观看视频| 国产成人精品无码一区二区 |