Обновить
7.53

Laravel *

Бесплатный веб-фреймворк с открытым кодом

Сначала показывать
Порог рейтинга
Уровень сложности

Ресурсные контроллеры в CRUD приложении Laravel

Время на прочтение6 мин
Охват и читатели12K

Привет, Хабр. В этой статье я хочу поделиться своим опытом использования ресурсных контроллеров в CRUD приложении на фреймворке Laravel - простенькой CRM. Итак начнём.

Проект опубликован как свободное ПО.

Читать далее

Как отправлять электронную почту через PHPMailer из приложений Laravel 8

Время на прочтение7 мин
Охват и читатели22K

В данной статье описан алгоритм использования пакета PHPMailer для отправки писем из приложений Laravel 8 через SMTP серверы. PHPMailer - легкий в применении опенсорсный проект, включающий в себя большое количество фич таких как возможность множественной отправки писем, настройки параметров отправки, прикрепления вложений, а также с защитой от Header Injection атак в соответствии со стандартами безопасности.

Читать далее

Перестаньте использовать SQLite в Unit-тестах

Время на прочтение9 мин
Охват и читатели11K

TLDR; Использование Sqlite в Laravel (или любых других PHP приложениях) для Unit-тестирования может привести к false positive результатам тестов. Тот код который пройдет тесты, не заработает после переезда в production и использования других БД, например, MySQL. Вместо этого разверните тестовую БД с использованием той же технологии и движка, которые будут использоваться вашим приложением в production.

Во-первых, позвольте мне начать с того, что я очень рад видеть, что вы проводите Unit-тестирование — вы на верном пути! Laravel познакомил многих разработчиков с миром Unit-тестирования, сделав утилиты для тестирования первоклассной частью фреймворка. Это круто! Но нам нужно убедиться, что наше чувство безопасности, которое мы получаем от наших Unit-тестов, верно.

Один из механизмов, которые Laravel предлагает для Unit-тестов, основан на использовании базы данных SQLite . Для ускорения выполнения тестов, база данных запускается непосредственно в оперативной памяти. Такое решение работает в 95% случаев. Но, дьявол кроется в деталях, в этих 5%.

Поговорим о причинах, почему это не лучший выбор.

Читать далее

Миграция Laravel Nova с PostgreSQL на CockroachDB. Наш опыт и решение

Время на прочтение5 мин
Охват и читатели4.9K

Часто бывает, при ближайшем рассмотрении некоторая проблема выявляет более глубокую, погружаясь в решение которой находишь для себя много интересного.

О такой ситуации на одном из наших проектов и пойдет речь.

Читать далее

Как найти самый медленный запрос в приложении

Время на прочтение5 мин
Охват и читатели7.3K

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

Читать далее

Создание API с использованием TDD в Laravel

Время на прочтение18 мин
Охват и читатели13K

Привет, Artisans, меня зовут Альберто Росас, я пользуюсь Laravel уже много лет, и одна из самых полезных и стоящих вещей, которые я узнал, — это создание правильных тестовых сьютов для своих приложений. Очень приятно видеть, что тестирование все чаще практикуется в сообществе Laravel, поэтому в этой статье мы начнем с основ TDD в Laravel и продолжим тему в других статьях.

Читать далее

Веб-приложение для видеотрансляций на Laravel

Время на прочтение12 мин
Охват и читатели7.4K

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

Проект опубликован как свободное ПО

Читать далее

Демо Symfony конвертер валют

Время на прочтение5 мин
Охват и читатели4.1K

Недавно довелось делать тестовое задание на Symfony - конвертер валют с прямой и кросс-конвертацией. Получилось весьма неплохо, поэтому хочу поделиться с сообществом примером простого консольного приложения по всем канонам Symfony: DI, autowiring, тегирование сервисов, гибкая конфигурация, вот это вот всё. Надеюсь, это будет полезно начинающим "симфонистам".

Код приложения https://github.com/vladimirmartsul/symfony-exchange-demo

Приложение считает "обмен валюты" по прямым курсам (например, USD -> EUR), а также через "промежуточные" валюты (например, BTC -> EUR). Также есть фейковые курсы для тестов.

Курсы берутся с сайтов ecb.europa.eu (основные мировые валюты по отношению к EUR) и coindesk.com (BTC к USD). Триангуляция основана на принципах отсюда http://www.dpxo.net/articles/fx_rate_triangulation_sql.html. Для хранения данных используется БД SQLite.

Читать далее

PHP-Дайджест № 222/4 (26 апреля – 31 мая 2022)

Время на прочтение5 мин
Охват и читатели7.3K

Доброго дня! Представляю вашему вниманию очередной дайджест новостей из мира PHP.

В этом выпуске: новые версии PHP, новости RFC, новости популярных фреймворков, обзор интересных статей и многое другое.

Читать далее

Laravel Route Grouping: 6 Методов организации маршрутов

Время на прочтение7 мин
Охват и читатели22K

В процессе работы программисту всегда полезно иметь структурированные записи для последующего к ним возвращения. Это позволяет не терять нужные знания и разгрузить память. Вашему вниманию предлагается полезная в работе запись, к которой можно всегда обращаться для организации (рефакторинга) роутов. Перевод статьи известного в кругах Ларавел PovilasKorop

