#полезное
😵💫 Будущее PHP: Свежий взгляд на то, что принесет PHP 9.0
PHP выходит на новый уровень строгости и чистоты кода. Вот самые важные изменения:
🟠 Инкременты и декремент
Теперь `'a9'++ вызовет TypeError вместо странного поведения.
🟠 Ошибки при
Любая проблема при десериализации выбросит
🟠 Запрет на
Больше нельзя делать
🟠 Упрощение интерполяции строк
Старый синтаксис
🟠 Предупреждения = Фатальные ошибки
Обращение к несуществующей переменной сразу остановит выполнение скрипта.
🟠 Удаление устаревших функций
Если видите депрекейшн-ворнинги — обязательно исправляйте.
Что можно делать уже сейчас:
Уберите все предупреждения из кода.
Настройте строгую типизацию и обработку ошибок.
Medium
👉 Новости 👉 База вопросов
PHP выходит на новый уровень строгости и чистоты кода. Вот самые важные изменения:
Теперь `'a9'++ вызовет TypeError вместо странного поведения.
unserialize()
Любая проблема при десериализации выбросит
UnserializationFailedException
.false
как массивБольше нельзя делать
$arr[] = 2;
, если $arr = false;
.Старый синтаксис
${}
будет удалён. Останется только $name
в строках.Обращение к несуществующей переменной сразу остановит выполнение скрипта.
Если видите депрекейшн-ворнинги — обязательно исправляйте.
Что можно делать уже сейчас:
Уберите все предупреждения из кода.
Настройте строгую типизацию и обработку ошибок.
Medium
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🏠 Нашёл годный пакет Laravel
gecche/laravel-multidomain: для использования Laravel-приложения в многодоменной конфигурации
https://github.com/gecche/laravel-multidomain
Этот пакет предоставляет очень простой способ получить отдельный
👉 Новости 👉 База вопросов
gecche/laravel-multidomain: для использования Laravel-приложения в многодоменной конфигурации
https://github.com/gecche/laravel-multidomain
Этот пакет предоставляет очень простой способ получить отдельный
.env
-файл, отдельный путь к хранилищу и отдельную базу данных для каждого такого клиента.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🫡 Разработчики, возьмите на заметку: чему нас могут научить хакеры при ревью PHP-кода
Вот на что часто обращают внимание хакеры при ревью PHP-кода —
Этот простой паттерн помогает находить уязвимости типа SQL-инъекция буквально за минуты. Такие конструкции часто встречаются в небезопасных реализациях, особенно без параметризации запросов
Попробуйте сами: поищите это выражение в open-source проектах на GitHub — многие уязвимости видны сразу
Безопасный код — это ваш лучший контрприём
👉 Новости 👉 База вопросов
Вот на что часто обращают внимание хакеры при ревью PHP-кода —
$this->db->query
Этот простой паттерн помогает находить уязвимости типа SQL-инъекция буквально за минуты. Такие конструкции часто встречаются в небезопасных реализациях, особенно без параметризации запросов
Попробуйте сами: поищите это выражение в open-source проектах на GitHub — многие уязвимости видны сразу
Безопасный код — это ваш лучший контрприём
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #Laravel
🤔 Какова архитектура Laravel?
Laravel построен на архитектуре MVC, где Model отвечает за данные и бизнес- логику, View за отображение интерфейса, а Controller за обработку запросов. Laravel дополняет эту структуру инструментами, такими как маршрутизация, ORM Eloquent, Blade-шаблоны и Artisan для автоматизации задач. Такая архитектура обеспечивает модульность, масштабируемость и удобство разработки.
👉 Новости 👉 База вопросов
Laravel построен на архитектуре MVC, где Model отвечает за данные и бизнес- логику, View за отображение интерфейса, а Controller за обработку запросов. Laravel дополняет эту структуру инструментами, такими как маршрутизация, ORM Eloquent, Blade-шаблоны и Artisan для автоматизации задач. Такая архитектура обеспечивает модульность, масштабируемость и удобство разработки.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤯 Совет по PHP
Функция
Документация
👉 Новости 👉 База вопросов
Функция
parse_url()
вернёт части URL, например, имя домена, если указать PHP_URL_HOST
.Документация
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😱 Метод «json»
Если вы используете Laravel 10 и выше, есть элегантный способ чтения JSON-файлов с помощью
👉 Новости 👉 База вопросов
Если вы используете Laravel 10 и выше, есть элегантный способ чтения JSON-файлов с помощью
File::json()
. Вы также можете передать флаги, которые вы обычно передаете в json_decode()
, на случай, если вы хотите выбросить исключение Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #Laravel
🤔 Перечислите доступные типы отношений в Laravel Eloquent.
Типы отношений в Laravel Eloquent включают:
One to One - один к одному.
One to Many - один ко многим.
Many to Many - многие ко многим.
Has One Through - один через.
Has Many Through - много через.
One to One (Polymorphic) - один к одному (полиморфный).
One to Many (Polymorphic) - один ко многим (полиморфный).
Many to Many (Polymorphic) - многие ко многим (полиморфный).
👉 Новости 👉 База вопросов
Типы отношений в Laravel Eloquent включают:
One to One - один к одному.
One to Many - один ко многим.
Many to Many - многие ко многим.
Has One Through - один через.
Has Many Through - много через.
One to One (Polymorphic) - один к одному (полиморфный).
One to Many (Polymorphic) - один ко многим (полиморфный).
Many to Many (Polymorphic) - многие ко многим (полиморфный).
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 Туториал: использование Go из PHP через FFI
На Хабре вышел классный гайд о том, как через FFI легко подключить функции на Go прямо в PHP. Минимум магии, максимум пользы: прирост производительности, меньше тормозов на тяжёлых задачах и новый уровень возможностей для ваших проектов
В статье:
🟠 Пояснение концепции работы через FFI;
🟠 Разбор примера проекта на GitHub;
🟠 Легкий запуск через Docker Compose.
Если вы ищете способ сделать ваш PHP-код быстрее и хотите попробовать Go без переписывания всего проекта — обязательно к прочтению!
Хабр
👉 Новости 👉 База вопросов
На Хабре вышел классный гайд о том, как через FFI легко подключить функции на Go прямо в PHP. Минимум магии, максимум пользы: прирост производительности, меньше тормозов на тяжёлых задачах и новый уровень возможностей для ваших проектов
В статье:
Если вы ищете способ сделать ваш PHP-код быстрее и хотите попробовать Go без переписывания всего проекта — обязательно к прочтению!
Хабр
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
📞 Парсер JSON
Парсер с нулевыми зависимостями для чтения больших JSON из любого источника с эффективным использованием памяти.
Гитхаб
👉 Новости 👉 База вопросов
Парсер с нулевыми зависимостями для чтения больших JSON из любого источника с эффективным использованием памяти.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #Laravel
🤔 Что такое защита от CSRF и CSRF токен?
CSRF (Cross-Site Request Forgery) - это атака, при которой вредоносный сайт может отправить запросы от имени авторизованного пользователя. Laravel защищает от таких атак, автоматически генерируя CSRF токен для каждой активной сессии. Этот токен необходимо включать в формы и AJAX запросы, чтобы подтвердить, что запросы приходят от авторизованных пользователей. B Laravel можно использовать директиву @csrf для добавления токена в Формы.
👉 Новости 👉 База вопросов
CSRF (Cross-Site Request Forgery) - это атака, при которой вредоносный сайт может отправить запросы от имени авторизованного пользователя. Laravel защищает от таких атак, автоматически генерируя CSRF токен для каждой активной сессии. Этот токен необходимо включать в формы и AJAX запросы, чтобы подтвердить, что запросы приходят от авторизованных пользователей. B Laravel можно использовать директиву @csrf для добавления токена в Формы.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🥺 LarsWiegers/laravel-maps
https://github.com/LarsWiegers/laravel-maps
Этот пакет позволяет легко использовать leaflet.js или Google Maps для создания карты в Laravel-проекте
👉 Новости 👉 База вопросов
https://github.com/LarsWiegers/laravel-maps
Этот пакет позволяет легко использовать leaflet.js или Google Maps для создания карты в Laravel-проекте
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 776. Split BST
Дан корень бинарного дерева поиска (BST) и целое число target, разделите дерево на два поддерева, где первое поддерево содержит узлы, которые меньше или равны значению target, а второе поддерево содержит узлы, которые больше значения target. Не обязательно, чтобы дерево содержало узел со значением target.
Кроме того, большая часть структуры исходного дерева должна сохраниться. Формально, для любого потомка c с родителем p в исходном дереве, если они оба находятся в одном поддереве после разделения, то узел c все еще должен иметь родителя p.
Верните массив из двух корней двух поддеревьев в порядке.
Пример:
👨💻 Алгоритм:
1⃣ Базовый случай: Если корень равен null, верните массив, содержащий два указателя null. Это необходимо для обработки случая, когда дерево пустое.
2⃣ Проверьте, больше ли значение корня целевого значения. Если да, рекурсивно разделите левое поддерево, вызвав splitBST(root->left, target). Прикрепите правую часть разделенного к левому поддереву корня. Верните массив, содержащий левую часть разделенного и текущий корень.
3⃣ Если значение корня меньше или равно целевому значению, рекурсивно разделите правое поддерево, вызвав splitBST(root->right, target). Прикрепите левую часть разделенного к правому поддереву корня. Верните массив, содержащий левую часть разделенного и текущий корень.
😎 Решение:
👉 Новости 👉 База вопросов
Задача: 776. Split BST
Дан корень бинарного дерева поиска (BST) и целое число target, разделите дерево на два поддерева, где первое поддерево содержит узлы, которые меньше или равны значению target, а второе поддерево содержит узлы, которые больше значения target. Не обязательно, чтобы дерево содержало узел со значением target.
Кроме того, большая часть структуры исходного дерева должна сохраниться. Формально, для любого потомка c с родителем p в исходном дереве, если они оба находятся в одном поддереве после разделения, то узел c все еще должен иметь родителя p.
Верните массив из двух корней двух поддеревьев в порядке.
Пример:
Input: root = [4,2,6,1,3,5,7], target = 2
Output: [[2,1],[4,3,6,null,null,5,7]]
class TreeNode {
public $val;
public $left;
public $right;
function __construct($val = 0, $left = null, $right = null) {
$this->val = $val;
$this->left = $left;
$this->right = $right;
}
}
class Solution {
function splitBST($root, $target) {
if ($root === null) {
return [null, null];
}
if ($root->val > $target) {
list($left, $right) = $this->splitBST($root->left, $target);
$root->left = $right;
return [$left, $root];
} else {
list($left, $right) = $this->splitBST($root->right, $target);
$root->right = $left;
return [$root, $right];
}
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
🛞 Как ускорить массовую отправку HTTP-запросов в PHP
Постановка задачи:
Есть скрипт на PHP, который должен отправлять множество HTTP-запросов. Нужно сделать это как можно быстрее. Очевидное решение — параллельная отправка.
1⃣ последовательная обработка
Простой цикл с
2⃣ повторное использование curl-хэндла
Инициализируем
3⃣ параллельная отправка с curl_multi_
Используем
4⃣ отправка батчами (batching)
Если запросов сотни или тысячи, одновременно всё не потянет даже мощный сервер. Решение — отправка пакетами, например по 3. Это позволяет контролировать нагрузку. В нашем примере — ~0.8 секунды на 10 запросов.
Читать статью
👉 Новости 👉 База вопросов
Постановка задачи:
Есть скрипт на PHP, который должен отправлять множество HTTP-запросов. Нужно сделать это как можно быстрее. Очевидное решение — параллельная отправка.
Простой цикл с
curl_init()
и curl_exec()
на каждый URL. Результат: 10 запросов выполняются за ~4.4 секунды.Инициализируем
curl
один раз и переиспользуем. Время выполнения снижается до ~1.7 секунды.Используем
curl_multi_init()
и запускаем запросы одновременно. Итог: всего 0.5 секунды на 10 запросов. Почти в 9 раз быстрее, чем изначально.Если запросов сотни или тысячи, одновременно всё не потянет даже мощный сервер. Решение — отправка пакетами, например по 3. Это позволяет контролировать нагрузку. В нашем примере — ~0.8 секунды на 10 запросов.
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM