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

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

  • artoodetoo

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

    Spritz 18 мая 2010 г. 23: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('.tpl');

    $file = str_replace('\\', '/', realpath($_SERVER['PATH_TRANSLATED']));

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

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

       if (isset($_GET['source'])) {

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

       } else if (isset($_GET['data'])) {

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

       }

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

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

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

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

    } else {

       echo 'Bad filename given';

    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


    $multi = new DudeCurlMulti(60);
    for($i = 1; $i<=$pages; $i++)
    {
    $url = $cat."?page=$i";
    if(!is_cached($url))
    {
    $proxy = $proxies[array_rand($proxies)];
    $multi->AddCurl(curl($cat."?page=$i", $proxy), 'parseCatCallback', $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, "http://i.li.ru/"))
    {
    if(count($proxies) > 30)
    {
    unset($proxies[$proxy]);
    }

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

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

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


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

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

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

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

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

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


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

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

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

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

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

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

    artoodetoo, ты же вроде сказал что она не нужна уже или тп?
    Спустя 38 сек.

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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