Remember, when using require that it is a statement, not a function. It's not necessary to write:
<?php
require('somefile.php');
?>
The following:
<?php
require 'somefile.php';
?>
Is preferred, it will prevent your peers from giving you a hard time and a trivial conversation about what require really is.require
(PHP 4, PHP 5, PHP 7, PHP 8)
require is identical to include
except upon failure it will also produce an Error
exception (E_COMPILE_ERROR level error prior to
PHP 8.0.0) whereas include will only produce a warning
(E_WARNING level error).
See the include documentation for how this works.
+add a note
User Contributed Notes 3 notes
chris at chrisstockton dot org ¶
19 years ago
Marcel Baur ¶
4 years ago
If your included file returns a value, you can get it as a result from require(), i.e.
foo.php:
<?php
return "foo";
?>
$bar = require("foo.php");
echo $bar; // equals to "foo"
jave dot web at seznam dot cz ¶
2 years ago
Always use __DIR__ to define path relative to your current __FILE__.
(Or another setting that is originally based on __DIR__/__FILE__)
try & catch - don't get confused by the words "fatal E_COMPILE_ERROR" - it's still just an internal Error that implements Throwable - it can be caught:
<?php
try {
require(__DIR__ . '/something_that_does_not_exist');
} catch (\Throwable $e) {
echo "This was caught: " . $e->getMessage();
}
echo " End of script.";
?>
Note that this will still emit a warning "Failed to open stream: No such file or directory..." ...unless you prefix the require with "@" - which I strongly don't recommend as it would ignore/supress any diagnostic error (unless you have specified set_error_handler()). But even if you'd prefix the require with "@" it would still be caught.