int file_put_contents(string $filename, mixed $data [, int $flags = 0 [, resource $context ]])
fopen() → fwrite() → fclose() 三步合一。$data 支援字串、陣列(自動 join('', $arr))、資源流。FILE_APPEND 追加寫入、LOCK_EX 獨佔鎖定。範例:
$file = 'people.txt'; $current = file_get_contents($file); $current .= "John Smith\n"; file_put_contents($file, $current); // 覆蓋寫入 file_put_contents($file, "New Line\n", FILE_APPEND); // 追加
string getcwd(void)
false,某些 Unix 系統若父目錄不可讀也會失敗。// 終端測試 php -r "echo getcwd();" // 輸出:/home/tiger
string substr(string $string, int $start [, int $length ])
| 參數 | 行為 | 範例 | 結果 |
|---|---|---|---|
| start ≥ 0 | 從左數第 start 個字元開始(0 起算) | substr('abcdef', 2) | cdef |
| start < 0 | 從右數第 |start| 個字元開始 | substr('abcdef', -2) | ef |
| length > 0 | 最多取 length 個字元 | substr('abcdef', 0, -1) | abcde |
| length < 0 | 結尾捨棄 |length| 個字元 | substr('abcdef', -3, -1) | de |
// 傳統寫法
function genConfig() {
return file_put_contents(getcwd().'/god.json','{}').' of bytes is written.'.PHP_EOL.'god config is created';
}
// PHP 7+ 型別宣告:回傳值型別
function genConfig(): string {
return file_put_contents(getcwd().'/god.json','{}').' of bytes is written.'.PHP_EOL.'god config is created';
}
支援的型別:int、float、string、bool、array、callable、self、parent、類/介面名。嚴格模式需在檔案頂部宣告 declare(strict_types=1);。
project/ ├── god # 入口腳本 ├── god_func.php # PHP 5 相容函數庫 └── god_func7.php # PHP 7 型別宣告版函數庫
#!/usr/local/php/bin/php
= 2) {
if ('-v' === $argv[1]) {
$result = 'god version is 1.0';
} elseif ('init' === $argv[1]) {
$result = genConfig();
}
}
echo $result . PHP_EOL;
god_func7.php(PHP 7 版)
四、執行驗證
$ php god -v god version is 1.0 $ php god init 18 of bytes is written. god config is created $ cat god.json {}五、最佳實踐提醒
- 版本相容策略:透過
PHP_VERSION動態載入,避免維護雙版本入口。- CLI 專用 Shebang:首行
#!/usr/local/php/bin/php讓腳本可直接執行./god init。- 錯誤處理:生產環境應加入
try-catch捕獲寫入失敗、目錄權限不足等異常。- 嚴格模式:新專案建議啟用
declare(strict_types=1);避免隱性型別轉換 Bug。