> Le 26 mars 2020 à 01:11, Levi Morrison via internals 
> <internals@lists.php.net> a écrit :
> 
> It's bothered me for quite some time that a failed include emits a
> warning. This is because it's by design that the author chose
> `include` and not `require`. It's _expected_ that it may fail and they
> are okay with that.
> 
> As an example, consider a classic autoloading case. It could be as
> simple and performant as:
> 
>    $file = /* something derived from class name */;
>    include $file;
> 
> But because of the warning, in practice authors tend to use
> `file_exists` + require instead:
> 
>    $file = /* something derived from class name */;
>    if (file_exists($file)) {
>        require $file;
>    }
> 
> Weird isn't it? Authors are using require instead of include for the
> case where failure is tolerated. This is a clear signal to me that
> include isn't doing its job. The warning gets in the way.
> 
> Any reasons we shouldn't just remove this warning for PHP 8?
> 

A quick look on the code base I’m taking care of, reveals that most `include` 
instructions expect that the file will be in fact included. If it isn’t, the 
error handler will be triggered and send me a bug report. (Yes I know, all 
those `include` could have been spelled `require`.)

On the other hand, in the occasional cases where I do want to include a file 
only if it exists, I wouldn’t lightheartedly remove the `file_exists()` check, 
because its presence makes the intent of the code clearer.

—Claude
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to