Как креативная технологическая команда, мы в Brand Catalyst Media всегда стремились быть в авангарде веб- и мобильных технологий. На протяжении многих лет мы уделяли основное внимание созданию индивидуальных веб-сайтов, веб-приложений, систем управления контентом, а последние 3 года — мобильных приложений. Лучше всего нас можно определить как беспокойных умов, усердно работающих и стремящихся вперед, приспосабливающихся к изменениям на пути. Вот как мы развились из того, что у нас получалось лучше всего, и сделали это еще лучше.

«Мера интеллекта — это способность меняться».

- Альберт Эйнштейн

Как мы путешествовали

Именно здесь в игру вступает архитектура и платформа программного обеспечения. Для всех, кто занимается разработкой PHP, мы все можем согласиться с тем, что PHP является одним из самых популярных языков сценариев в мире. Если бы мне пришлось говорить о PHP и его полной поддержке, эта статья была бы намного длиннее. Поэтому я буду говорить только о том, как мы использовали возможности PHP для создания качественных продуктов.

PHP, несомненно, сильный язык. Он хорошо работает практически со всеми основными платформами — Windows, Linux или Debian. Он хорошо сочетается с решениями для баз данных, такими как MySQL, PgSQL, Sqlite, MsSQL, MongoDB. Таким образом, наши клиенты могут иметь несколько комбинаций решений для бесперебойной работы своих продуктов. PHP обеспечивает очень прочную основу для любого проекта.

С самого начала нашей целью и сильной стороной был Core PHP. С Core PHP один разработчик может кодировать одну и ту же вещь несколькими способами. Только от разработчика зависит, насколько эффективным и управляемым будет код, который он пишет. При этом мы большие поклонники стандартизации и всегда были на переднем крае, когда речь шла об управляемом, удобочитаемом, масштабируемом и безопасном коде. Мы написали ряд решений на Core PHP, в которых мы вручную кодировали каждый маленький аспект требований нашего клиента, чтобы предоставить лучший и более чистый продукт.

Колесо

Итак, мы предоставляли нашим клиентам эти замечательные комплексные решения, построенные на Core PHP. Звучит хорошо, верно? Ну да и нет. Наша работа всегда была захватывающей, но за годы развертывания решений Core PHP, которые были настроены для T, в Core PHP начало проявляться давнее ощущение избыточности.

Вот почему…

Мы являемся специализированным агентством, которое создает индивидуальные решения для наших клиентов. Для каждого проекта, который мы строим, клиент владеет интеллектуальной собственностью, и это правильно. Собственный код, который был частью ИС, почти всегда был напрямую связан с алгоритмами, сложными структурами или уникальными функциями, которые мы создали для клиента. Тем не менее, у большого количества наших клиентов было около 20–30% общих компонентов, которые не были проприетарными, такими как вход в систему, регистрация, интеграция с платежным шлюзом, интеграция с общедоступным API (Facebook, Twitter), коды оптимизации изображений и так далее.

Когда мы кодировали с помощью Core PHP, нам становилось все труднее повторно использовать даже базовые общие компоненты из-за различий в версиях, проблем совместимости и других ограничений. Это оставило у нас ощущение, что даже для базовых функций мы каждый раз заново изобретали велосипед.

С Core PHP все становится еще хуже, когда дело доходит до запросов к базе данных. Сложные и условные запросы было чрезвычайно сложно обрабатывать и исправлять ошибки. Когда дело доходит до добавления большей сложности к существующей сложности, это в основном полная переработка. Наконец, когда дело доходит до создания API для мобильных приложений, нам пришлось обеспечить большую сложность создания безопасных и удобных в сопровождении сервисов. Это требовало много времени и усилий.

Должен был быть способ оптимизировать это, и именно этот непреложный факт побудил нас найти вариант, который позволил бы нам писать код быстрее, с большей эффективностью и гораздо большей масштабируемостью, чем раньше.

Разрыв

Так чего же нам не хватало? Нам не хватало слоя API и помощников в нашем коде, где мы все еще могли бы получить доступ к сладости Core PHP через API-хуки и при этом иметь возможность просто подключить определенный код и использовать его преимущества API. Кроме того, нам понадобился помощник по запросам к базе данных, какой-то механизм шаблонов и инкапсуляция.

Первый взлет

