Библиотека PHP программиста 👨🏼‍💻👩‍💻
2.18K subscribers
316 photos
168 videos
7 files
331 links
Полезные материалы по PHP, Laravel, Symfony, CodeIgniter, CakePHP, Phalcon

По всем вопросам @evgenycarter
Download Telegram
PHP Quick Tips

Stop Doing This in PHP... | Avoid Nesting If Statements | Better Coding Habits in PHP
List of All Basic PHP Security You Need to Know | PHP Security for Beginners | PHP Security Lesson
3 Beginner Mistakes in PHP When it Comes to Form Data | Common PHP Beginner Mistakes | PHP Tips
Should You Learn Object Oriented PHP?
How to Log Errors in PHP | PHP Error Reporting and Debugging for Beginners | Log Website Errors
Learn Object Oriented PHP for Beginners | With Examples to Help You Understand! | OOP PHP Tutorial

источник

👉 @php_lib
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Совет по Laravel 💡

Один из моих любимых недокументированных советов, который я регулярно использую. Используйте "wasRecentlyCreated", чтобы проверить, была ли модель создана или найдена в базе данных.

👉 @php_lib
👍7
Совет по Laravel 💡

Вот 3 синтаксических способа определения внешнего ключа отношения belongsTo в миграциях.
Лично я считаю второй вариант более предпочтительным.

Schema:: create( 'orders', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger( 'user_id');
$table->foreign('user_id')->references( id') ->on('users");
});
// Or
Schema: :create( 'orders', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->constrained();
});
/Or
Schema: :create( 'orders', function (Blueprint $table) {
$table->id();
$table->foreignIdFor (User: :class) ->constrained( ) ;
/
});

👉 @php_lib
👍4
Разработка пакетов Laravel : Ключевые шаги к созданию эффективного инструмента

Возможно, вы уже видели или использовали такие пакеты Laravel, как Sanctum, Passport, Nova и многие другие. Но задумывались ли вы когда-нибудь, как можно упаковать и развернуть свою разработку в пакет с любой логикой и поделиться им с другими разработчиками в сообществе Laravel?

Одной из ключевых особенностей фреймворка Laravel является экосистема пакетов, которые предоставляют потрясающие возможности для создания высококачественных приложений.

Пакеты - это основной способ добавления любой функциональности в проекты Laravel. Это может быть что угодно - от набора стилей и скриптов до сложной бизнес-логики и API-интеграций.

Код пакетов может быть как самостоятельным, так и служить дополнением к определенному фреймворку, и может разрабатываться и поддерживаться разными разработчиками.

В этой статье мы сосредоточимся на написании пакетов для фреймворка Laravel.

Концепция разработки пакетов включает в себя такие понятия, как ServiceProvider, Facades, Contracts. Все эти элементы обеспечивают стабильную работу приложений от тестирования до продакшена.

ServiceProvider - это точка контакта между контейнером приложения и вашим пакетом. Через него осуществляется управление всеми ресурсами приложения. Инъекция зависимостей - это лучшее, что можно придумать.

https://dev.to/dnsinyukov/laravel-package-development-key-steps-to-building-an-effective-tool-2a7a

👉 @php_lib
👍3
Советы по Laravel

Если вы создаете API в своем проекте:
🪐 Применяйте версионирование в самом первом релизе
🪐 Поддерживайте чистоту в routes/api.php, создавая разные файлы маршрутов для каждой версии👇

🧹 Более чистый код, 📈 Лучшие результаты

👉 @php_lib
👍8
Объекты значений в PHP 8: создание лучшего кода. Часть 1

В мире программирования поддержание качества кода на должном уровне имеет большое значение.

Паттерн Value Object способен значительно улучшить качество вашего кода, сделав его более надежным и удобным для сопровождения.

В этой статье я расскажу о том, как реализовать паттерн и как это позволит добавить немного "сахара" в ваш код, используя последние возможности, представленные в PHP 8.1 и PHP 8.2.

https://dev.to/cnastasi/value-objects-in-php-8-building-a-better-code-38k8

👉 @php_lib
👍3
Совет по Laravel 💡

Знаете ли вы, что диапазоны Eloquent можно использовать при определении других отношений?

👉 @php_lib
👍5
Объекты значений в PHP 8: расширенное использование. Часть 2

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

https://dev.to/cnastasi/advanced-value-objects-in-php-8-1lp0

👉 @php_lib
👍3
Объекты значений в PHP 8: сущности

