PHP 作為動態類型的 Web 腳本語言,以頁面文件為加載單元,現代開發離不開 Composer 包管理。本文系統梳理 Composer 全局/項目安裝、依賴升級、鏡像配置、自動加載機制,解析 PHP 動態類型與文件式運行特性,並演示基於 Cookie 存儲的自定義 Session 處理器實現。
# 下載安裝器
php -r "readfile('https://getcomposer.org/installer');" | php
# 生成系統命令
echo @php "%~dp0composer.phar" %* > composer.bat
# 將目錄加入系統 PATH 環境變量
php -r "readfile('https://getcomposer.org/installer');" | php
# 生成 composer.phar 於項目根目錄
composer.json{
"require": {
"monolog/monolog": "1.0.*"
},
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.phpcomposer.com"
}
}
}
| 命令 | 說明 |
|---|---|
composer install | 根據 lock 文件安裝精確版本 |
composer update | 升級依賴並更新 lock 文件 |
composer require vendor/pkg | 新增依賴並自動更新 |
composer dump-autoload | 重新生成自動加載映射 |
composer show | 列出已安裝包 |
pushHandler(new StreamHandler('app.log', Logger::WARNING));
$log->addWarning('Service started');
大小寫敏感、註釋風格、數據類型、函數參數傳遞、成員引用 (->) 均與 C/C++/Java/C# 高度一致。有 JS 基礎者更如虎添翼。
同一變量在不同時刻可持有不同類型值,但同一時刻表現為強類型。善用 is_int、is_string、is_null 等類型檢查函數消除焦慮。
PHP 以頁面文件為執行單元,include/require 物理包含文件,__autoload/spl_autoload_register 僅是簡化包含路徑解析,**本質未變**。這決定了 PHP 天生適合組件復用而非重框架綁定。
PHP 專注 HTTP 請求處理,橫向認證授權、縱向路由分發即可。過度依賴高耦合框架反而違背 PHP 設計初衷。組件化、中間件模式更符合 PHP 直覺。
| 文件 | 職責 | 關鍵點 |
|---|---|---|
config.php | 全局配置 | DB 連接、路由規則、環境區分,每請求必載入 |
index.php | 前端控制器 | 天然 FrontController,統一入口、認證授權、路由分發 |
database.php | 數據訪問層 | 封裝 CRUD、事務、預處理,消除樣板代碼 |
PHP 通過 session_set_save_handler() 註冊六個回調函數即可完全接管 Session 存儲。下例將 Session 數據 Base64 編碼存入 Cookie,適合無共享存儲的單機/小集群場景。
關鍵點提示
HttpOnly、Secure 標志。