注意:create_function() 自 PHP 7.2 棄用,PHP 8.0 移除。現代 PHP 請使用匿名函數 (Closure) 或 箭頭函數 (fn)。本文僅作歷史參考。
<?php
if (count($_POST) > 0) {
$prepped = create_function('$a', 'return trim($_POST[$a]);');
} elseif (count($_GET) > 0) {
$prepped = create_function('$a', 'return strtoupper($_GET[$a]);');
} else {
$prepped = create_function('$a', 'return false;');
}
echo $prepped('file');
?>
if (!empty($_POST)) {
$prepped = fn($a) => trim($_POST[$a] ?? '');
} elseif (!empty($_GET)) {
$prepped = fn($a) => strtoupper($_GET[$a] ?? '');
} else {
$prepped = fn($a) => false;
}
echo $prepped('file');
$prepped = function($a) {
if (!empty($_POST)) return trim($_POST[$a] ?? '');
if (!empty($_GET)) return strtoupper($_GET[$a] ?? '');
return false;
};
{closure} 無行號use 繼承外部變數eval() 絕對避免(同等風險)專案中若發現 create_function(),請優先重構為 Closure。