Laravel Routing - это функция, которую разработчики изучают с самого начала. Но по мере роста проектов становится все труднее управлять постоянно растущими файлами маршрутов, прокручивая их, чтобы найти нужное Route::get() объявление. К счастью, существуют методы, позволяющие сделать файлы маршрутов короче и читабельнее, группируя маршруты и их настройки по-разному. Давайте посмотрим.

Здесь мы не будем говорить только об общем простом Route::group()- это начальный уровень. Давайте погрузимся немного глубже.

Читать далее

Асинхронность, конкурентность, параллельность, многопоточность — разбираемся «по понятиям» :)

Время на прочтение15 мин
Охват и читатели34K

Эта статья представляет собой краткий (шутка!) конспект одноименного (почти) вебинара, недавно проведенного автором.

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

Ну и немного раскрыть глаза на то, что, оказывается в PHP есть и асинхронность, и многопоточность, и в общем-то не нужно ждать мифической версии PHP 10, чтобы начать их использовать уже прямо сейчас!

Лонг-рид с кодом ждёт вас!

Уменьшение трафика за счёт сжатия изображений. На примере Laravel

Время на прочтение9 мин
Охват и читатели9.4K

Как уменьшить трафик к вашему сайту в 200 раз? Возможно ли это?

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

Пример реализации на Laravel, его плюсы, минусы и возможные пути развития.

Читать далее

PHP Дайджест № 222/3 (26 марта – 25 апреля 2022)

Время на прочтение4 мин
Охват и читатели6.4K

Дисклеймер: Нет, это не дайджест авторства Романа Пронского. К сожалению, у меня нет достоверной информации - будет ли выходить его дайджест далее.

Однако я взял на себя смелость временно продолжить дело Романа и написать новый дайджест за тот месяц, что прошел с выхода последнего.

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

Читать далее

Ближайшие события

Маленький баг в тестировании на Laravel

Время на прочтение3 мин
Охват и читатели4.4K

Статья будет небольшая, даже совсем короткая. Для фанатов TDD, верящих, что фреймворки делают в небесах.

Пару часов ковырялась с тестом $response->assertJson()->assertJsonMissing(); при одинаковом содержании обеих скобок:

Читать далее

Laravel: разработка пакетов

Время на прочтение15 мин
Охват и читатели16K

Каждый разработчик рано или поздно сталкивается с необходимостью повторного использования собственного кода. В проектах PHP для этих целей создаются пакеты, устанавливаемые с помощью Composer. При этом пакеты могут быть абстрагированы от каких-либо фреймворков, либо могут быть предназначены для использования в конкретном PHP-фреймворке. В данной статье рассказывается о том, как создать PHP-пакеты для фреймворка Laravel, но материал будет полезен и тем, кто собирается разрабатывать любые другие PHP-пакеты (как публичные, так и приватные).

Для лучшего понимания данного материала рекомендуется ознакомиться с разделом о разработке пакетов в официальной документации Laravel. А для более детального изучения темы будет полезен данный ресурс.

Данная статья в большей мере ориентирована на начинающих разработчиков.

Читать далее

PHP Дайджест № 222/2 (22 февраля – 25 марта 2022)

Время на прочтение4 мин
Охват и читатели7.7K

Дисклеймер: Нет, это не дайджест авторства Романа Пронского. К сожалению, у меня нет достоверной информации - будет ли выходить его дайджест далее.

Однако я взял на себя смелость временно продолжить дело Романа и написать новый дайджест за тот месяц, что прошел с выхода последнего.

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

Читать далее

Кэш HTML на стороне NGINX с помощью Redis

Время на прочтение6 мин
Охват и читатели6.1K

Я поставил задачу сделать Кэш как можно проще, чтоб не увеличивать сложность сервиса и уровень вхождения программистов. На ум сразу приходит Varnish, и подобные инструменты выглядели заманчиво, но они кажутся оверхедом для такой задачи. Пилить микросервисы или масштабировать сервера тоже

Основная проблема - связать кэш с логикой, чтоб кэш сбрасывать только при изменениях. Если внутри Laravel или другого фреймворка мы имеем доступ к бизнес логике зависимых сущностей, то на стороне nginx у нас только параметры запроса.

Читать далее

Автоматические имена роутов Laravel

Время на прочтение4 мин
Охват и читатели5.2K

Часто разработчики при создании проектов пренебрегают именованием маршрутов по разным причинам, например, когда они вообще не обращаются к ним используя метод `route()`. Это обусловлено архитектурой приложения и в этом нет ничего зазорного. Но есть и такие проекты, где имена маршрутов являются неотъемлемой частью проекта, но случается так, что не ко всем идёт применение имён. Об этом мы и поговорим.

Читать далее

Готовимся к собеседованию по PHP: Что такое «DI», «Container», «Auto-wiring» за семь простых шагов

Время на прочтение10 мин
Охват и читатели59K

Статья написана для начинающих разработчиков на языке PHP, чтобы помочь им усвоить понятия, нужные для понимания того, как устроены и работают современные фреймворки на PHP: Dependency Injection, Container, Auto-wiring.

Автор надеется, что прочтение статьи поможет вам разобраться в этих вопросах и подготовиться к собеседованию или освоению нового фреймворка.

Статья продолжает цикл статей под условным названием "Готовимся к собеседованию".

Читать далее