include_once
(PHP 4, PHP 5, PHP 7, PHP 8)
La sentencia include_once
incluye y evalúa
el fichero especificado durante la ejecución del script.
Tiene un comportamiento similar al de la sentencia include,
siendo la única diferencia de que si el código del fichero ya ha
sido incluido, no se volverá a incluir, e include_once devolverá true
. Como su nombre indica,
el fichero será incluido solamente una vez.
include_once
se puede utilizar en casos donde
el mismo fichero podría ser incluido y evaluado más de una vez durante una
ejecución particular de un script, así que en este caso, puede ser de ayuda para evitar
problemas como la redefinición de funciones, reasignación de valores de variables, etc.
Véase la documentación de include para más información sobre
cómo funciona esta función.
Greg McCarthy ¶7 years ago
In response to what a user wrote 8 years ago regarding include_once being ran two times in a row on a non-existent file:
Perhaps 8 years ago that was the case, however I have tested in PHP 5.6, and I get this:
$result = include_once 'fakefile.php'; // $result = false
$result = include_once 'fakefile.php' // $result is still false
roach dot scott+spam at googlemail dot com ¶16 years ago
If you include a file that does not exist with include_once, the return result will be false.
If you try to include that same file again with include_once the return value will be true.
Example:
<?php
var_dump(include_once 'fakefile.ext'); var_dump(include_once 'fakefile.ext'); ?>
This is because according to php the file was already included once (even though it does not exist).
Ben F ¶4 years ago
This currently (running latest PHP 7.4 NTS as of this writing, on Windows) returns as expected... false no matter how many times you include an inaccessible file, true if you include it more than once.
mho ¶5 years ago
once i wrote script to include multiple files at once from a given location:
function include_load($path)
{
foreach(glob($path . "/*.php") as $file)
include_once($file);
}
last week i modified my code and merged all include files into one single file. this results in five times faster code. i have to mention, i am talking about +100 files to include where each file includes single function and filename is equal to function-name.
xcl_rockman at qq dot com ¶9 years ago
config.php
<?php
return array("test">1);
-------------
$config = include_once("config.php");
var_dump($config);
$config = include_once("config.php");
var_dump($config);
-------------------
output will be
array(
"test"=>1,
)
nothing
sascha dot diebel at gmail dot com ¶7 years ago
i tried
-------------------------------- index.php:
$out='todo 1';
include 'file1.php';
$out='todo 2';
include 'file1.php';
echo 'end';
-------------------------------- file1.php:
include_once 'file2.php';
if(isset($out)){
echo $out;
}
-------------------------------- file2.php:
$out='first todo once';
include 'file.php';
the output is:
first todo once
first todo once
todo 2
what should i do?
if i would replace in file2.php include with include_once, then i have following output:
first todo once
todo 2
i could write
$out='first todo once';
include 'file1.php'
$out='todo 1';
include 'file1.php';
$out='todo 2';
include 'file1.php';
but i don't want :-)
please help
flobee at gmail dot com ¶19 years ago
i already had a discussion with several people about "not shown errors"
error reporting and all others in php.ini set to: "show errors" to find problems:
the answer i finally found:
if you have an "@include..." instead of "include..." or "require..('somthing') in any place in your code
all following errors are not shown too!!!
so, this is actually a bad idea when developing because paser errors will be droped too:
<?php
if(!@include_once('./somthing') ) {
echo 'can not include';
}
?>
solution:
<?php
if(!@file_exists('./somthing') ) {
echo 'can not include';
} else {
include('./something');
}
?>
webmaster AT domaene - kempten DOT de ¶18 years ago
Since I like to reuse a lot of code it came handy to me to begin some sort of library that I stored in a subdir
e.g. "lib"
The only thing that bothered me for some time was that although everything worked all IDEs reported during editing
these useless warnings "file not found" when library files included other library files, since my path were given all relative to the corresponding document-root.
Here is a short workaround that makes that gone:
<?php
if(strpos(__FILE__,'/lib/') != FALSE){
chdir("..");
}
include_once ('./lib/other_lib.inc');
?>
just adjust the path and it will be fine - also for your IDE.
greetings
1083706899 at qq dot com ¶9 years ago
require_once() can check the file if once include ,or the file is wrong will tell a error and quit the script.
emanuele at rogledi dot com ¶16 years ago
For include_once a file in every paths of application we can do simply this
include_once($_SERVER["DOCUMENT_ROOT"] . "mypath/my2ndpath/myfile.php");