Мы начали искать некоторые решения, которые могли бы заполнить эти пробелы… и мы нашли некоторые из них. Мы стали уделять больше внимания ООП. Мы включили пакеты композитора для запросов к базе данных. Это очень помогло нам в достижении скорости при обработке сложных запросов и их расширении позже. Но мы хотели большего. Мы хотели иметь структуру, которой могла бы следовать вся команда. Мы знали, что MVC был правильным путем, когда мы могли делать приложения настолько независимыми, насколько нам хотелось. Этот процесс приведет к разделению задач, управляемости и масштабируемости. Что нам действительно было нужно, так это Framework.

Поиск правильного фреймворка!

Вот тут-то и стало интересно для разработчиков. Во-первых, что такое MVC? MVC расшифровывается как Model-View-Controller, где архитектура базы данных скрыта за моделями, а представления связаны только с рендерингом данных, которые ему передаются, и, наконец, с контроллером, в котором инкапсулирована вся бизнес-логика и сложность.

Мы постоянно искали лучший фреймворк и даже создали собственные фреймворки, используя Smarty, Fat Free, Eloquent, Routing и Helpers. Но всегда было ощущение, что этого недостаточно.

У меня был некоторый опыт работы с Laravel, и при создании собственного фреймворка я хотел добиться того, чего смог достичь Laravel. Затем стало очевидным… Если мы действительно хотим, чтобы наш фреймворк был точно таким же, как Laravel, то почему бы не использовать его вместо этого. Я был убежден и полон решимости использовать Laravel в наших будущих проектах. Я предложил эту идею Zahir & Burges, и когда я объяснил, чего мы можем достичь с помощью Laravel, они полностью согласились с этой идеей. Без них это путешествие было бы невозможным. Я даже не могу выразить словами, насколько крут Laravel, и внести радикальные изменения в методологию разработки было захватывающим вызовом.

Привет, Ларавель!

Это моя любимая часть — разговор о Laravel PHP Framework.

Первое, что любой заметит в Laravel, это то, что это мощный и надежный механизм маршрутизации. Многие начинающие разработчики этого не замечают, но веб-маршруты уже CSRF безопасны. Нам даже не нужно беспокоиться об этом. Раньше нам приходилось собирать его для себя, и те, кто делал CSRF-защиту вручную, знают, насколько это болезненно.

Затем идет механизм шаблонов — Blade. Поверьте мне, когда я скажу вам, что это имя идеально ему подходит. Он острый и прорезает все, что вы в него бросаете. Лезвие полностью безопасно для инъекций, прямо из коробки.

Затем уровень абстракции базы данных, Eloquent ORM. упрощает выполнение сложных запросов к базе данных, управление отношениями, а затем их быстрое масштабирование с помощью моделей. Лично я большой поклонник Active Records. Он представляет запросы как читаемый абзац. Области запросов помогают расширить это еще больше. SQL Injection теперь история. Многие из нас не обращают внимания на то, что кеширование запросов встроено. Кроме того, в нем есть файлы миграции, которые в основном являются контролем версий базы данных.

Контроллеры RESTful — это то, что нам очень понравилось. Контроллеры позволили нам написать нашу логику, разбитую на несколько читаемых методов или в отдельные классы. В Core PHP расшифровка кода была большой проблемой. С контроллерами мы знаем, где искать, если что-то пойдет не так, и немедленно отладить это. Проверка — это то, что делает его еще более интересным. Больше никакой «если-иначе адской цепи». Вы можете буквально выполнить несколько сложных проверок в одной строке. Вы можете предоставить собственные сообщения, если хотите, или Laravel предоставит вам довольно хорошие сообщения для ваших недействительных данных.

Затем идет Artisan (я предпочитаю называть его Laravel Personal Assistant). Он очень мощный и расширяемый. Artisan — это, по сути, генератор для Laravel. Попросите его сделать контроллер, и он сделает это за вас. Он поставляется с Tinker, который является отличной консолью для того, чтобы сначала поиграть с вашим кодом.

Помощники и проверка подлинности упрощают кодирование, так как пишут меньше и делают больше, делая это более крутым способом. Array Helper, Collections, Session, Cookies, Request, список можно продолжить. Я также упомяну Mailer. Раньше нам приходилось работать часами, чтобы сделать хороший Mailer, но Laravel полностью избавил нас от головной боли.

