Re: Removing warning for failed include

From: Date: Thu, 26 Mar 2020 01:52:27 +0000
Subject: Re: Removing warning for failed include
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-109317@lists.php.net to get a copy of this message
> 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

« previous php.internals (#109317) next »