С руководство :
Все функции и классы в PHP имеют глобальную область видимости - их можно вызывать вне функции, даже если они были определены внутри, и наоборот.
Итак, по сути, вы не можете делать то, что пытаетесь сделать._metadata
всегда будет глобальной функцией, если она определена с синтаксисом function _metadata() {
.Нормальный синтаксис функции поддерживает только глобальные функции.
Однако , PHP 5.3 вводит то, что называется «анонимные функции» .Они могут быть назначены переменной.Поскольку переменные могут быть ограничены областью действия функции (они являются глобальными, если вы явно так говорите), вы можете ограничить их следующим образом.
Например:
$_metadata = function() {
// Metadata compiler
return $metadata;
};
Это можно затем вызвать в header.php
с помощью:
<?php $_metadata(); ?>
Обратите внимание, что это является менее стабильным: например, можно переопределить переменную, чтобы она быладругая анонимная функция - или вообще не функция.В конечном счете, самым безопасным решением является использование языка шаблонов, который решает эти проблемы для вас.Если нет, вы можете согласиться с тем, что вам придется использовать глобальные функции или анонимные функции.