Возникла ситуация, когда нужно сделать красиво, инклюдить файлы сразу с проверкой пути к файлу, что бы сократить код в других местах. Может кому-то пригодится.
Вызывается одним действием _file_include($path) или $this->_file_include($path) для класса
Метод 1. Используется переменная $GLOBALS. Можно задать ключ, например $GLOBALS['custom_variables'] для упрощения доступа к внутренним переменным.
function _file_include($path) {
if (!file_exists($path)) {
return false;
}
include_once($path);
unset($path);
if (!get_defined_vars()) {
return;
}
$GLOBALS[] = array_merge($GLOBALS, get_defined_vars());
}
Метод 2 использует возврат в переменную в которую вызывается функция.
function _file_include($path) {
if (!file_exists($path)) {
return false;
}
include_once($path);
unset($path);
if (!get_defined_vars()) {
return;
}
return get_defined_vars();
}
$variables = _file_include($path);
Метод 3 используется только внутри класса
protected function _file_include($path) {
if (!file_exists($path)) {
return false;
}
include_once($path);
unset($path);
if (!get_defined_vars()) {
return;
}
foreach(get_defined_vars() as $key => $value) {
$this->{$key} = $value;
}
}