У меня есть большая функция, которую я хочу загружать только тогда, когда это необходимо. Поэтому я предполагаю, что использование include - это путь. Но мне нужно несколько вспомогательных функций, которые используются только в go_do_it ().
Если они находятся во включенном файле, я получаю ошибку redeclare. Смотрите пример A
Если я помещу вспомогательные функции в include_once, он будет работать нормально, см. Пример B.
Если я использую include_once для кода func_1, второй вызов завершится неудачей.
Я не совсем понимаю, почему include_once вызывает сбой функции при втором вызове, он, похоже, не «видит» код во второй раз, но если присутствуют вложенные функции, он «видит» их.
Пример A:
<?php
/* main.php */
go_do_it();
go_do_it();
function go_do_it(){
include 'func_1.php';
}
?>
<?php
/* func_1.php */
echo '<br>Doing it';
nested_func()
function nested_func(){
echo ' in nest';
}
?>
Пример Б:
<?php
/* main.php */
go_do_it();
go_do_it();
function go_do_it(){
include_once 'func_2.php';
include 'func_1.php';
}
?>
<?php
/* func_1.php */
echo '<br> - doing it';
nested_func();
?>
<?php
/* func_2.php */
function nested_func(){
echo ' in nest';
}
?>