为了便于阅读,格式化这个的最佳方法是什么?
if (strpos($file, '.jpg',1) && file_exists("$thumbsdir/$file") == false || strpos($file, '.gif',1) && file_exists("$thumbsdir/$file") == false || strpos($file, '.png',1) && file_exists("$thumbsdir/$file") == false) {
createThumb("$gallerydir/$file", "$thumbsdir/$file",$thumbsize);
fwrite($log,date("Y-m-d")." @ ".date("H:i:s")." CREATED: $thumbsdir/$file\n");
}
答案 0 :(得分:17)
我将“是一个图像”逻辑提取到它自己的函数中,这使得if
更具可读性,并且还允许您集中逻辑。
function is_image($filename) {
$image_extensions = array('png', 'gif', 'jpg');
foreach ($image_extensions as $extension)
if (strrpos($filename, ".$extension") !== FALSE)
return true;
return false;
}
if (is_image($file) && !file_exists("$thumbsdir/$file")) {
createThumb("$gallerydir/$file", "$thumbsdir/$file",$thumbsize);
fwrite($log,date("Y-m-d")." @ ".date("H:i:s")." CREATED: $thumbsdir/$file\n");
}
答案 1 :(得分:4)
if ((strpos($file, '.jpg',1) ||
strpos($file, '.gif',1) ||
strpos($file, '.png',1))
&& file_exists("$thumbsdir/$file") == false)
{
createThumb("$gallerydir/$file", "$thumbsdir/$file",$thumbsize);
fwrite($log,date("Y-m-d")." @ ".date("H:i:s")." CREATED: $thumbsdir/$file\n");
}
答案 2 :(得分:2)
对于每种文件类型,file_exists
检查似乎都是常量,因此除非已经通过file_exists
检查,否则不要对它们进行比较。
if (file_exists("$thumbsdir/$file") == false)
{
if(strpos($file, '.jpg',1) ||
strpos($file, '.gif',1) ||
strpos($file, '.png',1)
{
createThumb("$gallerydir/$file", "$thumbsdir/$file",$thumbsize);
fwrite($log,date("Y-m-d")." @ ".date("H:i:s")." CREATED: $thumbsdir/$file\n");
}
}
答案 3 :(得分:2)
function check_thumbnail($file)
{
return (strpos($file, '.jpg',1) && file_exists("$thumbsdir/$file") == false ||
strpos($file, '.gif',1) && file_exists("$thumbsdir/$file") == false ||
strpos($file, '.png',1) && file_exists("$thumbsdir/$file") == false);
}
if (check_thumbnail ($file)) {
createThumb("$gallerydir/$file", "$thumbsdir/$file",$thumbsize);
fwrite($log,date("Y-m-d")." @ ".date("H:i:s")." CREATED: $thumbsdir/$file\n");
}
将逻辑解压缩到单独的函数后,可以减少重复:
function check_thumbnail($file)
{
return (strpos($file, '.jpg',1) ||
strpos($file, '.gif',1) ||
strpos($file, '.png',1)) &&
(file_exists("$thumbsdir/$file") == false);
}
答案 4 :(得分:2)
我会将ifs分开,因为那里有一些重复的代码。我也尝试尽早退出例行程序:
if (!strpos($file, '.jpg',1) && !strpos($file, '.gif',1) && !strpos($file, '.png',1))
{
return;
}
if(file_exists("$thumbsdir/$file"))
{
return;
}
createThumb("$gallerydir/$file", "$thumbsdir/$file",$thumbsize);
fwrite($log,date("Y-m-d")." @ ".date("H:i:s")." CREATED: $thumbsdir/$file\n");
答案 5 :(得分:1)
我会像这样拆分它,将冗余问题搁置一边:
if (strpos($file, '.jpg',1) && file_exists("$thumbsdir/$file") == false
|| strpos($file, '.gif',1) && file_exists("$thumbsdir/$file") == false
|| strpos($file, '.png',1) && file_exists("$thumbsdir/$file") == false) {
createThumb("$gallerydir/$file", "$thumbsdir/$file",$thumbsize);
fwrite($log,date("Y-m-d")." @ ".date("H:i:s")." CREATED: $thumbsdir/$file\n");
}
@Fire Lancer's回答很好地解决了冗余问题。
答案 6 :(得分:1)
我发现以下内容更易于使用getimagesize()。我正在写这篇文章,所以可能需要一些调试。
垂直代码比水平代码更易读。
// Extract image info if possible
// Note: Error suppression is for missing file or non-image
if (@$imageInfo = getimagesize("{$thumbsdir}/{$file}")) {
// Accept the following image types
$acceptTypes = array(
IMAGETYPE_JPEG,
IMAGETYPE_GIF,
IMAGETYPE_PNG,
);
// Proceed if image format is acceptable
if (in_array($imageInfo[2], $acceptTypes)) {
//createThumb(...);
//fwrite(...);
}
}
和平+快乐的黑客攻击。
答案 7 :(得分:1)
不妨把我的两分钱扔进去。
if(!file_exists($thumbsdir . '/' . $file) && preg_match('/\.(?:jpe?g|png|gif)$/', $file)) {
createThumb($gallerydir . '/' . $file, $thumbsdir . '/' . $file, $thumbsize);
fwrite($log, date('Y-m-d @ H:i:s') . ' CREATED: ' . $thumbsdir . '/' . $file . "\n");
}