ФорумПрограммированиеПыхнуть хотите?Готовые решения → Тестовая среда для Twig

Тестовая среда для Twig

  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 18 мая 2010 г. 20:19, спустя 13 часов 31 минуту 39 секунд

    Twig - Twig is brought to you by Fabien Potencier, the creator of the symfony framework.
    Звучит заманчиво. В дистрибутиве есть каталог test, но это модульные тесты (PHPUnit) — не совсем то, что мне хотелось погонять. А я хочу заглядывать в документацию по twig, копировать оттуда примеры шаблонов в файл и сразу же смотреть что получается.

    В итоге настроил под себя апачевские хандлеры на расширения
    .md чтобы комфортно читать доки и
    .tpl чтобы тутже оформлять и запускать шаблон
    Для шаблонов могут понадобиться данные. Я сделал папку /examples/data/ где ищутся файлы с такими же именами как шаблон, если найдено - инклудится, а нет - значит нет.

    .htaccess

    Action markdown /twig/mdhandler.php
    AddHandler markdown .md .markdown

    Action twig /twig/tplhandler.php
    AddHandler twig .tpl


    Про Markdown handler я уже писал здесь: http://pyha.ru/forum/topic/4466.msg95803
    Для собственного удобства сделал, что можно не только смотреть готовый html, но и исходники как простой текст

    _http://mysite/twig/doc/01-Introduction.markdown
    _http://mysite/twig/doc/01-Introduction.markdown?source

    _http://mysite/twig/examples/test1.tpl
    _http://mysite/twig/examples/test1.tpl?source
    _http://mysite/twig/examples/test1.tpl?data

    Хандлер tplhandler.php

    <?php

    error_reporting(-1);

    $legalExtensions = array(&#39;.tpl&#39;);

    $file = str_replace(&#39;\\&#39;, &#39;/&#39;, realpath($_SERVER[&#39;PATH_TRANSLATED&#39;]));

    if($file
       &amp;&amp; in_array(strrchr($file, &#39;.&#39;), $legalExtensions)
       &amp;&amp; substr($file,0,strlen($_SERVER[&#39;DOCUMENT_ROOT&#39;])) == $_SERVER[&#39;DOCUMENT_ROOT&#39;]) {

       // Get appropriate data (if any)
       $dataFile = &#39;./examples/data/&#39;.basename($file, &#39;.tpl&#39;).&#39;.php&#39;;
       $data = file_exists($dataFile) ? include($dataFile) : array();

       if (isset($_GET[&#39;source&#39;])) {

           header(&#39;Content-type: text/plain; charset=utf-8&#39;);
           exit(file_get_contents($file));

       } else if (isset($_GET[&#39;data&#39;])) {

           header(&#39;Content-type: text/plain; charset=utf-8&#39;);
           exit(var_export($data, TRUE));

       }

       header(&#39;Content-type: text/html; charset=utf-8&#39;);
    ?>
    <!DOCTYPE html>
    <html>
    <head>
       <link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;/twig/markdown/style.css&quot;>
       <meta name=&quot;content-type&quot; http-equiv=&quot;content-type&quot; value=&quot;text/html; utf-8&quot;>
    </head>
    <body>
    <?php

       // Initiate Twig environment
       require &#39;./lib/Twig/Autoloader.php&#39;;
       Twig_Autoloader::register();
       $loader = new Twig_Loader_Filesystem(&#39;./examples&#39;);
       $twig = new Twig_Environment($loader, array(
         &#39;cache&#39;       => &#39;./examples/cache&#39;,
         &#39;auto_reload&#39; => TRUE));

       // Load template &amp; render data
       $template = $twig->loadTemplate(basename($file));
       echo $template->render($data);

    ?>
    </body>
    </html>
    <?php

    } else {

       echo &#39;Bad filename given&#39;;

    }

    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26617 Репутация: N Группа: в ухо

    Spritz 18 мая 2010 г. 1:42, спустя 5 часов 23 минуты 10 секунд

    artoodetoo, круто чо)) вопрос - нахуй ты за это прикалываешься? про настройку апача вычитал?)
    Сапожник без сапог
  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 18 мая 2010 г. 2:16, спустя 33 минуты 5 секунд

    :) это я пытаюсь выглядеть крутым

    на самом деле все очень просто, как шар. ты меня стремаешь за простые примеры? может я себя учителем хочу представить.
    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26617 Репутация: N Группа: в ухо

    Spritz 18 мая 2010 г. 2:23, спустя 7 минут

    artoodetoo, нет, стремаю за &quot;повторение-мать учения&quot; )))))

    да нет не стремаю, просто пытаюсь понять к чему это ты пишешь)
    Сапожник без сапог
  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 18 мая 2010 г. 2:29, спустя 6 минут 44 секунды

    хз. как акын: что делаю, о том и пою.
    наверное мало спал
    ιιlllιlllι унц-унц
  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 18 мая 2010 г. 2:59, спустя 30 минут 1 секунду

    если до конца честно, я хотел убедиться насколько twig неэффективно выполняет свои цели. и, блядь, убедился. по пути мне понадобилась эта самая &quot;тестовая среда&quot;, чтобы не городить на каждый тестовый шаблон свой контроллер. не вижу причин почему этим не поделиться.

    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26617 Репутация: N Группа: в ухо

    Spritz 18 мая 2010 г. 3:02, спустя 2 минуты 48 секунд

    artoodetoo, с твигом не работал, не знаю вкус его :)

    во смотри как те такой подход? DudeCurlMulti


    $multi = new DudeCurlMulti(60);
    for($i = 1; $i<=$pages; $i++)
    {
    $url = $cat.&quot;?page=$i&quot;;
    if(!is_cached($url))
    {
    $proxy = $proxies[array_rand($proxies)];
    $multi->AddCurl(curl($cat.&quot;?page=$i&quot;, $proxy), &#39;parseCatCallback&#39;, $i, $url, $proxy);
    }
    else
    {
    parseCat(true, fetch($url), $i, $url);
    }
    }
    $multi->Process();




    function parseCatCallback(DudeCurlMulti $multi, DudeCurl $curl, $html, $i, $url,$proxy)
    {
    global $proxies;
    if(!strpos($html, &quot;http://i.li.ru/&quot;))
    {
    if(count($proxies) > 30)
    {
    unset($proxies[$proxy]);
    }

    $proxy = $proxies[array_rand($proxies)];
    $multi->AddCurl(curl($url, $proxy), &#39;parseCatCallback&#39;, $i, $url, $proxy);
    return;
    }

    $md5 = &quot;cache/&quot;.md5($url);
    file_put_contents($md5, $html);

    parseCat(false, $html, $i, $url);
    }


    многопоточный курл с каллбаками и кастом атрибутами для каллбаков =))
    Сапожник без сапог
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 18 мая 2010 г. 3:06, спустя 3 минуты 40 секунд

    МногопоточныйДудеМультиКурл!
    adw/0
  • phpdude

    Сообщения: 26617 Репутация: N Группа: в ухо

    Spritz 18 мая 2010 г. 3:09, спустя 2 минуты 54 секунды


    МногопоточныйДудеМультиКурл!
    ты бы скорость видел)
    Сапожник без сапог
  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 18 мая 2010 г. 3:11, спустя 2 минуты 47 секунд

    самый быстрый способ скачать голых тёток? )))
    лучше бы мне сделал постилку во вконтакт
    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26617 Репутация: N Группа: в ухо

    Spritz 18 мая 2010 г. 3:13, спустя 1 минуту 41 секунду

    artoodetoo, ты же вроде сказал что она не нужна уже или тп? {+++38+++}

    самый быстрый способ скачать голых тёток? )))
    лучше бы мне сделал постилку во вконтакт
    последне использование этой пушки дало мне перманент бан на яндексе меньше чем за минуту :-D

    Сапожник без сапог
  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 18 мая 2010 г. 3:16, спустя 2 минуты 40 секунд

    раньше я её хотел к конкретному делу, а теперь хочу иметь про запас ) {+++58+++} дудемультибан
    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26617 Репутация: N Группа: в ухо

    Spritz 18 мая 2010 г. 3:16, спустя 19 секунд

    artoodetoo, а)) ну вот мультикурл тоже был к конкретному делу, потом стал прозапас))
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6477 Репутация: N Группа: Джедаи

    Spritz 18 мая 2010 г. 5:12, спустя 1 час 55 минут 48 секунд

    Хочу плагин для нетбинса с поддержкой Twig&#39;а…
  • phpdude

    Сообщения: 26617 Репутация: N Группа: в ухо

    Spritz 18 мая 2010 г. 5:13, спустя 1 минуту 16 секунд


    Хочу плагин для нетбинса с поддержкой Twig&#39;а…
    напиши, в чем проблема?
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!