Совет по Laravel💡
Если вы хотите автоматически удалять старые записи, используйте трейт Prunable.
Нет необходимости писать собственные команды.
👉 @php_lib
Если вы хотите автоматически удалять старые записи, используйте трейт Prunable.
Нет необходимости писать собственные команды.
👉 @php_lib
👍6🤔2😁1
Сегодня хочу поговорить о теме, которая часто мешает PHP-разработчикам писать красивый и устойчивый код - магические методы.
Да, те самые
Когда код полагается на магию, отладка превращается в игру «угадай, откуда взялось это значение». IDE не подсказывает типы, автодополнение не работает, а дебаггер видит лишь хаос. Я не говорю, что магические методы нужно запретить. Они бывают полезны, например, в паттерне Proxy или для ленивой загрузки. Но использовать их стоит осознанно, с понятным контрактом.
👉 Советы от меня:
- Если хочешь гибкости — лучше внедри
- Если используешь
- И главное - не прячь логику под магию. Пусть код говорит сам за себя.
👉 @php_lib
Да, те самые
__get, __set, __call, __toString и компания. Они вроде бы удобные: можно ловко обращаться к несуществующим свойствам, вызывать методы, которых нет, и всё работает. Но вот вопрос — а как это тестировать и поддерживать?Когда код полагается на магию, отладка превращается в игру «угадай, откуда взялось это значение». IDE не подсказывает типы, автодополнение не работает, а дебаггер видит лишь хаос. Я не говорю, что магические методы нужно запретить. Они бывают полезны, например, в паттерне Proxy или для ленивой загрузки. Но использовать их стоит осознанно, с понятным контрактом.
👉 Советы от меня:
- Если хочешь гибкости — лучше внедри
__call через интерфейс или трейт с чёткой логикой.- Если используешь
__get / __set — документируй все «виртуальные» свойства в phpdoc.- И главное - не прячь логику под магию. Пусть код говорит сам за себя.
👉 @php_lib
👍7
Оптимизация скорости работы PHP кода 🏎️
Сегодня я покажу вам несколько простых, но эффективных способов ускорить выполнение PHP-скриптов. Оптимизация кода – важная часть работы разработчика, ведь никто не любит медленные сайты. 🚀
🔥 1. Избегайте лишних запросов к БД
Частая ошибка – несколько одинаковых запросов к базе данных в одном запросе. Используйте кэширование (
🔥 2. Используйте
Функция
🔥 3. Не злоупотребляйте
Если у вас массив с десятками тысяч элементов, попробуйте
🔥 4. Подключайте файлы правильно
Разница между
🔥 5. Включите OPCache
OPCache кэширует байт-код PHP и ускоряет его выполнение в разы. Включите его в
🔥 6. Используйте
Функция
👉 @php_lib
Сегодня я покажу вам несколько простых, но эффективных способов ускорить выполнение PHP-скриптов. Оптимизация кода – важная часть работы разработчика, ведь никто не любит медленные сайты. 🚀
🔥 1. Избегайте лишних запросов к БД
Частая ошибка – несколько одинаковых запросов к базе данных в одном запросе. Используйте кэширование (
Redis, Memcached), а если данные редко меняются – сохраняйте их в файл. 🔥 2. Используйте
isset() вместо array_key_exists() Функция
isset() работает быстрее, чем array_key_exists(), потому что она не только проверяет наличие ключа, но и сразу его значение.
// Медленный вариант
if (array_key_exists('key', $array)) { }
// Быстрый вариант
if (isset($array['key'])) { }
🔥 3. Не злоупотребляйте
foreach при больших объемах данных Если у вас массив с десятками тысяч элементов, попробуйте
array_map() или array_walk() – они работают быстрее за счет встроенной оптимизации в C. 🔥 4. Подключайте файлы правильно
Разница между
require, include, require_once и include_once может сильно повлиять на производительность. require_once проверяет, был ли уже подключен файл, что замедляет выполнение. Если точно знаете, что файл не дублируется – используйте require. 🔥 5. Включите OPCache
OPCache кэширует байт-код PHP и ускоряет его выполнение в разы. Включите его в
php.ini:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=1
🔥 6. Используйте
json_encode() вместо serialize() Функция
json_encode() работает быстрее, чем serialize(), и при этом генерирует более компактные данные.
$data = ['name' => 'John', 'age' => 25];
// Медленный вариант
$serialized = serialize($data);
// Быстрый вариант
$json = json_encode($data);
👉 @php_lib
👍8❤2🙈1
Совет по Laravel💡
Знал ли ты… что можно импортировать несколько классов из одного пространства имён вот так☝️
👉 @php_lib
Знал ли ты… что можно импортировать несколько классов из одного пространства имён вот так☝️
👉 @php_lib
👍2👎2
Ты используешь ?? или остаёшься на isset()?
Удобное сокращение или запутанный синтаксис? Что думаешь...
👉 @php_lib
Удобное сокращение или запутанный синтаксис? Что думаешь...
👉 @php_lib
👍9
Сегодня хочу показать вам, как магические методы в PHP могут упростить жизнь, если использовать их с умом.
Многие знают о
Например, рассмотрим кейс с динамическими свойствами:
Мы не определяли свойство
Но! ⚠️
Если переусердствовать - код становится магическим не только для PHP, но и для вас самого 😄
Отладка, автодополнение и читаемость страдают. Поэтому правило простое:
используйте магию осознанно.
👉 @php_lib
Многие знают о
__construct() и __destruct(), но PHP предлагает целый арсенал магических методов - от __get() и __set() до __invoke() и __callStatic().Например, рассмотрим кейс с динамическими свойствами:
class Config {
private array $data = [];
public function __get($name) {
return $this->data[$name] ?? null;
}
public function __set($name, $value) {
$this->data[$name] = $value;
}
}
$config = new Config();
$config->appName = 'MyApp';
echo $config->appName; // MyApp
Мы не определяли свойство
appName, но с помощью __get() и __set() сделали объект гибким, почти как массив. Это удобно для конфигов, DTO и API-ответов.Но! ⚠️
Если переусердствовать - код становится магическим не только для PHP, но и для вас самого 😄
Отладка, автодополнение и читаемость страдают. Поэтому правило простое:
используйте магию осознанно.
👉 @php_lib
👍1
Когда вы заменяете кучу проверок
Это умное решение или удар по читаемости?
👉 @php_lib
isset() на optional chaining (?->):Это умное решение или удар по читаемости?
👉 @php_lib
👍8🤔2🔥1
Профилирование PHP (Laravel) приложений с xhprof. Учимся искать ботлнеки
Вам знакомо то чувство, когда ваш PHP-код отрабатывает за дофига миллисекунд, а иногда и секунд, и вы не можете понять, в чём дело и где тот говнокод, который я (или не я, а мой коллега) когда-то написал? В этой статье хочу немного рассказать на примере профайлинга PHP-кода, как перестать гадать и начать выявлять боттлнеки, которые всё тормозят. Короче, помочь поискать говнокод. После этого у многих из вас появится понимание, как дать своему приложению прирост производительности с помощью крутых инструментов профайлинга, таких как xhprof и Buggregator.
https://habr.com/ru/articles/823156/
📲 Мы в MAX
👉 @php_lib
Вам знакомо то чувство, когда ваш PHP-код отрабатывает за дофига миллисекунд, а иногда и секунд, и вы не можете понять, в чём дело и где тот говнокод, который я (или не я, а мой коллега) когда-то написал? В этой статье хочу немного рассказать на примере профайлинга PHP-кода, как перестать гадать и начать выявлять боттлнеки, которые всё тормозят. Короче, помочь поискать говнокод. После этого у многих из вас появится понимание, как дать своему приложению прирост производительности с помощью крутых инструментов профайлинга, таких как xhprof и Buggregator.
https://habr.com/ru/articles/823156/
👉 @php_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Совет по Laravel💡
Уникальные идентификаторы запросов
Вам когда-нибудь требовалось создать код уникального идентификатора для запроса, например, для целей кэширования? Laravel поставляется с методом «
#laravel
📲 Мы в MAX
👉 @php_lib
Уникальные идентификаторы запросов
Вам когда-нибудь требовалось создать код уникального идентификатора для запроса, например, для целей кэширования? Laravel поставляется с методом «
fingerprint», который позволяет вам генерировать уникальный идентификатор для ваших запросов 🚀#laravel
👉 @php_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Привет, разработчики Laravel 👩💻
Начиная с Laravel v11.18.0, в методе
Пример использования метода
Раньше при использовании метода
Теперь мы можем передать параметр
Это может улучшить пользовательский опыт для некоторых приложений.
📲 Мы в MAX
👉 @php_lib
Начиная с Laravel v11.18.0, в методе
Str::limit() появился новый параметр preserveWords.Пример использования метода
limit() — отображение предварительных версий текстового контента, таких как резюме или отрывки блог-постов.Раньше при использовании метода
limit он мог разрывать слова посередине.Теперь мы можем передать параметр
preserveWords как true, и Laravel умно применит ограничение так, чтобы последнее слово было полным.Это может улучшить пользовательский опыт для некоторых приложений.
👉 @php_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Совет по Laravel 💡
Вам нужно использовать одни и те же правила проверки пароля для разных маршрутов пользователей (например, при регистрации и создании панели администратора)?
Обратите внимание на функцию
Ознакомьтесь со всеми правилами в документации: https://github.com/illuminate/validation/blob/master/Rules/Password.php
📲 Мы в MAX
👉 @php_lib
Вам нужно использовать одни и те же правила проверки пароля для разных маршрутов пользователей (например, при регистрации и создании панели администратора)?
Обратите внимание на функцию
Password::defaults(). Ознакомьтесь со всеми правилами в документации: https://github.com/illuminate/validation/blob/master/Rules/Password.php
👉 @php_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4