Представим, что мы программируем интернет-магазин, в котором должно быть дерево различных разделов, а также должны быть "приятные" ссылки на разделы, которые бы включали все подразделы. Пример:
http://example.com/catalog/category/sub-category
.Бесплатный веб-фреймворк с открытым кодом
http://example.com/catalog/category/sub-category
.My new package for @laravelphp
— Mohamed Said (@themsaid) 13 марта 2016 г.
Converts your sent mail to .html files to check while on devhttps://t.co/2Wp73mL7yI pic.twitter.com/Fu12PwfXrX
resources/views/backend
будет лежать представление, являющееся точкой входа для всех роутов Angular 2. Для каждого роута Angular 2, роутер Laravel 5 будет нас перенаправлять на это представление;@RouteConfig
нам придется создать копию в роутере Laravel;/templates/SomeComponent.main
, и будут запрашиваться роутером Laravel 5 по пути вида resources/views/frontend/SomeComponent/main.blade.php
По моему мнению, данная архитектура является отличным примером того, как должна строиться структура приложения. Более того, когда я писал свои проекты на Laravel, я, даже не зная этого, частенько использовал идеи, заложенные в основе гексагональной архитектуры.
Являясь одним из вариантов слоеной архитектуры, гексагональная подразумевает разделение приложения на отдельные концептуальные слои, имеющие разную зону ответственности, а также регламентирует то, каким образом они связаны друг с другом. Разбираясь с этим типом архитектуры, мы также можем понять как, зачем, и почему при проектировании приложения используются интерфейсы.
Гексагональная архитектура, ни в коем случае не новый подход к разработке с применением фреймворков. Напротив, это всего лишь обобщение «лучших практик» — практик новых и старых. Я обернул эти слова в кавычки, чтобы люди не воспринимали их совсем буквально. Лучшие практики, которые работают для меня, могут не работать для вас — все зависит от задачи и преследуемых целей.
Этот тип архитектуры придерживается классических идей, к которой приходят разработчики при проектировании приложений: отделение кода приложения от фреймворка. Пусть наше приложение формируется само по себе, а не на базе фреймворка, используя последний только как инструмент для решения каких-то задач нашего приложения.
Сериализация — это процесс преобразования объекта в поток байтов для того, чтобы сохранить объект или передать его в память, базу данных или файл. Основной целью является сохранение состояния объекта, чтобы иметь возможность восстановить его при необходимости. Обратный процесс называется десериализацией.