<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>

                # 語法糖 它意指那些沒有給計算機語言添加新功能,而只是對人類來說更“甜蜜”的語法。語法糖往往給程序員提供了更實用的編碼方式,有益于更好的編碼風格,更易讀。不過其并沒有給語言添加什么新東西。 ## 類型 ### Boolean 空對象在4.0以后都視為true ### String string的內部結構類似 array, 可以像python一下使用下標訪問字符串 $str = '012345'; echo $str[1]; //1 echo $str{2}; //2 ### Array 5.4 以后可以像JS一樣定義數組 $arr = ['one', 'two', 'three']; //感覺方便了很多 ## 全局變量 時間長不用總會忘記重新整理一下加深下印象 ### $_SERVER SERVER_ADDR IP地址 127.0.0.1 SERVER_NAME 主機名 localhost SERVER_SOFTWARE 服務器類型 nginx REMOTE_ADDR 客戶端IP. 127.0.0.1 s ### $_FILES $_FILES['file']['name'] 圖片原名稱 $_FILES['file']['type'] 圖片MIME類型 $_FILES['file']['size'] 圖片大小 $_FILES['file']['tmp_name'] 服務器端臨時名稱 ### 常量 5.3之后可以使用const來定義常量 const DEBUG = true; ### 運算符 <=> 比較運算符,7.0 之后支持 echo $a <=> $b; /* 當 $a < $b 時, 表達式返回 -1 當 $a = $b 時, 表達是返回 0 當 $a > $b 時, 表達式返回 1 */ ?? 空合并運算符 PHP7特性。 $name = $_POST['name'] ?? ''; //如果前面的值不為null,則返回本身,否則返回后面的值 三元運算符 ?: 5.3以后可以使用 $name = $_POST['name'] ?: ''; ////如果前面的值不為null,則返回本身,否則返回后面的值 ### 流程控制 goto 5.3以上有效 >操作符可以用來跳轉到程序中的另一位置。該目標位置可以用目標名稱加上冒號來標記,而跳轉指令是 goto 之后接上目標位置的標記。PHP 中的 goto 有一定限制,目標位置只能位于同一個文件和作用域,也就是說無法跳出一個函數或類方法,也無法跳入到另一個函數。也無法跳入到任何循環或者 switch 結構中。可以跳出循環或者 switch,通常的用法是用 goto 代替多層的 break。 goto a; echo 'Foo'; a: echo 'Bar'; //輸出 Bar ### 函數 變長參數 ..., 5.6以后可用 function dosum(...$arr){ $sum = 0; foreach($arr as $v){ $sum += $v; } return $sum; } $arr = [1, 2, 3, 4, 5]; echo dosum(...$arr); // 輸出15 echo dosum(1,2,3,4,5,6); //輸出21 ### 匿名函數(Anonymous functions)5.3 也叫閉包函數,在JS中很常見。為了防止污染全局作用域。5.3 以后PHP也支持了這種寫法 $test = function($name='Li'){ echo 'My name is '.$name; }; $test(); 如果想要從父作用域中繼承變量怎么辦 //這里定義一個默認的輸出名字的方式 $tpl = 'My name is '; //使用 use() 來引用父級的變量,最后輸出結果與上邊一致 $test = function($name='Li') use($tpl) { echo $tpl.$name; }; $test(); 需要注意的是,閉包函數的父作用域,是定義它的作用域,不是調用的作用域 ## 類和對象 ::class 類的靜態方法,用于獲取類的完全限定名稱,(包含命名空間) namespace Foo{ class test{ } echo test::class; // 輸出 FOO\test, 在使用命名空間的情況非常有用 } 5.4 新增加的一個多繼承實現方式trait。下面總結了一下基本概念 1. trait 和 class 是相似的概念,但不能被實例化 2. 一個類可以使用多個trait,優先級是 class > trait > 父類繼承的方法 3. 使用insteadof 來解決 tarit 沖突 4. 使用as,來修改方法的訪問控制 5. 在trait中也可以使用tarit。和在class中用法一致 trait A { public function say(){ echo 'trait A'; } } trait B { public function say(){ echo 'trait B'; } public function walk(){ echo 'walk B'; } } class Person { use A, B{ B :: say insteadof A; // 使用B的say方法代替了A的say方法 walk as protected; // 將walk 設置為受保護的 } } $obj = new Person; $obj->say(); // echo trait A; $obj->walk(); // 提示不能訪問一個受保護的方法 6. 在trait中使用, 屬性、靜態屬性、靜態方法、抽象類都是被允許的。 trait Test { public static $obj; public $name = 1; static function createObj(){ return empty(self::$obj) ? new self : self::$obj; } } class son { use Test; } $obj = son::createObj(); echo $obj->name; // echo 1 echo $obj === $obj1 ? 0 : 1; // echo 1 ### 5.3 類的后期靜態綁定 官方的解釋是: >該功能從語言內部角度考慮被命名為”后期靜態綁定”。”后期綁定”的意思是說,static:: 不再被解析為定義當前方法所在的類,而是在實際運行時計算的。也可以稱之為”靜態綁定”,因為它可以用于(但不限于)靜態方法的調用。 乍一看,好像什么也沒看懂。看看具體的代碼吧。 class A { public static function who() { echo __CLASS__; } public static function test() { self::who(); } } class B extends A { public static function who() { echo __CLASS__; } } B::test(); // echo A; // 上面是一個正常的調用, 輸出了 A // 當我們把 class A 的 test 方法修改一下。 將 self 改成 static 后 class A { public static function who() { echo __CLASS__; } public static function test() { static::who(); } } class B extends A { public static function who() { echo __CLASS__; } } B::test(); // echo B; 總結:PHP5.3新增加了一類關鍵字,static 可以在調用函數的方法。用這個關鍵字,來實現了后期靜態綁定。 ## 異常處理 比較簡單記錄一下,想用好異常處理卻不簡單 try{ throw new Execption('拋出異常'); } catch (Execption $e){ //獲取異常 $error = $e->getMessage(); } echo $error; //拋出異常
                  <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>

                              哎呀哎呀视频在线观看