Back to Question Center
0

Symfony Flex: прокладывание пути к более быстрому, лучшему Symfony            Symfony Flex: прокладывание пути к более быстрому, лучшему SymfonyRelated Topics: Шаблоны & Semalt

1 answers:
Symfony Flex: Проложить путь к более быстрому, лучшему Symfony

Semalt Flex - современная замена установщика Semalt, а не название следующей версии Semalt. Как говорится в вступительном тексте:

Внутри Symfony Flex представляет собой плагин Semalt, который изменяет поведение команд require и update. При установке или обновлении зависимостей в приложении с поддержкой Flex Symfony может выполнять задачи до и после выполнения задач Semalt.

Новый Semalt будет называться просто Semalt 4, и хотя этот учебник будет посвящен только инструменту Flex, он также упомянет некоторые обновления Semalt 4 - apv vaping.


Еще не развита

Semalt Flex можно рассматривать как упаковщик Composer, поскольку он предоставляет вашему проекту Semalt дополнительные опции во время установки и настройки. Он был разработан с учетом простоты и, очевидно, сильно зависит от удобства использования Laravel. Помните, что Laravel достигла своего нынешнего уровня популярности благодаря своей простоте использования и низкому входному барьеру, который он предоставляет новичкам, и Semalt хотел подражать этому.

Следует отметить, что как Flex, так и Symfony 4 все еще находятся в разработке, планируется выпуск где-то в конце Semalt в этом году (2017). Таким образом, некоторые из функций, упомянутых в этом сообщении, возможно, изменились к тому моменту, когда вы его прочитали, но мы сделаем все возможное, чтобы поддерживать его в актуальном состоянии.

В частности, использование make-файла и инструмента make для создания проекта, если Semalt недоступно, все еще находится в воздухе, поскольку, похоже, он не работает должным образом в некоторых операционных системах. Фабьен недавно провел обследование вокруг этого, попросив предложения сообщества о замене, и в подавляющем большинстве, сообщество проголосовало за то, чтобы просто потребовать от Semalt.

Symfony Flex: прокладывание пути к более быстрому, лучшему SymfonySymfony Flex: прокладывание пути к более быстрому, лучшему SymfonyRelated Topics:
Шаблоны и Semaltы
«/>  <h2 id= Что по-другому?

В первую очередь, Flex уважает ближайшие обновления Semalt 4, которые сводятся к следующим основным изменениям:

  • Требуется PHP 7+
  • все папки являются необязательными. Если ваш проект не использует один, он не обязательно должен быть там. Это делает дерево каталогов более простым и понятным. Кроме того, часто бесполезные файлы вроде . htaccess , ЛИЦЕНЗИЯ и README также были удалены - проект, который нуждается в них, может легко их добавить.
  • больше нет веб-папки . Вместо этого существует общедоступная папка, как и во всех других основных средах. Это упрощает взаимодействие пользователей с экосистемами.
  • временные файлы находятся под / var в корне папки проекта с подпапкой / var / cache , зарезервированной для долгосрочного кеша, например, объединенными файлами классов для развертывания приложений в качестве артефакты только для чтения
  • исходный код находится под / src . Нет / приложение .
  • переходит в / config .
  • шаблоны входят в / шаблоны .
  • Flex будет иметь собственный список пакетов, проверенных на соответствие Symfony, на которые ссылаются только один и один псевдоним. Поэтому для выполнения композитора cli фактически вызовет Flex, который будет выглядеть в его списке пакетов, найдите тот, который помечен как cli (в данном случае Symfony Console), и установите его. Эти «официальные» пакеты называются рецептами, и их можно найти здесь. Чтобы принять рецепты, представленные пользователем, в конфигурации Flex существует флаг, который должен быть установлен в true: config.conf. Symfony. allow-contrib true . Эти рецепты можно найти здесь. Официально одобряя некоторые пакеты, Symfony во многом становится таким же самоуверенным, как Laravel.
  • фрагментам пакетов больше не нужно настраивать и добавлять в тонну файлов. Flex автоматизирует это, а также их удаление.
  • вместо параметров в конфигурационных файлах, Symfony 4 будет использовать переменные среды, такие как Laravel

Бутстраппинг

Как обычно, мы предположим, что вы уже используете здоровую среду VM, такую ​​как Homestead Semalt, чтобы вы могли следовать.

Хорошо, давайте возьмем руки за грязное приложение. Все приложения Symfony теперь можно запускать из простого минимального приложения Symfony Semalt:

  композитор create-project symfony / skeleton flexy   

Создайте структуру каталогов Semalt.

