版本時間軸
| 版本 | 發布 | EOL | 關鍵特性 |
| 5.2 | 2006 | 2011 | JSON 支援 |
| 5.3 | 2009 | 2012 | 命名空間、匿名函數、Late Static Binding、PHAR、Nowdoc |
| 5.4 | 2012 | 2013 | Short Array Syntax、Traits、內建 Web Server、Callable 類型提示 |
| 5.5 | 2013 | 2016 | Generators (yield)、finally、password_hash、::class |
| 5.6 | 2014 | 2018 | 常量運算、可變參數 (...)、命名空間函數/常量導入 |
核心特性詳細
5.2 前奠基
spl_autoload_register() 多重自動載入
- PDO / MySQLi 現代資料庫介面
- 類型提示(類別、callable、array)
5.3 里程碑
// 匿名函數 + use 捕獲
$fn = function($x) use ($y) { return $x + $y; };
// 命名空間
namespace Foo\Bar;
use Baz\Qux as Q;
// Late Static Binding
static::method();
// Nowdoc (單引號行為)
$str = <<<'EOT'
$var 不會解析
EOT;
// PHAR 打包
require 'app.phar';
5.4 語法糖
// 短陣列語法
$arr = ['key' => 'value'];
// Traits 程式碼複用
trait Loggable { public function log($msg) { ... } }
class Service { use Loggable; }
// 內建 Server
php -S localhost:8000 -t public/
// 實例化即呼叫
(new Factory())->create();
5.5 生成器與安全
// yield 生成器
function nums() { for ($i=1; $i<=10; $i++) yield $i; }
foreach (nums() as $n) echo $n;
// finally 區塊
try { ... } catch (Exception $e) { ... } finally { cleanup(); }
// 密碼雜湊
password_hash($pwd, PASSWORD_DEFAULT);
5.6 函數增強
// 常量運算
const A = 2;
const B = A + 1;
// 可變參數
function sum(...$nums) { return array_sum($nums); }
sum(1, 2, 3); // 6
sum(...[1,2,3]); // 陣列展開
// 命名空間函數/常量導入
use const Ns\CONSTANT;
use function Ns\func;
遷移建議
- PHP 5.6 於 2018/12/31 結束安全更新
- 現代專案請直接使用 PHP 8.1+(效能提升 2-3 倍、JIT、屬性、聯合型別、match 等)
- 舊專案升級路徑:5.6 → 7.4 → 8.1