Static(靜態(tài))與Final(終止)關(guān)鍵字 - PHP面向?qū)ο缶幊蹋∣OP)

    PHP類中常用的兩個關(guān)鍵字

    Static 關(guān)鍵字

    1. 聲明類屬性或方法為 static(靜態(tài)),就可以不實(shí)例化類而直接訪問。
    2. 靜態(tài)屬性不能通過一個類已實(shí)例化的對象來訪問(但靜態(tài)方法可以)。
    3. 由于靜態(tài)方法不需要通過對象即可調(diào)用,所以偽變量 $this 在靜態(tài)方法中不可用。
    4. 靜態(tài)屬性不可以由對象通過 -> 操作符來訪問。

    靜態(tài)方法

    <?php
    class Foo {
        public static function aStaticMethod() {
            // ...
           echo "Hello";
        }
    }
    
    Foo::aStaticMethod();
    $classname = 'Foo';
    $classname::aStaticMethod();
    ?>

    執(zhí)行以上程序,輸出結(jié)果為:

    HelloHello

    靜態(tài)屬性

    靜態(tài)屬性使用?范圍解析操作符?(?::?)訪問,不能通過對象操作符(?->?)訪問。

    通過變量來引用一個類是可行的,但這個變量的值不能是一個保留字 (例如selfparent和?static

    自 PHP 5.3.0 起,可以用一個變量來動態(tài)調(diào)用類。但該變量的值不能為關(guān)鍵字 self,parent 或 static。

    <?php
    class Foo
    {
        public static $my_static = 'foo';
    
        public function staticValue() {
            return self::$my_static;
        }
    }
    
    class Bar extends Foo
    {
        public function fooStatic() {
            return parent::$my_static;
        }
    }
    
    
    print Foo::$my_static . "n";
    
    $foo = new Foo();
    print $foo->staticValue() . "n";
    print $foo->my_static . "n";      // 未定義的 "屬性" my_static
    
    print $foo::$my_static . "n";
    $classname = 'Foo';
    print $classname::$my_static . "n";
    
    print Bar::$my_static . "n";
    $bar = new Bar();
    print $bar->fooStatic() . "n";
    ?>

    執(zhí)行以上程序,輸出結(jié)果為:

    foo
    foo
    
    Notice: Accessing static property Foo::$my_static as non static in /in/V0Rvv on line 23
    
    Warning: Undefined property: Foo::$my_static in /in/V0Rvv on line 23
    
    foo
    foo
    foo
    foo

    靜態(tài)實(shí)戰(zhàn)實(shí)例

    <?php
    class Foo {
      public static $my_static = 'foo';
      
      public function staticValue() {
         return self::$my_static;
      }
    }
    
    print Foo::$my_static . PHP_EOL;
    $foo = new Foo();
    
    print $foo->staticValue() . PHP_EOL;
    ?>????

    執(zhí)行以上程序,輸出結(jié)果為:

    foo
    foo

    Final 關(guān)鍵字

    PHP 5 新增了一個 final 關(guān)鍵字。如果父類中的方法被聲明為 final,則子類無法覆蓋該方法。如果一個類被聲明為 final,則不能被繼承。

    以下代碼執(zhí)行會報錯:

    <?php
    class BaseClass {
       public function test() {
           echo "BaseClass::test() called" . PHP_EOL;
       }
       
       final public function moreTesting() {
           echo "BaseClass::moreTesting() called"  . PHP_EOL;
       }
    }
    
    class ChildClass extends BaseClass {
       public function moreTesting() {
           echo "ChildClass::moreTesting() called"  . PHP_EOL;
       }
    }
    // 報錯信息 Fatal error: Cannot override final method BaseClass::moreTesting()
    ?>

    參考文章

    php

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

    2022-8-24 18:18:37

    php

    調(diào)用父類構(gòu)造方法 - PHP面向?qū)ο缶幊蹋∣OP)

    2022-8-25 14:56:51

    ??
    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)惠劵
    今日簽到
    有新私信 私信列表
    搜索
    主站蜘蛛池模板: 天天综合色一区二区三区| 国产拳头交一区二区| 国产精品无码一区二区三区在| 清纯唯美经典一区二区| 人妻夜夜爽天天爽一区| 色婷婷一区二区三区四区成人网 | 亚洲一区二区三区免费视频 | 国产伦精品一区二区免费| 成人无码精品一区二区三区| 亚洲日韩一区精品射精| 2021国产精品视频一区| 精品一区二区三区在线播放| 无码人妻视频一区二区三区 | 国产91久久精品一区二区| 日韩一区二区在线视频| 国产成人欧美一区二区三区| 国产精品高清一区二区人妖| 色久综合网精品一区二区| 久久久久国产一区二区| 中文无码AV一区二区三区| 深夜福利一区二区| 日韩在线视频不卡一区二区三区| 亚洲视频一区二区三区四区| 亚洲一区精品视频在线| 日韩人妻无码一区二区三区| 中日韩一区二区三区| 亲子乱av一区二区三区| 国产一区二区三区乱码| 精品国产一区二区三区av片| 日本一道一区二区免费看| 国产一区二区三区在线免费| 一区二区三区电影网| 日韩精品在线一区二区| 蜜桃臀无码内射一区二区三区| 影音先锋中文无码一区| 国模精品视频一区二区三区| 冲田杏梨高清无一区二区| 国产一区二区电影在线观看| 在线视频一区二区三区| 久久精品无码一区二区三区免费| 成人欧美一区二区三区在线视频|