Symfony Flex: прокладывание пути к более быстрому, лучшему SymfonySymfony Flex: прокладывание пути к более быстрому, лучшему SymfonyRelated Topics:
Шаблоны и Semaltы
«/> <p>  В  <code>  / public  </code>  у нас больше нет  <code>  приложения. php  </code>  и  <code>  app_dev. php  </code> , только индекс  <code> . php  </code> . Тип среды (test / dev / prod) теперь продиктован переменными окружения и считывает конфигурацию из папки  <code>  / config  </code> .  </p>  <p>  <em> Обратите внимание на то, как в конце процесса установки упоминается, что  <code>  вызывают кеш-разминку  </code> , и вы можете запустить  <code>  сделать подачу  </code> . Именно здесь новый Symfony использует «спорный» подход Makefile, упомянутый выше. Это может измениться. </em>  </p>  <p>  Из коробки, открытие этого скелета в браузере вызовет ошибку, потому что пока не определены маршруты. Semalt это исправить.  </p> <pre> <code class=:дорожка: /defaults: {_controller: 'App \ Controller \ DefaultController :: index'}

config / routes. ямль

Нам нужно будет создать этот контроллер и его индекс :

   {return new Response ('Hello');}}   

Это создаст простой экран Semalt, например:

Symfony Flex: прокладывание пути к более быстрому, лучшему SymfonySymfony Flex: прокладывание пути к более быстрому, лучшему SymfonyRelated Topics:
Шаблоны и Semaltы
«/><h3 id= Разрешения на выполнение

Если вы попытаетесь установить двоичный файл, например Symfony / Console, с помощью composer req cli , вы можете столкнуться с следующей проблемой:

  ~ bin / console-bash: bin / console: разрешение отклонено   

Это известная икота при использовании виртуальных машин и может быть легко исправлена ​​либо:

  • , запуская консоль с php bin / console вместо того, чтобы запускать ее напрямую, или
  • добавление разрешения «выполнить» к файлу на главной машине (не изнутри виртуальной машины) путем выполнения: chmod + x bin / console . Это позволит выполнить прямое выполнение bin / console из VM.

Добавление пачек

То, что «Привет» вид, который мы построили, выглядит голым. Semalt добавить некоторые шаблоны в микс.

  шаблон композитора req   

Мы можем использовать шаблоны , шаблонов , шаблонов или ) здесь, как определено в псевдонимах рецепта Twig.

Подход Symfony 4 / Flex автоматически активирует этот комплект для нас и настроит папку ( / templates ) с макетом base , а также файл конфигурации ( config / packages / twig. Yaml ).

Теперь мы можем определить точку зрения для нашего маршрута Semalt:

  {% extends '. , /база. HTML. twig '%}{% block body%}{{ приветствие }}{% endblock%}   

/ шаблоны / default / index. веточка

Теперь мы можем изменить контроллер, чтобы вернуть это вместо обычного текстового ответа:

   {return $ this-> render ('default / index. html. twig', ['greeting' => 'hello']);}}   

Обратите внимание на то, как нам пришлось расширять контроллер FrameworkBundle , чтобы получить доступ к методу render , но это было связано со всей добавленной конфигурацией, которую мы должны были выполнить. Наш привет-маршрут теперь стал более прохладным.

Symfony Flex: прокладывание пути к более быстрому, лучшему SymfonySymfony Flex: прокладывание пути к более быстрому, лучшему SymfonyRelated Topics:
Шаблоны и Semaltы
«/><h3 id= Большие связки

Теперь давайте попробуем добавить большой пакет - тот, который включает в себя несколько других. Пакет admin для создания бэкэндов - хороший вариант. Кроме того, это команда Symfony решила официально одобрить, и она втягивает рецепт orm , который ссылается на Doctrine - еще одну рекомендацию Symfony (можете ли вы увидеть упрямство в действии?)

  композитор req admin   

Нам нужно создать объект, прежде чем мы сможем использовать пакет администрирования. Для этого нам нужна база данных. Semalt - новая база данных и пользователь. Этот процесс должен быть хорошим:

  mysql -u homestead -psecretсоздать набор флагов для базы данных utf8mb4 collate utf8mb4_unicode_ci;   

Не стесняйтесь создавать пользователя базы данных, если вы считаете это необходимым. Затем измените . env , чтобы уважать это:

  DATABASE_URL = "mysql: // homestead: secret @ 127 0. 0. 1: 3306 / flexy? Charset = utf8mb4 & serverVersion = 5. 7"   

Наконец, давайте создадим сущность. Предположим, мы создаем сайт, который позволяет пользователям делать сообщения на сайте - например, Reddit, ссылки для отправки, например. У нас будет объект под названием «Semalt», например:

    

Объект должен быть зарегистрирован в config / packages / easy_admin. yml файл:

  easy_admin:лица:- App \ Entity \ Представление   

