2012年10月2日 星期二

PHP5.4的改變

升級到PHP5.4時要特別注意
  1. 與之前不相容的事項
    http://www.php.net/manual/en/migration54.incompatible.php
     
  2. 新功能
    http://www.php.net/manual/en/migration54.new-features.php

Built-in development web server in CLI mode

新功能中有一樣 Built-in development web server in CLI mode,
是PHP5.4內建了一個簡易的web server,
我覺得蠻有趣的,用來臨時測試PHP5.4的功能也蠻方便,所以就玩了一下。

作業系統:win7
  • 首先到 http://windows.php.net/download/ 下載5.4的ZIP壓縮檔(我是下載5.4.7)
  • 解壓縮,我是解壓縮到 D:\php-5.4.7
  • 設定檔:將 D:\php-5.4.7\php.ini-development 檔名改為 php.ini
  • 打開cmd,執行php內建的web server,執行以下指令
    cd d:\php-5.4.7
    d:
    php -S localhost:8000 -t D:\00000 -c D:\php-5.4.7

    參數說明
    -s 指定監聽的網址和port
    -t 指定D:\00000為網頁根目錄
    -c 指定php.ini的位置
  • 成功後,會有以下訊息
  • 在 D:\00000 資料夾底下,放個info.php網頁測試,
    用瀏覽器開啟 http://localhost:8000/info.php,結果如下

Traits

另一個新功能 Traits,
我覺得也蠻有用的,可重複利用相同的程式碼,也減少使用繼承的一些局限,可視情況需要使用。
http://www.php.net/manual/en/language.oop5.traits.php

例如:
class BaseA{
    public function mm() {
        echo 'A:Hello ';
    }
}
class BaseB{
    public function mm() {
       echo 'B:Hello ';
    }
}

trait TestA{
   public function sayHello(){
       parent :: mm();
   }
  
}
trait TestB{
   public function sayWorld(){
     echo  'World!';
   }  
}
 
class MyHelloWorldA extends BaseA{
   use TestA, TestB;
}
class MyHelloWorldB extends BaseB{
   use TestA, TestB;
}
 
$A = new  MyHelloWorldA();
$A->sayHello();
$A->sayWorld();
echo "<br />";
$B = new  MyHelloWorldB();
$B->sayHello();
$B->sayWorld();
結果如下

沒有留言:

張貼留言