記事本   >>  網站技術
PHP 5.6 新功能
好一陣子沒更新的 PHP 終於發表新版本 5.6 !

先來記錄向下相容有問題的功能:
  1. json_decode
    將消除非小寫的變數,例如 true、false、null
    要設定相應 json_last_error()
  2. 陣列值的覆寫
     php 5.6 以前版本在 class 中使用陣列,並且陣列的 key 使用 class 變數指定,會導致該值不能輸入,在 5.6 中修改為可以顯示,例如:

    class helloWorld {
            const ONE = 1;
             
            public $array = [
                self::ONE => 'Eclipse',
                'Sublime',
                'PHPStrome',
            ];
        }
         
        $hello = new helloWorld();
         
        print_r($hello);
         
        // Before PHP 5.6
        array('Sublime', 'PHPStrome')
         
        // PHP 5.6
        array('Eclipse', 'Sublime', 'PHPStrome')


PHP 5.6 新功能

  1. 常數表達式
    在 5.6 中常數可以是個表達式 包含數字和字串。
    這個作法在 5.6 以前可能會用上常數、 function ,
    PHP 5.6 可以這麼做
    const ONE = 1;
    // Scalar Expression in constant
    const TWO = ONE * 2;
     
    class helloWorld {
        // Scalar Expression in Property   
        const THREE = TWO + 1;
         
        // Scalar Expression in Methods
        public hello f($a = ONE + self::THREE) {
            return $a;
        }
    }
     
    echo (new helloWorld)->hello()."\n";

  2. 藉由 "..." 使用可變函數
    在這之前使用 func_get_args()來取得函數中可調用的參數。
    但在 PHP 5.6 這些都可省下,因為可以透過 ... 來取得。

    function myTools($name, ...$tools) {
        echo "Name:". $name.'<br />';
        echo "My Tool Count:". count(tools);
    }
     
    myTools('Avinash', 'Eclipse');
    // Output:
    // Name: Avinash
    // My Tool Count: 1
     
    myTools('Avinash', 'Eclipse', 'Sublime');
    // Output:
    // Name: Avinash
    // My Tool Count: 2
     
    myTools('Avinash', 'Eclipse', 'Sublime', 'PHPStrom');
    // Output:
    // Name: Avinash
    // My Tool Count: 3<b>
    </b>

  3. 變數拆包  Argument Unpacking
    我們可以使用 ... 來拆包參數,這個參數可以是陣列或物件(traversable objects)。
    例如:
    function myTools($name, $tool1, $tool2, $tool3) {
            echo "Name:". $name.'<br />';
            echo "Tool1:", $tool1.'<br />';
            echo "Tool2:", $tool2.'<br />';
            echo "Tool3:", $tool3;
        }
         
        $myTools = ['Eclipse', 'Subline', 'PHPStrom'];
        myTools('Avinash', ...$myTools);
        // Output:
        // Name: Avinash
        // Tool1: Eclipse
        // Tool1: Subline
        // Tool1: PHPStrome

  4. 使用 ** 來取得次方運算
    例如:
    echo 2**3;   //計算 2的3次方,結果 8;

    變數次方運算,例如
    $a = 2;
    $a **=3;
    echo $a;      //這裡顯示 8

    要注意順序性,例如
    echo 2**2**4;

    通常我們以為是  (2**2)**4 結果是256,
    實際上是 2**(2**4) ,結果為 65536
    計算順序為從右到左。

  5. 設定預設編碼
    使用 
    default_charset()
    設定編碼,受影響的函數包含:htmlentities(), html_entity_decode() , htmlspecialchars()

  6. 加大上傳檔案尺寸
    最大上傳檔案現在可以達 2GB.

  7. use 支援 function 和 常數(const)

建議使用功能

  1. 在  class 外部執行靜態方式產生的錯誤改變
    class helloWorld() {
        public static hiWorld () {
         
        }
    }
     
    $hello = new helloWorld();
     
    $hello->hiWorld();
     
    // Before PHP 5.6
    E_STRICT error
     
    // From PHP 5.6
    E_DEPRECATED error<b>
    </b>

  2. 廢除 $HTTP_RAW_POST_DATA
    採用 php://input 替代。

  3. 編碼設定 Encoding Setting
    由於推出 default_charset() ,不建議使用 iconvmbstring.

以上用自己理解翻譯自這裡

進階搜尋
找商品說明
價錢: -
此分類無可選擇屬性

會員登入