И снова php

Тема в разделе "Thunder 3.X", создана пользователем ddn128, 10 май 2017.

  1. ddn128

    ddn128 Опытный Пользователь

    31 дек 2015
    520
    238
    Мужской
    #1 ddn128, 10 май 2017
    Последнее редактирование: 10 май 2017
    Собственно есть 2 вопроса\проблемы:

    1. есть некот. php ф-ции (или как они там называются) , которые не работают. Например

    Код:
    {% set pma = php_preg_match_all("/.+/",desc,descarray) %}
    
    и др. вариации с php_preg_match_all вызывают ошибку:

    Такое же вызывают и др. например php_require_once() (о нём как раз 2-й вопрос) и некоторые другие.
    В принципе с preg_match_all() я вопрос решил дописыванием плаг.
    Код:
    public function Reqq($file = null) {   
        require_once($file);
        return array();
        }
    ХЗ правильно или нет с точки зрения "говнокодинга" (я тот ещё спец :( ) но в принципе работает.

    Но вопрос не в этом - как-то не оч. феншуйно такие костыли дописывать на каждый чих :( . При каждом апе надо из переносить.
    Можно ли сделать какой-то 1 универс. код (по аналогии с php_ ), типо php2_

    2. В общем "методом тыка" вычислил, что в шаб можно инклюдить php файл в котором можно выполнять код и возвращать его в шаб уже обработанным, но ...

    возникает п.#1 - если прописывать php_include, то та же ашипка
    Впхнул в плаг. код

    Код:
    public function Reqq($file = null) {
       
        require_once($file);
        return array();
        }
    Чуйствую, что не всё там правильно - но робит. И вот тут возникает следующая проблема:
    В этот инклюд не передаются переменные :(
    т.е. если писать
    Код:
    {% set test = req(settings.doc_root ~ '/templates/public/'~settings.view.public.template~'/test.php') %}
    код в test.php выполнится и выведется в шабе, но передать значения в test.php не получаецца как и получить их в шаб тоже.

    если написать:
    Код:
    {% set test = req(settings.doc_root ~ '/templates/public/'~settings.view.public.template~'/test.php?param=value') %}
    то ошибка
    on line 63 - это код плагина require_once($file);
    В общем как-то так :(
    Резюме:
    как сделать универс. плаг для "ошибочных" (php_) ф-ций
    или
    как сделать (или переделать\доделать) плаг для require()
    или
    как передать параметры (массивы и переменные) в php файл (и желательно получить обратно в виде переменных массивов)
    ???

    P.S. варики с формами и инпутами не очень, т.к. они будут "светиться" в html, а это лишнее паливо

    P.P.S. небольшой лайфхак - если вы наговнокодили уже 100500 строк, то можно разнести куски кода в разные файлы и потом подключить их в "конечном"
    {% include 'code1.html' %}

    Т.е. есть шаб главной (например) в неё туева хуча кода

    Чтобы упростить читабельность можно в коде home.html написать например код задания переменных
    Код:
    {% set kwd = 'скачать '~keyword %}


    а код парсинга и\или вывода или чё хотите вынести в файл snip.html

    Код:
    {% set snippets = google_snippets(kwd,10) %}
    {% if snippets is empty %}
    {% set snippets = bing_snippets(kwd) %}
    {% elseif snippets is empty %}
    {% set snippets = vk_snippets(kwd) %}
    {% elseif snippets is empty %}
    {% set snippets = duck_snippets(kwd,'ru') %}
    {% elseif snippets is empty %}
    {% set snippets = yahoo_snippets(kwd,'ru') %}
    {% else %}  
    {% set snippets = snippets(kwd,'ru') %}
    {% endif %}
    
    <div class="content">
    <div class="container sitecontainer bgw">
    <div class="row">
    <div class="col-md-9 col-sm-12">
    {% for snip in snippets %}
    <p>{{snip.description}}</p>
    {% endfor %}
    </div></div></div></div>
    


    Получится "разгруженный" home.html:

    какой-то код ...
    {% set kwd = 'скачать '~keyword %}
    {% include 'snip.html' %}
    и дальше код ...
     
  2. amness

    amness Активный Участник

    11 апр 2016
    251
    86
    Мужской
    Код:
    {% set param = value %}
    {% set test = req(settings.doc_root ~ '/templates/public/'~settings.view.public.template~'/test.php', param) %}
    
    Код:
    public function Reqq($file = null, $param) {
    $peremennaya_v_scripte_file=$param;
    require_once($file);
    return array();
    }
    
     
    Shtrix1, Firestarter и ddn128 нравится это.
  3. ddn128

    ddn128 Опытный Пользователь

    31 дек 2015
    520
    238
    Мужской
    Адлично. Спасибо, но есть 2 пичальки
    1. массив в php не передаётся (только переменная, что логично). Можно ли как-то передать массив?
    2. обратно в шаб переменные не передаются, т.е. приходит
    ["test"]=>
    array(0) {
    }
    Оно то конечно не критично можно вывести и через echo в php. но как-то не оч. удобно, особенно если неск. переменных
    И 2 вопроса\уточнения
    1. $peremennaya_v_scripte_file=$param; - это нужно вобще? Если да, то где использ. peremennaya_v_scripte_file? Закоммент. - и робит без него
    2. чтобы передать 2 или больше переменных надо писать так? - ( public function RequireMy($file = null, $param, $param2) или можно как-то передать их оптом?
    2.1 дописал = null ($file = null, $param = null, $param2 = null) , т.к. если какая-то из переменных пустая то выводит ошибку:

    Notice: Undefined variable: param2 ...
     
  4. ddn128

    ddn128 Опытный Пользователь

    31 дек 2015
    520
    238
    Мужской
    #4 ddn128, 11 май 2017
    Последнее редактирование: 11 май 2017
    P.S. опытным путём вычислил - можно передать неск. переменных из twig в php

    Код:
    {% set param = [value, value2, value3] %}
    и в php уже разруливать по номерам, и массив twig тоже передаётся (оказалось я передавал пустой :( )
    остался только вопрос с обратной передачей. Т.е. в test
    P.P.S. йу-ху-ху
    вот так передаёт абратно

    Код:
    public function RequireMy($file = null, $param = null) {
    require_once($file);
    return $param;
    }
     
  5. amness

    amness Активный Участник

    11 апр 2016
    251
    86
    Мужской
    Не, небязательно, чисто для наглядности написал и не понятно было какой код в скрипте у тебя.
     
    ddn128 нравится это.
  6. ddn128

    ddn128 Опытный Пользователь

    31 дек 2015
    520
    238
    Мужской
    В общем вот такая "беспаливная" стата получается (без всяких счётчикофф и кодов в html) - https://drive.google.com/open?id=1K4mP5wBk1LxUn5faw1_mjN-fAOg7QjxW5Deo3U_FGoI

    P.S. домен перевернул, чтобы параники не нервничали (слыхал не раз теорию, что гугл смотрит и Онализирует таблицы :) )
     

Поделиться этой страницей