ФорумПрограммированиеPHP для идиотов → Шаблонизатор Miranda - новый проект

Шаблонизатор Miranda - новый проект

  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz Июль 28, 2012, 6:27 п.п.

    Здравствуйте, форумчане!
    Потратил несколько дней и написал шаблонизатор на подобии того, что есть в фреймворке Laravel. Описание постарался составить как можно шире и понятнее. Обзор продлился на 3 страницы, вместе с примерами работы. Получилась небольшая документация. Ставить тут 3 страницы обзора не прилично :) так что скину ссылки по частям с примерами кода

    -> Скачать сам шаблонизатор: скачать
    Часть 1: Сам код шаблонизатора, несколько примеров работы
    Часть 2: Работа с TPL файлами, циклы for, foreach, while условия if / else / elseif
    Часть 3: Разделение шаблонов на блоки, подключения файлов шаблона

    Несколько примеров:
    <?php
    header('Content-Type: text/html; charset=utf-8');
    include_once('libs/Miranda.php');

    $Miranda = new Miranda;
    $Miranda->template_engine = 'Miranda';
    $Miranda->month = array(
    'january' => 'Январь',
    'february' => 'Февраль',
    'march' => 'Март'
    );

    echo $Miranda->make('main');
    ?>


    Файл main.tpl
    Привет от шаблонизатора {{ $template_engine }}<br />

    Первые три месяца года: <br />
    @begin foreach($month as $english => $russian)
    English: {{ $english }} в руском: {{ $russian }}<br />
    @end

    <hr>

    @begin if($month['january'] != 'Январь')
    Первым месяцом является январь!
    @else
    Все правильно
    @end

    <hr>

    @begin for($n=0; $n<=10; $n++)
    Номер: {{ $n }}
    @end

    <hr>

    Подключаем файл some.tpl из папки templates / users / @include(users.some)

    <hr>


    После искусственной компиляции новый файл будет создан в папку templates / compiled / main.php
    Его Содержимое
    <?php # lastedit[1343485073] ?>
    Привет от шаблонизатора <?php echo $template_engine; ?><br />

    Первые три месяца года: <br />
    <?php foreach($month as $english => $russian) { ?>
    English: <?php echo $english; ?> в руском: <?php echo $russian; ?><br />
    <?php } ?>

    <hr>

    <?php if($month['january'] != 'Январь') { ?>
    Первым месяцом является январь!
    <?php } else { ?>
    Все правильно
    <?php } ?>

    <hr>

    <?php for($n=0; $n<=10; $n++) { ?>
    Номер: <?php echo $n; ?>
    <?php } ?>

    <hr>

    Подключаем файл some.tpl из папки templates / users / <?php $this->attach('users.some'); ?>

    <hr>


    Мне нужно услышать ваше мнение, как сделать иначе некие методы или что нужно переделать.
    Шаблонизатор в Бета-тесте
    Спустя 181 сек.
    Ошибка с ссылкой скачивания. Скачать шаблонизатор
  • Troy

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

    Spritz Июль 28, 2012, 6:34 п.п., спустя 7 минут 2 секунды

    На гитхаб хотя бы залей, так же никто и не посмотрит.
  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz Июль 28, 2012, 6:38 п.п., спустя 4 минуты

    Troy, В первой части обзора есть весь код шаблонизатора. Там один файл Miranda.php
    Спустя 66 сек.
    Могу его и тут добавить но в связи с тем, что редактировать сообщения нельзя код потеряет актуальность с приходом новых изменении в классе.
  • adwo

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

    Spritz Июль 28, 2012, 7 п.п., спустя 21 минуту 54 секунды

    Могу его и тут добавить но в связи с тем, что редактировать сообщения нельзя код потеряет актуальность с приходом новых изменении в классе.

    На гитхаб хотя бы залей

  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz Июль 28, 2012, 8:09 п.п., спустя 1 час 9 минут 10 секунд

    Вот исходный код шаблонизатора Miranda
    http://mowshon.ru/uploads/miranda/code.html
  • Troy

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

    Spritz Июль 28, 2012, 8:27 п.п., спустя 17 минут 45 секунд


    На гитхаб хотя бы залей, так же никто и не посмотрит.
  • adw0rd

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

    Spritz Июль 28, 2012, 9:34 п.п., спустя 1 час 7 минут 22 секунды



    На гитхаб хотя бы залей, так же никто и не посмотрит.

    +1
    Спустя 44 сек.
    $Miranda = new Miranda;
    $Miranda->template_engine = 'Miranda';


    Зачем engine передавать, если мы и так юзаем инстанс от Miranda?
    Спустя 150 сек.
    И зачем "@begin"? Почему не просто "@for", "@if", "@foreach"?
    Спустя 197 сек.
    моменты опушены
    лучше не моменты, а шаблонизатор запушай на гитхаб (http://mowshon.ru/about)
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz Июль 28, 2012, 9:36 п.п., спустя 1 минуту 45 секунд

    adw0rd, так создается переменное с видимостью только в файл шаблона.

    Можно было слетать и так
    echo $Miranda->make('main', array(
    'template_engine' => 'Miranda',
    'another_var' => 'value'
    ));


    main.tpl
    Привет от шаблонизатора {{ $template_engine }} - {{ $another_var }}<br /> 
  • adw0rd

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

    Spritz Июль 28, 2012, 9:42 п.п., спустя 5 минут 31 секунду

    Нормальный простенький шаблонизатор, до Django/Jinja2 конечно далеко
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz Июль 28, 2012, 9:52 п.п., спустя 10 минут 2 секунды

    adw0rd
    И зачем "@begin"? Почему не просто "@for", "@if", "@foreach"?

    Я решил сделать так по логики цепочки @begin, @end использовать для более внятного представления блоков, где они начинаются и где заканчиваются. Да и просто @function решил оставить для будущий расширений самого шаблонизатора (сейчас есть @end, @section, @view_section, @layout ).
  • artoodetoo

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

    Spritz Июль 29, 2012, 6:19 д.п., спустя 8 часов 27 минут 22 секунды

    ты написал "искуственная компиляция". это значит на лету он в php не переводится, только вручную?
    ιιlllιlllι унц-унц
  • Абырвалг

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

    Spritz Июль 29, 2012, 11:54 д.п., спустя 5 часов 34 минуты 58 секунд

    у меня лишь только один вопрос есть. Всего один. Чем это лучше twig?
  • phpdude

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

    Spritz Июль 30, 2012, 12:52 п.п., спустя 1 день 58 минут

    лол.
    Сапожник без сапог
  • Troy

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

    Spritz Июль 30, 2012, 9:29 п.п., спустя 8 часов 36 минут 26 секунд

    Не тролль, да не затроллен будешь (с)

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