За последние 24 часа нас посетили 17742 программиста и 1658 роботов. Сейчас ищут 976 программистов ...

Heredoc и require_once

Тема в разделе "Прочие вопросы по PHP", создана пользователем rukisalat, 28 сен 2014.

  1. rukisalat

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

    С нами с:
    18 сен 2013
    Сообщения:
    39
    Симпатии:
    0
    Собственно столкнулся со странной проблемой связанной с хередоком.
    Есть два шаблона. Один отделенный от логики второй нет.
    По факту так - index.php запрашивает form.php в котором через класс запрашивается определенный шаблон tpl.

    form.php
    Код (Text):
    1. require_once ('require.php');
    2.     $req = new req();
    3.  
    4. echo <<<HTML
    5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    6. <html>
    7. <head>
    8. <div id="scroll_menu_position">
    9.    <nav><ul class="fancynav">
    10.  
    11.       {$req->MAIN_MENU()}
    12.  
    13.    </ul></nav>
    14. </div>
    15. HTML;
    require.class.php
    Код (Text):
    1. class req {
    2.    public $result;
    3.  
    4.    public function MAIN_MENU() {
    5.       $this->result = require ('menu.php');
    6.       return $this->result;
    7.    }
    menu.php
    Код (Text):
    1. <li>ITEM</li>
    2. <li>ITEM</li>
    3. <li>ITEM</li>
    4. <li>ITEM</li>
    5. <li>ITEM</li> //итд
    В результате получаю
    Код (Text):
    1. <li>ITEM</li>
    2. <li>ITEM</li>
    3. <li>ITEM</li>
    4. <li>ITEM</li>
    5. <li>ITEM</li>
    6. <div id="scroll_menu_position">
    7.    <nav><ul class="fancynav">
    8.  
    9. 1
    10.  
    11.    </ul></nav>
    12. </div>
    То есть весь контент идет мимо кассы, причем return вставляет кол куда нужно.
    Если использовать file_get_contents() то все нормально. Но мне нужно именно require, ибо шаблон проверяется defin'ом, а некоторые из них в папке имеют php'шные функции, которые тянутся аяксом, что не дает использовать Allow Deny из htaccess.

    Так в чем же собветнно косячина? На стаковере ничего дельного не посоветовали. Пробовал кучу различных вариаций, после целого дня др@#%ва как и следовало ожидать мозга кипит ужо!
     
  2. rukisalat

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

    С нами с:
    18 сен 2013
    Сообщения:
    39
    Симпатии:
    0
    Сейчас эксперементировал, понятное дело, что есть вставить шаблон из запроса напрямую в функцию класса, то он отобразиться и вставится куда нужно, но блин, у меня там такая адовая верстка. Три такие функции с html занимают сразу 3.5к строк. Хочется все такие через require решить....
     
  3. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Делаешь глупость - это факт.
    Но раз хочешь так то страдай твой выбор.

    Полистал маны сам разбирайся раз нужно, но если файл успешно подключен то require_once вернет 1. Это ты и видишь. Что бы получить html код тебе надо в menu.php сделать что типо такого

    Код (PHP):
    1. <?php
    2. return '<html>...</html>';
     
  4. rukisalat

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

    С нами с:
    18 сен 2013
    Сообщения:
    39
    Симпатии:
    0
    Смотрю на этом форуме говнари одни. Тролли и др%$^лы. Разбирусь раз нужно, нахера тогда отвечать, да еще и не дочитав вопрос?
     
  5. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Не говнори, я такого не говорил. Да твое решение не идеал а с учетом твоей адской верстки ты будешь страдать. Я тебе все расписал. Если возникнут вопросы то сперва полезь в мануалы а не на форум. Учись искать ответ и думать. Прежде чем ругаться проверил бы то что я написал. И почему ты решил что я не понял твоего вопроса?