<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                >[danger] 不需要實例化就可以直接調用 > 只存在于函數作用域的變量,函數執行之后變量的值不會丟失,只會初始化一次,初始化靜態變量不能使用表達式,不用**全局變量**代替是因為全局變量會被所有函數訪問容易造成維護不宜。 static修飾的屬性和方法 類內: self::$屬性名 self::方法名() 類外部: 類名::屬性名 類名::方法名() const是常量 值不能修改了 static是靜態成員 可以在不實例化得情況下 在類外直接訪問 CONST不行 ``` class demo{ public static $name='張三'; public static $login=0; public static function son(){ echo self::$name.':'.self::$login; self::$login++; self::$login+=5; } } demo::son(); demo::son(); demo::son(); //輸出 => 張三:0張三:6張三:12 ``` >[danger]靜態方法中,$this偽變量不允許使用。可以使用self,parent,static在內部調用靜態方法與屬性: 靜態方法也可以通過變量來進行動態調用: ``` class Car { private static $speed = 10; public static function getSpeed() { return self::$speed; } } $func = 'getSpeed'; $className = 'Car'; echo $className::$func(); //動態調用靜態方法相當于Car::getSpeed(); ``` **作用**:static不管在類中還是函數中都會記住靜態的值不會被銷毀(一般函數執行完就銷毀了) 1、不需要實例化就可以直接用self::靜態方法名”或者“”類外可以使用“類名::靜態方法名”調用; 2、靜態屬性、方法一個公用不管實例化多少次,靜態方法都直接加載到內存的一個固定空間里,在內存中只有一份,為所有的實例共用;普通方法 你的方法調用需要先實例化類 然后 這部操作會在 內存中 另開辟空間 來存放這部分空間也省掉了~就是省資源 3、static 的屬性和方法,只能訪問static的屬性和方法,不能類訪問非靜態的屬性和方法。因為靜態屬性和方法被創建時,可能還沒有任何這個類的實例可以被調用。 4、靜態方法不能調用非靜態屬性。因為非靜態屬性需要實例化后,存放在對象里; 5、靜態方法可以調用非靜態方法,使用 self 關鍵詞,一個方法被self:: 后,它就自動轉變為靜態方法; 什么情況下靜態變量:在對象之間共享值時 方便訪問變量時 ``` class Person { // 申明靜態方法 public static function demo() { echo '你好<br>'; } public function demo1() { // 類內調用靜態方法 self::demo(); } } // 在類外調用靜態方法 Person::demo();//不實例化可以直接調用 $p = new Person;//實例化 // 調用demo1方法 $p->demo1();//你好 $p->demo();//你好 //類外直接調用static $p::demo();//你好 ``` 在類中使用static有兩種主要用途、定義靜態成員和定義靜態方法。靜態成員只保留一個變量的值,這個值對所有實例都是有效的,如下: ``` class MyObject{ public static $myStaticVar=0; function myMethod(){ self::$myStaticVar+=2; echo self::$myStaticVar; } } $instance1=new MyObject();//實例化一次 $instance1->myMethod(); $instance2=new MyObject();//再實例化 $instance2->myMethod(); //結果將分別打印2、4 class Person { // 申明靜態屬性 public static $name = '歐巴'; // self:自己 // 類內獲取靜態屬性(self::屬性名) public function getInfo() { return self::$name; } } // 實例化Person類 // $p = new Person; // echo $p->name; // Accessing static property Person::$name as non static使用非靜態方式獲取靜態屬性 // 在類的外部獲取靜態屬性(類名::屬性名) echo Person::$name; ------------------------------------------------------------------------------ class test { const constvar='hello world'; static $staticvar='hello world'; function getStaticvar(){ return self::$staticvar; } } $obj=new test(); echo test::constvar //輸出'hello world' echo test::staticvar //出錯,staticvar 前必須加$才能訪問,這是容易和類常量(per-class常量)容易混淆的地方之一 echo test::$staticvar //輸出'hello world' $str='test'; echo $str::$staticvar //出錯,類名在這不能用變量動態化 echo $str::constvar //出錯原因同上 //在類名稱存在一個變量中處于不確定(動態)狀態時,只能以以下方式訪問類變量 $obj2=new $str(); echo $obj2->getStaticvar(); <?php class Book{ static $num=0; public function showMe(){ echo"您是滴".self::$num."位訪客"; self::$num++; } } $book1=new Book(); $book1->showMe(); echo"<br>"; $book2=new Book(); $book2->showMe(); echo"<br>"; echo"您是滴".Book::$num."位訪客"; ?> ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看