Php 如果;文件“U存在”;是否设计为返回路径而不是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) {

函数在成功时返回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)
{
    // 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 );
    }