Пишем свой шаблонизатор - для новичков

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Пишем свой шаблонизатор - для новичков

      Наглядно с подробным описанием готовлю материал по созданию своего шаблонизатора, заодно поймете как подключать twig + поймете логику с нуля как работает любой проект на php+ script+TPL, что такое контролеры и зависимости 1 урок создание структуры игры и первого контролера + зависимости, урок уже готовлю, отпишитесь пока вижу в двух вариантах на видео + готовый файл с подробным описанием.. Пишите в каком виде вам подать материал для новичков.. Попозже выложу структуру проекта по полочкам и начну готовить материал.. p.s Огромное спасибо mimikri то что создал топик свободное пространство.. Сегодня выложу структуру проекта и подготовлюсь материал на видео и в, тексте для первого урока

      The post was edited 2 times, last by DenPUBG ().

    • структура на начальном этапе , остальное создадим в процессе, тут просто создадим шаблонизатор и начальную структуру.. Внимание! Папки vendor, composer, file composer.php не создаем. Это следующий урок , пока подготовим для инсталляции ряд папок и файлов. А эти папки сделаем через обычную консоль набрав команды, постараюсь сегодня урок выложить, для новичком расширить понимание как работает шаблонизатор, я буду писать свой, но примерно такой же как структура twig, плюс добавим модульную систему и контролеры , так как я пишу свой ..этот как пример для понимания..все дополнительные модули будут через инсталяцию.. Задача запустить шаблонизатор вернее для начала подключить автозагрузку зависимостей и понять как это работает+ создать контролер..скажем вывод зданий + вывести все здания с базы данных, а дальше сами :) по такому же принципу..



      1. ДОМЕН
      ADM_CENTER
      CONTENT +
      plugins +
      themes
      ENGINE +
      core
      service
      config
      DI
      di.php /*зависимости dependency injector*/
      general.php
      games. php
      error.php
      VENDOR+ /*не создаем , создадим через консоль тут проинсталируем файлы через рептезорий автоматически*/
      index. php
      composer.json /*так же не создаем */

      The post was edited 12 times, last by DenPUBG ().

    • PHP Source Code: di.php

      1. <?php
      2. namespace engine\di
      3. class di{
      4. private $container = [];
      5. public function set($key,$value){
      6. $this->container($key=$value)
      7. return $this;
      8. }
      9. public function get($key){
      10. return $this->has[$key];
      11. }
      12. public function has($key){
      13. return isset ($this->container($key=$value);
      14. }
      15. }
      Display All
      на данный момент мы создали зависимости, в дальнейшем дополнительные проверками, пока достаточно этого отрезка кода..
      очень не удобно конечно с телефона писать, приеду с командировки поправлю все..
      namespace - пространство имен позволяет избегать использования include в дальнейшем к примеру простой вариант подключить класс будет выглядеть так..здесь как пример - use engine\di\games. Система автоматически подключит зависимость то есть файл games.php

      The post was edited 1 time, last by DenPUBG ().

    • PHP Source Code: games.php

      1. <?php
      2. namespace engine;
      3. class games {
      4. private $di;
      5. public function _construction($di)
      6. {
      7. this->$di=($di);
      8. }
      9. public function (run)
      10. {
      11. }
      12. }
      Display All
      тут мы создали конструктор и функцию запуска зависимости. В дальнейшем его дополним , пока хватит так, будут вопросы по встроеным командам php спрашивайте, пока лень описывать, позже все распишу к каждому файлу

      The post was edited 1 time, last by DenPUBG ().

    • Source Code: error.php

      1. <!php
      2. use engine\games;
      3. use engine\di\di;
      4. try{
      5. $di = new di();
      6. $games = new games($di);
      7. $games -> run();
      8. }catch (\ErrorExtension $e) {
      9. echo $e->getMessage();
      10. }
      тут мы создаем вывод ошибок + впервые используем не include, а через зависимость обращается к файлам, получаем аргументы через зависимость и выводим.. Потом ошибки когда создадим базу настроим так что бы было видно лишь разработчику

      The post was edited 2 times, last by DenPUBG ().

    • теперь создаем composer
      1) переходим в проводнике в корневую деррикторию проекта и открываем консоль через контекстное меню
      2) в терминале пишем - composer init жмем enter и попадаем в корень проекта для конфигурации файла
      3) все пропускаем..пока не чего лишнего не нужно до момента

      do you confirm generator ,соглашаемся пишем yes...все папки которые я говорил и файл создадуться автоматически.
      Теперь инсталируем - пишем composer install
      После пишем в composer.php
      в файле он появится в корне проекта, после "ingine " Строчкой ниже

      "autoload ": {
      "psr-4":{
      "engine" : \\ "engine",
      "engine" :\\di\\ "engine/di"
      }
      }
      Мы создали автозагразку , далее идем опять в терминал и прописать composer update
      На сегодня хватит. как создадите что я написал, внесем поправки в файлах composer что бы он выполнял автозагрузку зависимостей, потом напишем класс для TPL , по работаем с базой , сделаем регистрацию ну и ради эксперемента выведем постройки.. А дальше дерзайте, кто новичек надеюсь облегчит понимание логики построения, это кстати классический подход к построеню своего кода.. Да вместо smarty я буду использовать упрощенный вариант шаблонизатора twig и мы его напишем сами потому что в полном объеме он нафиг не нужен - его функция это выполнять вместо компилятора правила для шаблонов, где вы можете обозвать как угодно эти файлы вроде - TPL, ME, SPACE, TWIG то есть если вам так захочется , ну и сделаем экранирование, то есть песочницу для шаблонов.. Остальное с twig нам не чего пока не нужно.. Шаблонизатор должен быть легким и не громоздким не чего лишнего что нам не нужно будет.

      The post was edited 5 times, last by DenPUBG ().

    • далее ползем в файл error.php
      И подключаем composer
      В самом верху после <? php пишем
      require_once _DIR_ .'/../vendor/autoload.php';

      далее открываем файл index.php
      И пишем
      <?php
      require_once 'engine/autoload.php';
      Если правильно все создали ошибок не будет.. открываем адрес сайта, я делал на open server вот и все начало создано... ошибок не должно быть, если есть то , или я с телефона ошибся, или вы, приеду с командировки перепроверю.. Далее напишем классы и правила, но как я объяснил с телефона это та еще задача
    • в этом уроке (готовлю) создаем роутер и контролер для базы данных, кстати будет не совсем чистое pdo, потому что оно тормознее чем обычное и просто распиаренное, а так просто тупо мост по обращению к разным типам данных и при помощи SQLmap ломается так же быстро.. поэтому напишем свои правила более удобные и Экранированные плюс скорость