В предыдущих статьях мы узнали, как создавать фундаментальные объекты ценности, и осознали их роль в повышении стабильности и надежности наших приложений.
В этой статье мы рассмотрим еще один архитектурный паттерн, тесно связанный с объектами ценности: Сущности.

https://dev.to/cnastasi/value-object-in-php-8-entities-1jce

👉 @php_lib
👍4
Создание одностраничного приложения с помощью HTMX и Symfony

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

Это прекрасно для пользователей, поскольку обеспечивает им беспроблемный и интуитивно понятный интерфейс, но это означает, что мы должны каждый день менять наш способ создания веб-сайтов, причем совершенно по-новому. Такие решения, как Symfony UX, начали появляться на свет, чтобы упростить разработку UX-ориентированных компонентов/сайтов. Мы уже рассказывали об этом конкретном инструменте в другой статье блога, и он отлично работает! Однако то, что мы используем Symfony, не делает его единственным вариантом!

Эта статья посвящена библиотеке, которая в последнее время набирает обороты в области библиотек, улучшающих UX, - htmx.

https://jolicode.com/blog/making-a-single-page-application-with-htmx-and-symfony

👉 @php_lib
👍3
PHP Annotated – January 2024

Добро пожаловать в январский выпуск PHP Annotated! Мы расскажем о самых интересных событиях в PHP-сообществе за последний месяц, представив отобранные новости, статьи, инструменты и видео.

https://blog.jetbrains.com/phpstorm/2024/01/php-annotated-january-2024/

👉 @php_lib
👍4
Разработка расширения для PHP на C++. Хуки встроенных функций и методов

PHP - это мощный и широко используемый язык программирования для веб-разработки. Однако иногда требуется расширение функциональности или модификация стандартного поведения PHP с использованием более низкоуровневых языков, таких как C++. В этой статье мы рассмотрим, как создать расширение для PHP на C++ на примере разработки функциональности, позволяющей перехватывать вызовы встроенных функций и методов классов в php.

https://habr.com/ru/articles/779344/

👉 @php_lib
👍3
Genealogy

Бесплатное приложение с открытым исходным кодом (семейное дерево) для записи членов семьи и их взаимоотношений, созданное на PHP (Laravel 10).

https://github.com/MGeurts/genealogy

👉 @php_lib
👍6
Модифицируйте таблицы и записи в режиме реального времени с помощью Laravel Population

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

https://capsules.codes/en/blog/fyi/en-fyi-modify-tables-and-records-with-laravel-population

👉 @php_lib
👍1
🚨 Защитите свой код от Zip Bomb! 💣🚨

Защитите свои приложения от сильно сжатых Zip-файлов, предназначенных для DoS-атак

💡 проверка количества файлов в архиве
💡 проверьте общий размер несжатых данных
💡 проверьте степень сжатия

👉 @php_lib
👍5
Совет по Laravel💡

Поддерживайте контроллеры, используя ТОЛЬКО 7 методов:

1️⃣ index
2️⃣ create
3️⃣ store
4️⃣ show
5️⃣ edit
6️⃣ update
7️⃣ destroy

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

👉 @php_lib
🤔8👎5👍3
Serde

Это быстрая, гибкая, мощная и простая в использовании библиотека сериализации и десериализации для PHP, которая поддерживает ряд стандартных форматов. Она черпает вдохновение как в Rust's Serde crate, так и в Symfony Serializer, хотя напрямую не основана ни на одном из них.

На данный момент Serde поддерживает сериализацию PHP-объектов в массивы PHP, JSON, YAML и CSV-файлы и обратно. Он также поддерживает сериализацию в JSON или CSV через поток. Планируется дальнейшая поддержка, но по задумке она может быть расширена любым пользователем.

Установка
$ composer require crell/serde

Использование
use Crell\Serde\SerdeCommon;

$serde = new SerdeCommon();

$object = new SomeClass();
// Populate $object somehow;

$jsonString = $serde->serialize($object, format: 'json');

$deserializedObject = $serde->deserialize($jsonString, from: 'json', to: SomeClass::class);

https://github.com/Crell/Serde

👉 @php_lib
👍6
Как выполнять команды Laravel Artisan с помощью Endpoint API

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

Традиционный способ:

Откройте cPanel или любую другую панель управления, затем перейдите в терминал или зайдите в SSH напрямую, если у вас есть root-доступ,
Затем перейдите в папку с приложениями и запустите нужную команду.

Но эти шаги могут занять много времени.

https://dev.to/yasserelgammal/how-to-execute-laravel-artisan-commands-using-an-api-endpoint-3d49

👉 @php_lib
👍3