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

По всем вопросам @evgenycarter
Download Telegram
Откройте для себя новые пакеты Laravel

Наша цель - помочь сообществу Laravel найти новые и полезные пакеты Laravel в одном месте.

https://laravel-package-ocean.com/

👉 @php_lib
👍3
Свой личный SMS-шлюз. Часть 1 – цели, задачи, сборка и тестирование

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

Начнем мы статью с вопроса – для чего отправлять SMS, ведь на дворе 2021 год? Да, мы уже привыкли к различным мессенджерам, уведомлениям в чат-боты, но SMS до сих пор обладает наиболее гарантированным уровнем доставки. Нет зависимости от наличия интернета и сообщение поступит даже в сети 2G и при слабом сигнале и на устройство без доступа к интернет. Таким образом, если планируется отправлять сообщения, которые гарантированно должны быть доставлены и критичны к времени доставки, то SMS – это возможно лучший выбор.

Под SMS-шлюзом мы понимаем программно-аппаратное устройство подключенное к сети сотового оператора и позволяющее производить автоматизированную отправку сообщений.

https://habr.com/ru/companies/ruvds/articles/554868/

👉 @php_lib
👍5🌚1
Свой личный SMS-шлюз. Часть 2 – создаём API и форму отправки

Представляю вам вторую часть из серии статей по созданию своего шлюза.
В первой части мы настроили Gammu, рассмотрели особо интересные параметры и успешно произвели отправку SMS сообщения. Сейчас нам предстоит задача посложнее – создать некую программную прослойку (API), для того, чтобы можно было работать со шлюзом путем отправки запросов на этот API. В первую очередь это комфорт, во вторую – большое количество дополнительных возможностей.

https://habr.com/ru/companies/ruvds/articles/555422/

👉 @php_lib
👍3
Расширенные возможности MessagePack

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

В этой статье я не буду рассказывать, как устроен MessagePack или сравнивать его с аналогами: материалов на эту тему в Интернете предостаточно. Чего действительно не хватает, так это информации о расширенной системе типов MessagePack. Я постараюсь объяснить и показать на примерах, что это такое и как с помощью дополнительных типов сделать сериализацию еще более эффективной.

https://habr.com/ru/companies/vk/articles/555748/

👉 @php_lib
👍4
Как добавить функцию миграции структуры базы данных в ваши старые PHP-проекты?

Во вселенной существует огромное количество старых проектов, написанных на PHP. Старые кодовые базы трудно поддерживать, и нелегко создать среду разработки для старых приложений. У меня была такая же проблема; у меня есть много решений для создания stateless среды разработки для старых проектов. Сегодня я остановлюсь на одном из них, связанном с базами данных.

https://emre.xyz/how-to-add-a-database-structure-migration-feature-to-your-legacy-php-projects

👉 @php_lib
👍2
Выявление медленных запросов до того, как они попадут в рабочую базу данных

Статический анализ кода доступа к базам данных стал реальностью с появлением phpstan-dba. Просто придерживайтесь правил, и все будет в порядке:

При включении phpstan-dba будет сообщать об ошибках в случае неэффективности запросов. Анализатор сообщает о проблемах, связанных с запросами, не использующими индекс, полными сканированиями таблиц и слишком большим количеством неиндексированных чтений.

https://staabm.github.io/2022/08/16/phpstan-dba-query-plan-analysis.html

👉 @php_lib
👍4
Веб-скрепинг с помощью PHP: Пошаговое руководство

Веб-скрепинг становится все более популярным и в настоящее время является одной из актуальных тем в ИТ-сообществе. В результате появилось несколько библиотек, позволяющих собирать данные с веб-сайтов. Здесь вы узнаете, как создать веб-скрепер на PHP, используя одну из самых популярных библиотек для веб-скрепинга.

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

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, "https://www.w3schools.com/jquery/demo_test_post.asp");
// specify that the cURL request is a POST
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

// define the body of the request
curl_setopt($curl, CURLOPT_POSTFIELDS,
// http_build_query is required to simulate
// a FormData request. Ignore it on a JSON request
http_build_query(
array(
"name" => "Donald Duck",
"city" => "Duckburg"
)
)
);

// define the body of the request
curl_setopt($curl, CURLOPT_POSTFIELDS,
array(
"name" => "Donald Duck",
"city" => "Duckburg"
)
);

