За последние 24 часа нас посетили 22488 программистов и 1152 робота. Сейчас ищут 610 программистов ...

Подгружение страниц в функции

Тема в разделе "Прочие вопросы по PHP", создана пользователем SeApps, 13 окт 2018.

  1. SeApps

    SeApps Новичок

    С нами с:
    3 апр 2018
    Сообщения:
    27
    Симпатии:
    1
    Добрый день!

    Я писал функцию:
    PHP:
    1.     function page($name){
    2.         require 'blocks/header.php';
    3.         require 'pages/'.$name.'Page.php';
    4.         require 'blocks/footer.php';
    5.     }
    Что она реализует, думаю, понятно.
    Проблема в том, что на самом подгружаемом шаблоне не видны переменные, которые находятся в том же файле, где я вызываю функцию.

    Я знаю, почему это происходит, мне интересно, как тут быть.
    Что делают в таких ситуациях?
     
  2. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    внутри функции видно только то что передано в нее или глобальные переменные..
     
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    @SeApps, такую структуру можно сформировать в глоб. области видимости. Или передавайте «переменные» в виде объекта или массива в ф-цию. Также можно использовать изолированную область видимости, когда переменные становятся видны через обращение к какой-нибудь ф-ции или методу.
     
    SeApps нравится это.
  4. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    не делают таких ситуаций
     
    lastdays нравится это.
  5. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @SeApps, есть такая поговорка. "Когда весь мир из двух зол выбирает меньшее, чопорные англичане выбирают... ни одного."
    Сходите в книжный магазин, купите хорошую книгу по РНР , прочтите её от корки до корки, и только после этого садитесь писать код.
     
  6. SeApps

    SeApps Новичок

    С нами с:
    3 апр 2018
    Сообщения:
    27
    Симпатии:
    1
    Это понятно, я думал можт есть какой-нить обходной путь
    --- Добавлено ---
    А laravel?) А вообще все php - фреймы? Они же как-то это реализуют
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
  8. SeApps

    SeApps Новичок

    С нами с:
    3 апр 2018
    Сообщения:
    27
    Симпатии:
    1
    Поподробнее?) Мне нужно, что бы это все вызывалось одним словом, т.е сокращалось. Функцию в глобале не сделаешь) Наверное, можно как-то положить вызовы в переменную и возвращать, но как-то мутно звучит...
     
  9. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    include/require не меняет область видимости, т.е. просто подключайте файл с содержимым, как у ф-ции.

    Что возвращать? В вашей ф-ции вы ничего не возвращаете. А если действительно нужно возвращать, в PHP поддерживается возврат «из файла».
     
  10. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @SeApps, обратите внимание на функцию extract.
    То есть, действительно можете передавать в функцию массив с ключами - именами необходимых переменных, а в функции - извлекать в собственно, переменные.
     
    SeApps нравится это.
  11. SeApps

    SeApps Новичок

    С нами с:
    3 апр 2018
    Сообщения:
    27
    Симпатии:
    1
    Спасибо! Читал книгу, тоже на ум такое решение пришло, только с помощью функции list.
     
  12. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    языковая конструкция