Здесь я также хочу осветить часть аутентификации. Laravel поставляется с базовыми Функциями аутентификации из коробки. Нам почти всегда нужна Регистрация пользователя, Логин, Забыли пароль. Наличие уже существующей стандартной функциональности очень помогло нам ускорить стандартную доставку. Нам просто нужно было расширить фактическую логику на базовый уровень аутентификации, и мы были готовы к работе.

Когда мы говорим об аутентификации, мы должны упомянуть промежуточное программное обеспечение, которое спасает жизнь. Аутентификацию и разрешения на уровне пользователя можно создать за минуту. Не только аутентификация, но и подключение к запросам и ответам с помощью Marcos, что упростило создание безопасного API. Теперь нам не нужно беспокоиться о предварительной обработке запроса и ответа в нашей основной логике. Они автоматически применяются к группе областей, где мы хотим их применить.

Самая потрясающая часть — это то, где мы подключаем и играем официальные или сторонние пакеты. Это был большой скачок вперед для нас. Связывание моделей форм, где теперь у нас был HTML и фасады форм, сделало нашу жизнь намного проще. Больше не нужно вручную заполнять форму при обновлении записи. Хотите социальный вход? Светская львица вас прикрыла. Хотите оптимизировать изображение? Интервенция Изображение здесь для вас. Существует бесчисленное множество пакетов, которые помогут вам с API, к которому вы хотите подключиться и сделать свою жизнь проще. Мы даже создали несколько собственных пакетов, которые мы просто подключаем и играем с Facades.

Теперь встает задача создания API для мобильных приложений. Laravel создан с учетом разработки RESTful API. Меры безопасности для API-интерфейсов с Laravel великолепны — встроенное регулирование и запросы к базе данных или другие службы очень быстры. Этот подход преобразовал множество строк кода всего в несколько строк.

Мы также поняли, что в Laravel есть несколько функций, которые нам нужны. Одна вещь, которую я действительно ожидал бы от Laravel из коробки, — это CORS (совместное использование ресурсов между источниками), но не беспокойтесь, мы также сделали свой собственный пакет для этого. Создавайте, подключайте и играйте! Простой! В настоящее время мы используем форк Laravel и интегрировали в него некоторые функции, которые нам постоянно нужны в нашем решении, такие как разрешения на уровне пользователя, больше маршрутов в ресурсах маршрутов. Мы также сделали полноценную CMS-решение для интеграции. Его легко поддерживать и масштабировать. Мы настраиваем бэкэнд-модули в соответствии с требованиями проекта, и опыт для всех нас просто потрясающий.

Значит, Core PHP — это плохо?

Нет, совсем нет. Core PHP поможет вам понять логику фреймворков. Ваше логическое мышление можно улучшить с помощью Core PHP. Core PHP становится плохим только тогда, когда попадает на стол плохого программиста. Не погружайтесь в Framework без изучения или программирования на Core PHP или без хорошего опыта в ООП. Пожалуйста, убедитесь, что вы прочитали полную документацию, прежде чем начать кодирование в любой среде.

Принятие Laravel

Итак, теперь, когда я разглагольствовал о том, насколько хорош Laravel, я хочу закончить, сказав, что это обсуждение не обо всех функциях, которые есть в Laravel, а скорее о том, что привлекло нашу команду в Laravel и как мы совершили прорыв.

Было непросто перейти на Laravel с Core PHP. Переход был не таким простым для всех нас в команде разработчиков. Мы постоянно пробивались. Нам пришлось провести часы, исследуя, изучая, делясь и перерастая в новую оболочку разработки как команда. Первые последователи взяли на себя ответственность за то, чтобы всем было комфортно, и теперь, когда команда освоилась, они не хотят возвращаться. Я должен сказать, что Laravel довольно затягивает.

У нас также было множество клиентов, использующих решения Core PHP, которые работали отлично. Мы перестроили некоторые из них в Laravel, а остальные продолжаем поддерживать в Core PHP до тех пор, пока не начнется обновление. Одно можно сказать наверняка: все, что есть сейчас, определенно будет построено с помощью Laravel.

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

С Laravel мы не только преобразовали нашу методологию разработки, но также превратили время, затраченное на внедрение Laravel, в предоставление более качественных продуктов для наших клиентов и позволили себе быть более гибкими в процессе работы компании-разработчика на заказ. Этот сдвиг позволил нам лучше оправдать наше время и продукт.

Какое путешествие…

Эта статья была написана Кази М., старшим разработчиком Laravel в Brand Catalyst Media