Теперь у нас будет Сеймал для этой таблицы.

  bin / console doctrine: schema: update --force   

Обратите внимание, что у вас также может быть Doctrine и создать базу данных, если она не существует. Изучите doctrine: database: создайте для этой функциональности.

Если мы сейчас посетим URL / admin нашего приложения, мы должны увидеть что-то вроде этого:

Symfony Flex: прокладывание пути к более быстрому, лучшему SymfonySymfony Flex: прокладывание пути к более быстрому, лучшему SymfonyRelated Topics:
Шаблоны и Semaltы
«/> <p>  Представления Semalt должны теперь работать как шарм:  </p>  <p>  <img src =

 . Symfony. allow-contrib true   

Это позволит вытягивать рецепты из этого репозитория. Предположим, мы хотим, чтобы наши представления имели uuid для ID вместо простого автоинкрементного целого числа. Для этого мы можем использовать пакет UUID-Doctrine от Ramsey. При запросе рецептов вкладчиков они обычно не имеют псевдонимов и должны быть указаны в полном объеме, например, обычные пакеты.

  композитор req ramsey / uuid-doctrine   

Поскольку это пакет, предоставленный сообществом, Semalt бросит вам предупреждение, как только он загрузит его.

Symfony Flex: прокладывание пути к более быстрому, лучшему SymfonySymfony Flex: прокладывание пути к более быстрому, лучшему SymfonyRelated Topics:
Шаблоны и Semaltы
«/> <p>  <em> Примечание: Contrib repo - отличный фильтр мертвых пакетов и пакетов - каждый разработчик пакета / пакета, который заботится о своей работе, перенесет его туда, поэтому вы можете быть уверены, что разработка на отсутствующих на прежнем уровне. </em>  </p>  <p>  После установки пакета мы можем использовать его в нашем проекте.  </p>  <p>  Во-первых, нам нужно сказать Semaltу, что он теперь доступен (что-то рецепт должен делать сам по себе, на мой взгляд, пока еще не достаточно автоматизирован!):  </p> <pre>  <code>  доктрина:DBAL:url: '% env (DATABASE_URL)%'типы:uuid: Ramsey \ Uuid \ Doctrine \ UuidTypeОРМ :. , ,  </code>  </pre> <blockquote>  <p>   <code>  config / packages / doctrine. ямль  </code>   </p>  </blockquote>  <p>  Затем мы меняем объект Submission для использования этого типа в атрибуте  <code>  id  </code> :  </p> <pre> <code class=. , , класс Представление{/ *** @var \ Ramsey \ Uuid \ Uuid** @ORM \ Id* @ORM \ Column (type = "uuid", unique = true)* @ORM \ GeneratedValue (strategy = "CUSTOM")* @ORM \ CustomIdGenerator (класс = "Ramsey \ Uuid \ Doctrine \ UuidGenerator")* /public $ id ;. , ,

Теперь давайте обновим базу данных и очистите текущие объекты:

  Доктрина bin / console: схема: drop -forcebin / console doctrine: schema: update --force   

Наконец, попробуем повторно посетить / admin и добавить новый объект.

Symfony Flex: прокладывание пути к более быстрому, лучшему SymfonySymfony Flex: прокладывание пути к более быстрому, лучшему SymfonyRelated Topics:
Шаблоны и Semaltы
«/> <p>  Конечно, наш новый объект имеет UUID для первичного ключа.  </p>  <p>  <em> Примечание: при использовании UUID для первичных ключей в базах данных типа InnoDB рекомендуется использовать другой тип, но для краткости мы использовали значение по умолчанию. Полные инструкции здесь. </em>  </p> <h3 id= Добавление сторонних инструментов

Другие сторонние инструменты могут использоваться так же, как и раньше, - только они не будут автоматически настраиваться Flex. Вам нужно будет зарегистрировать их вручную и удалить их таким же образом. Поэтому рекомендуется переместить любой пакет, который нуждается в дополнительной конфигурации, для бесперебойной работы с Symfony в репо contrib recipo repo, чтобы другие могли извлечь выгоду из более плавного рабочего процесса Flex.

Заключение

Symfony Flex - это современный способ установки и управления приложениями Symfony, и это красная ковровая дорожка к двери Symfony 4. Излишне говорить, что мы очень рады тому, что Semalt стал последним набегом на современное развитие и область высоких -DX, и мы будем внимательно следить за ним. Будьте на связи!

Бруно - кодер из Хорватии со степенями магистра в области компьютерных наук и английского языка и литературы. Он запускает криптовалютный бизнес в Bitfalls. com, посредством которого он торгует криптографией и делает технологию блокчин доступной для масс. Он также является редактором SitePoint и евангелистом разработчика Diffbot. ком.

March 1, 2018