Добрый день! Я писал функцию: PHP: function page($name){ require 'blocks/header.php'; require 'pages/'.$name.'Page.php'; require 'blocks/footer.php'; } Что она реализует, думаю, понятно. Проблема в том, что на самом подгружаемом шаблоне не видны переменные, которые находятся в том же файле, где я вызываю функцию. Я знаю, почему это происходит, мне интересно, как тут быть. Что делают в таких ситуациях?
@SeApps, такую структуру можно сформировать в глоб. области видимости. Или передавайте «переменные» в виде объекта или массива в ф-цию. Также можно использовать изолированную область видимости, когда переменные становятся видны через обращение к какой-нибудь ф-ции или методу.
@SeApps, есть такая поговорка. "Когда весь мир из двух зол выбирает меньшее, чопорные англичане выбирают... ни одного." Сходите в книжный магазин, купите хорошую книгу по РНР , прочтите её от корки до корки, и только после этого садитесь писать код.
Это понятно, я думал можт есть какой-нить обходной путь --- Добавлено --- А laravel?) А вообще все php - фреймы? Они же как-то это реализуют
Используют пространства имен, либо называется все ООП. https://github.com/MouseZver/My-garbage-code/tree/master/php.ru/67269
Поподробнее?) Мне нужно, что бы это все вызывалось одним словом, т.е сокращалось. Функцию в глобале не сделаешь) Наверное, можно как-то положить вызовы в переменную и возвращать, но как-то мутно звучит...
include/require не меняет область видимости, т.е. просто подключайте файл с содержимым, как у ф-ции. Что возвращать? В вашей ф-ции вы ничего не возвращаете. А если действительно нужно возвращать, в PHP поддерживается возврат «из файла».
@SeApps, обратите внимание на функцию extract. То есть, действительно можете передавать в функцию массив с ключами - именами необходимых переменных, а в функции - извлекать в собственно, переменные.