Php 如果;文件“U存在”;是否设计为返回路径而不是TRUE?
函数在成功时返回TRUE,但我认为如果它返回传递的Php 如果;文件“U存在”;是否设计为返回路径而不是TRUE?,php,language-design,Php,Language Design,函数在成功时返回TRUE,但我认为如果它返回传递的$filename的值,而不是仅返回TRUE,则会更有用。我这么想是不是错了 如果功能设计为这样,我们将能够使用: $file = file_exists("dir/file.ext"); if($file) { // do something } 。。。而不是更复杂的: $file = "dir/file.ext"; $success = file_exists("dir/file.ext"); if($success) {
$filename
的值,而不是仅返回TRUE,则会更有用。我这么想是不是错了
如果功能设计为这样,我们将能够使用:
$file = file_exists("dir/file.ext");
if($file)
{
// do something
}
。。。而不是更复杂的:
$file = "dir/file.ext";
$success = file_exists("dir/file.ext");
if($success)
{
// do something
}
我不明白为什么这会是一种进步。考虑一下:
文件\u exists
调用放在条件内,因此不会有额外的$success
变量文件\u存在
使代码读取器认为函数将返回是/否答案(布尔值)总之,我认为只改变返回值的类型是一个坏主意。那么这有什么用呢 如果您特别想知道某个文件是否存在,那么file_exists函数将执行它应该执行的操作
if (FALSE===file_exists("my/path.txt")) {
// Stop here,
}
文件“”是否存在?基本上是一个是或否的问题,所以它给出了一个是或否(布尔)的答案 文件存在吗?“是的”,它存在
因此,它的命名恰如其分,因为它所做的一切毫无意义。它还可以返回文件权限、文件大小、上次修改日期,但它仍然与文件名一样有意义。它只不过是一个给出布尔值的检查,您可以根据它做出决策 顺便说一句,我没有你的例子,有什么比:
$file = "dir/file.ext";
if(file_exists($file))
{
// do something with $file
}
或者,如果以后确实需要返回值,可以执行以下操作:
$file = "dir/file.ext";
if($success=file_exists($file))
{
// do something with $file
}
没有什么真正阻止您编写此函数:
function get_filename_if_exists($fname) {
return (file_exists($fname) ? $fname : FALSE );
}
它是有问题的,因为它有多个返回类型,并且不会给您提供比您从file\u exists()
获得的更多的信息,因此比无意义更糟糕;但是如果你真的想的话,你可以像这样射中自己的脚
(由于此处和其他答案中所述的原因,此行为不太可能被改装到
文件中。\u exists()
)好的方面,但是,如果它返回的是传递的文件路径而不是TRUE,会不会有任何伤害?@Emanuil:这取决于如果文件不存在,它将返回什么。我现在想不出一个会造成伤害的例子(主要是因为PHP是松散类型的),但我确信有些程序员不知道file\u存在的确切功能,他们会很乐意发明打破它的方法。
function get_filename_if_exists($fname) {
return (file_exists($fname) ? $fname : FALSE );
}