include_once

(PHP 4, PHP 5)

Выражение include_once включает и выполняет указанный файл во время выполнения скрипта. Его поведение идентично выражению include, с той лишь разницей, что если код из файла уже один раз был включен, он не будет включен и выполнен повторно. Как видно из имени, он включит файл только один раз (include once).

include_once может использоваться в тех случаях, когда один и тот же файл может быть включен и выполнен более одного раза во время выполнения скрипта, в данном случае это поможет избежать проблем с переопределением функций, переменных и т.д.

Смотри документацию по include для информации как эта функция работает.

Замечание:

В PHP 4, функциональность _once отличалась в регистро-независимых операционных системах (таких как Windows), к примеру:

Пример #1 Пример include_once в регистро-независимых ОС для PHP 4

<?php
include_once "a.php"// это подключит a.php
include_once "A.php"// это подключит a.php снова! (только в PHP 4)
?>

Это поведение изменилось в PHP 5. К примеру, пути в Windows в начале нормализуются так, чтобы C:\PROGRA~1\A.php обозначало тоже самое, что и C:\Program Files\a.php, и файл подключался лишь один раз.

Коментарии

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');
}
?>
2005-05-26 10:55:47
http://php5.kiev.ua/manual/ru/function.include-once.html
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
// Change to your path

if(strpos(__FILE__,'/lib/') != FALSE){
   
chdir("..");
}
include_once (
'./lib/other_lib.inc');
// ... or any other include[_once] / require[_once]
?>

just adjust the path and it will be fine - also for your IDE.

greetings
2006-08-10 08:11:46
http://php5.kiev.ua/manual/ru/function.include-once.html
For include_once a file in every paths of application we can do simply this

include_once($_SERVER["DOCUMENT_ROOT"] . "mypath/my2ndpath/myfile.php");
2008-05-18 20:40:08
http://php5.kiev.ua/manual/ru/function.include-once.html
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'); // bool(false)
var_dump(include_once 'fakefile.ext'); // bool(true)
?>

This is because according to php the file was already included once (even though it does not exist).
2008-06-27 20:22:28
http://php5.kiev.ua/manual/ru/function.include-once.html
config.php
<?php
return array("test">1);

-------------
//first
$config = include_once("config.php");
var_dump($config);

$config = include_once("config.php");
var_dump($config);

-------------------
output will be
array(
   
"test"=>1,
)

nothing
2015-03-17 09:56:24
http://php5.kiev.ua/manual/ru/function.include-once.html
require_once() can check the file if once include ,or the file is wrong will tell a error and quit the script.
2015-08-14 06:57:12
http://php5.kiev.ua/manual/ru/function.include-once.html
Автор:
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
2017-01-24 22:16:23
http://php5.kiev.ua/manual/ru/function.include-once.html
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
2017-03-21 15:39:57
http://php5.kiev.ua/manual/ru/function.include-once.html

    Поддержать сайт на родительском проекте КГБ