За последние 24 часа нас посетили 17538 программистов и 1580 роботов. Сейчас ищут 1413 программистов ...

Dirk - еще один шаблонизатор на PHP

Тема в разделе "Решения, алгоритмы", создана пользователем artoodetoo, 19 фев 2015.

  1. RuEagle

    RuEagle Новичок

    С нами с:
    24 фев 2015
    Сообщения:
    1
    Симпатии:
    0
    Я бы еще добавил __set __get
    что бы избавиться от compact() и писать сразу
    $view->name = '<artoodetoo>';
    $view->list = [1, 2, 3, 4, 5];
    $view->render('hello');
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    Дело вкуса. Мне такой подход не нравится. На мой взгляд ничего кроме лишних букв не добавляется.

    Кроме того, придется как-то избегать пересечения этих имен с реальными переменными объекта $view.

    Добавлено немного спустя:
    Могу предложить магию иного рода. Избавляемся от необходимости делать $view = new Dirk() в каждом экшене каждого контроллера. Вместо этого создадим вреппер-метод в родительском контроллере:
    Код (PHP):
    1. class BaseController
    2. {
    3.   protected function render($name)
    4.   {
    5.       $view = new Dirk(параметры); // единственное место где инстанциируется вьюха
    6.       $view->render($name, get_object_vars($this)); // просто используем поля самого контроллера!
    7.   }
    8. } 
    и в конкретном контроллере
    Код (PHP):
    1. class UserController extends BaseController
    2. {
    3.   public function getIndex()
    4.   {
    5.     $this->name = '<artoodetoo>';
    6.     $this->list = [1,2,3,4,5];
    7.     $this->render('hello');
    8.   }
    9.   
    10.   public function getItem($id)
    11.   {
    12.     ...
    13.     $this->render('item');
    14.   }
    15. } 
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    Внезапно обнаружил, что в новом пятом ларавеле тег {{ }} стал по умолчанию эскейпить строку. Теперь в blade три варианта эхо:

    {{{ }}} эскейп. тег есть, но в доке упоминание о нём пропало.

    {{ }} скорее всего эскейп (если специально не переопределено) и

    {!! !!} точно без эскейпа

    вот так вот взяли и забили на обратную совместимость. зачем?!
    пользователи PHPStorm должны возмутиться, т.к. новый синтаксис не поддерживается в IDE.
     
  4. MiksIr

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

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Ну мажорные версии могут без проблем поломать bc, на то и мажорные.
    А дело это правильное - эскейпинг по умолчанию, ибо это, считай, самое главное преимущество перед чистым PHP.
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    Категорически не согласен.

    Написал много текста, потом передумал. Мне почти пофигу, пусть автор Laravel дрочит как хочет.

    Мне в каких-то моментах придется идти своим путем, но с эхо-тегами я повторю как в пятой лярве.
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    Сделал три ехотага как в laravel 5. Добавил тесты.
     
  7. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Какой день хочу попробовать, но не могу найти подходящую причину: в том что пилю сейчас уже есть блейд и пока ничего другого нет даже в планах. Тут нужен небольшой проект, на который нет смысла тянуть фреймворк. У них есть свойство разрастаться и за возможность мигрировать без лишних заморочек шаблоны на ларку тебе просто адский плюс ))

    Посему ещё пожелание в целях сохранения совместимости: добавить как опцию переключалку на экранирование 4 версии.

    з.ы. увидел, что настраивается в конфиге. мб его тоже в ридми добавить? )