// replicate the AJAX call
$result = curl_exec($curl);

https://www.zenrows.com/blog/web-scraping-php

👉 @php_lib
👍3
Неортодоксальный Eloquent. Часть 1

Eloquent - это мощный и умный инструмент, нравящийся многим своими возможностями. Он позволяет с лёгкостью выполнять операции с базами данных, сохраняя при этом простоту использования. Реализуя паттерн Active Record (AR), описанный Фаулером в книге "PoEAA", является одним из лучших реализаций на сегодняшний день.

В этой статье я хотел бы рассказать о нескольких советах и рекомендациях, о которых узнал экспериментальным путём. Например, Вы когда-нибудь задумывались о том, чтобы тем или иным образом разделить жадные загрузки? Нет? Тогда, я уверен, Вы узнаете как минимум что-то новое, так что обязательно дочитайте до конца!

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

👉 @php_lib
👍3
Неортодоксальный Eloquent. Часть 2

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

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

👉 @php_lib
👍5
Пакет Pail

Погружение в лог-файлы приложения Laravel непосредственно из консоли. 🪣

https://github.com/nunomaduro/pail

👉 @php_lib
👍2
PHP-SPX простой профайлер трейсер для PHP

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

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

👉 @php_lib
👍2
Обзор NativePHP. Инструмент для создания собственных нативных desktop приложений на Laravel

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

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

👉 @php_lib
👍4
Простая аутентификация на PHP

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

Disclaimer: статья рассчитана на совершенных новичков. Умудрённые опытом разработчики ничего нового здесь не найдут, но могут указать на возможные недочёты =).

Для написания системы аутентификации будем использовать базу данных MySQL/MariaDB, PHP, PDO, функции для работы с паролями, для построения интерфейса возьмём bootstrap.

Полный код примера доступен на гитхабе: ссылка на Github.

👉 @php_lib
👍6
Разблокировка Real-Time с помощью WebSockets в Laravel с помощью Soketi

Представьте себе создание веб-приложений, которые реагируют мгновенно, где обновление данных и взаимодействие происходят в мгновение ока. Добро пожаловать в мир веб-разработки в реальном времени. В этой статье мы попытаемся создать простой пример использования соединения WebSocket в приложении Laravel с помощью Soketi.

Мы познакомимся с Soketi, установим необходимые инструменты и настроим Laravel для работы с WebSockets. К концу статьи у вас будет готова базовая система WebSocket.

https://fajarwz.com/blog/unlocking-real-time-with-websockets-in-laravel-with-soketi/

👉 @php_lib
👍4
3 года работы с AWS Lambda в режиме lift-and-shift

Давайте определимся с ситуацией. Мы ищем возможность масштабирования PHP-приложения. Погуглив, мы выяснили, что наиболее масштабируемым сервисом является AWS Lambda. Он не поддерживает PHP нативно, но у нас есть https://bref.sh. Кроме того, у нас есть книга Serverless Visually Explained, в которой рассказывается о том, что нужно знать, чтобы запустить PHP на AWS Lambda. Но у нас есть проект 8-летней давности, который не был разработан с нуля как бессерверный. Это не наследие. Не совсем. Он хорошо работает, имеет приличное тестовое покрытие, над ним работает горстка инженеров, и пока что он успешен. Просто она не была рассчитана на горизонтальное масштабирование. Что теперь?

https://blog.deleu.dev/lift-and-shift-aws-lambda/

👉 @php_lib
👍2
Совет по безопасности: увеличьте количество раундов bcrypt

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

https://securinglaravel.com/p/security-tip-increase-your-bcrypt

👉 @php_lib
👍4
Генерация аватаров с инициалами на PHP

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

https://tqdev.com/2022-generate-avatars-initials-php

👉 @php_lib
👍4
🔥 Совет по Laravel: wherePivot.

В отношениях "многие-ко-многим" можно добавить операторы where в таблицу pivot, используя метод `wherePivot`.

👉 @php_lib
👍6
Советы по работе с Laravel: Views

Совместное использование одной переменной с несколькими представлениями.

Возникала ли у вас необходимость в совместном использовании одной переменной с несколькими представлениями в Laravel? Вот простое решение.

use App\Models\Post;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
public function boot()
{
if (Schema::hasTable('posts')) {
View::share('recentPosts', Post::latest()->take(3)->get());
}
}
}

👉 @php_lib
👍4👎1