is_file(string $filename): bool
回傳 true 當且僅當 $filename 存在且為一般檔案(非目錄、非連結、非裝置)。
<?php
var_dump(is_file('a_file.txt')); // true(存在且為檔案)
var_dump(is_file('/usr/bin/')); // false(是目錄)
var_dump(is_file('/not/exist.txt')); // false(不存在)
?>
clearstatcache() 清除(或 PHP 5.3+ 透過 clearstatcache(true, $path) 指定路徑)。__DIR__ . '/relative/path' 絕對化。function deleteFolder(string $path): void {
if (!is_dir($path)) return;
$handle = opendir($path);
while (false !== ($file = readdir($handle))) {
if ($file === '.' || $file === '..') continue;
$full = $path . '/' . $file;
if (is_file($full)) {
@unlink($full);
} elseif (is_dir($full)) {
deleteFolder($full);
@rmdir($full);
}
}
closedir($handle);
}
function isAllowedFile(string $filename): bool {
$ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
return in_array($ext, ['jpg','png','gif','pdf','docx'], true);
}
// 使用
if (is_file($tmpPath) && isAllowedFile($originalName)) {
move_uploaded_file($tmpPath, $destPath);
}
is_file() 內部觸發 stat() 系統呼叫,頻繁輪詢大量檔案時會成瓶頸。scandir() + SplFileInfo 迭代器,減少系統呼叫開銷。is_file() 是判斷「一般檔案」的標準函數,配合 clearstatcache()、絕對路徑、副檔名白名單,可構建安全可靠的檔案操作邏輯。