
Получите клиентов в любой нише!
Делегируйте запуск рекламы нам — бесплатно
Подробнее
5.5

Библиотека PHP программиста 👨🏼💻👩💻
Поделиться
В избранное
Купить рекламу в этом канале
Формат:
keyboard_arrow_down
- 1/24
- 2/48
- 3/72
- 7 дней
- Репост
1 час в топе / 24 часа в ленте
Количество:
keyboard_arrow_down
- 1
- 2
- 3
- 4
- 5
- 8
- 10
- 15
Стоимость публикации:
local_activity
2 727.27₽2 727.27₽local_mall
0.0%
Осталось по этой цене:0
Последние посты канала
imageИзображение не доступно для предпросмотра
💰Вопрос безопасности в разработке становится всё более актуальным. Но как обосновать инвестиции в безопасность для бизнеса? Как оценить её финансовую сторону?
🗓 Открытый вебинар 23 апреля в 20:00 мск даст ответы на самые важные вопросы. Мы расскажем, как сэкономить на долгосрочных потерях, внедряя эффективные меры безопасности с самого начала разработки.
🧑💻 Спикер Максим Чащин — директор по информационной безопасности в ГК «Девелоника».
Вы узнаете,сколько стоит устранение уязвимостей, как принцип «shift left» влияет на итоговую производительность и как измерять эффективность мер безопасности. Это поможет вам убедить руководство инвестировать в безопасность на всех уровнях разработки.
👉 Присоединяйтесь к открытому уроку и получите скидку на большое обучение «Внедрение и работа в DevSecOps»: https://vk.cc/cKVaef
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Вы узнаете,
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
116
08:46
18.04.2025
Сегодня я покажу вам простой, но мощный способ, как ускорить отладку в Laravel при работе с большим количеством логики в контроллерах и сервисах.
🔍 Ловим баги быстрее с помощью
Обычно мы используем
Спасает Ray — инструмент от Spatie, который интегрируется с Laravel и выводит отладочную информацию в отдельное десктопное приложение.
Пример:
Ты можешь:
- выводить переменные без прерывания скрипта;
- смотреть SQL-запросы в реальном времени;
- использовать цветовые метки, чтобы различать вывод из разных участков кода.
⚙️ Установка
И по желанию установить десктоп-приложение с сайта Spatie.
В
🧠 Совет от себя
Ray особенно хорошо заходит, когда работаешь в команде — ты можешь добавить временный
Пробовали Ray? Или у вас есть свои инструменты для отладки — может, кастомные макросы или трейты? Делитесь в комментах 👇
👉 @php_lib
🔍 Ловим баги быстрее с помощью
ray()
от SpatieОбычно мы используем
dd()
или dump()
в Laravel, чтобы посмотреть, что творится с переменными. Но как только проект становится крупнее — эти методы начинают мешать, особенно когда нужно отслеживать несколько значений в разных местах.Спасает Ray — инструмент от Spatie, который интегрируется с Laravel и выводит отладочную информацию в отдельное десктопное приложение.
Пример:
ray($user);
ray($order)->blue();
ray()->showQueries();
Ты можешь:
- выводить переменные без прерывания скрипта;
- смотреть SQL-запросы в реальном времени;
- использовать цветовые метки, чтобы различать вывод из разных участков кода.
⚙️ Установка
composer require spatie/laravel-ray --dev
И по желанию установить десктоп-приложение с сайта Spatie.
В
config/ray.php
можно кастомизировать поведение: включать Ray только на dev-среде, логировать только определённые запросы и т.д.🧠 Совет от себя
Ray особенно хорошо заходит, когда работаешь в команде — ты можешь добавить временный
ray()
-лог, не ломая исполнение и не мешая другим.Пробовали Ray? Или у вас есть свои инструменты для отладки — может, кастомные макросы или трейты? Делитесь в комментах 👇
👉 @php_lib
308
04:31
17.04.2025
Сегодня я хочу поговорить о том, как избавиться от дублирования кода в Laravel, особенно в тех местах, где это совсем не бросается в глаза — в валидации запросов.
✋ Проблема
У тебя есть формы на создание и обновление сущности. И в обоих случаях в контроллере или Form Request’ах ты пишешь одинаковые правила валидации, только с небольшими отличиями.
Пример:
✅ Решение — базовый класс с общими правилами
Создай абстрактный класс с общими правилами:
А потом в наследниках добавляй нужные модификаторы:
🤔 Альтернатива — кастомная Rule-комбинация
Можно пойти дальше и использовать кастомные Rule-классы, если валидация становится сложной и завязанной на бизнес-логику.
Я часто вижу дублирование в валидации, особенно в старых проектах. Убрав это, код становится чище, а изменения в правилах — в разы проще.
А ты как организуешь валидацию? Используешь Form Request или валидируешь прямо в контроллере?
👉 @php_lib
✋ Проблема
У тебя есть формы на создание и обновление сущности. И в обоих случаях в контроллере или Form Request’ах ты пишешь одинаковые правила валидации, только с небольшими отличиями.
Пример:
// StorePostRequest.php
return [
'title' => 'required|string|max:255',
'content' => 'required',
];
// UpdatePostRequest.php
return [
'title' => 'sometimes|required|string|max:255',
'content' => 'sometimes|required',
];
✅ Решение — базовый класс с общими правилами
Создай абстрактный класс с общими правилами:
abstract class BasePostRequest extends FormRequest
{
protected function commonRules(): array
{
return [
'title' => 'string|max:255',
'content' => 'string',
];
}
}
А потом в наследниках добавляй нужные модификаторы:
// StorePostRequest.php
class StorePostRequest extends BasePostRequest
{
public function rules(): array
{
return array_merge([
'title' => 'required',
'content' => 'required',
], $this->commonRules());
}
}
// UpdatePostRequest.php
class UpdatePostRequest extends BasePostRequest
{
public function rules(): array
{
return array_merge([
'title' => 'sometimes|required',
'content' => 'sometimes|required',
], $this->commonRules());
}
}
🤔 Альтернатива — кастомная Rule-комбинация
Можно пойти дальше и использовать кастомные Rule-классы, если валидация становится сложной и завязанной на бизнес-логику.
Я часто вижу дублирование в валидации, особенно в старых проектах. Убрав это, код становится чище, а изменения в правилах — в разы проще.
А ты как организуешь валидацию? Используешь Form Request или валидируешь прямо в контроллере?
👉 @php_lib
342
03:34
15.04.2025
🚀 Подпишись и прокачай свои скилы: лучшие каналы для IT-специалистов 👨💻📲
Папка с каналами для DevOps, Linux - Windows СисАдминов👍
Папка с каналами для 1С программистов🧑💻
Папка с каналами для C++ программистов👩💻
Папка с каналами для Python программистов👩💻
Папка с каналами для Java программистов🖥
Папка с книгами для программистов 📚
Папка для программистов (frontend, backend, iOS, Android)💻
GitHub Сообщество🧑💻
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base)🖥
https://t.me/database_info Все про базы данных
Разработка игр📱
https://t.me/game_devv Все о разработке игр
БигДата, машинное обучение🖥
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
QA, тестирование🖥
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность💻
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_2 Хакер Free
Книги, статьи для дизайнеров🎨
https://t.me/ux_web Статьи, книги для дизайнеров
Математика🧮
https://t.me/Pomatematike Канал по математике
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
Excel лайфхак🙃
https://t.me/Excel_lifehack
Технологии🖥
https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)
Вакансии💰
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
https://t.me/rabota1C_rus Вакансии для программистов 1С
Папка с каналами для DevOps, Linux - Windows СисАдминов
Папка с каналами для 1С программистов
Папка с каналами для C++ программистов
Папка с каналами для Python программистов
Папка с каналами для Java программистов
Папка с книгами для программистов 📚
Папка для программистов (frontend, backend, iOS, Android)
GitHub Сообщество
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base)
https://t.me/database_info Все про базы данных
Разработка игр
https://t.me/game_devv Все о разработке игр
БигДата, машинное обучение
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
QA, тестирование
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_2 Хакер Free
Книги, статьи для дизайнеров
https://t.me/ux_web Статьи, книги для дизайнеров
Математика
https://t.me/Pomatematike Канал по математике
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
Excel лайфхак
https://t.me/Excel_lifehack
Технологии
https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)
Вакансии
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
https://t.me/rabota1C_rus Вакансии для программистов 1С
413
09:37
12.04.2025
Сегодня речь пойдёт о типах в PHP и как правильно их использовать в вашем проекте.
🧠 Сила строгой типизации в PHP
В PHP 7 мы получили возможность указывать типы аргументов и возвращаемых значений. В PHP 8 всё стало ещё строже. Но многие до сих пор этим пренебрегают — зря!
Вот пример. Допустим, у вас есть функция:
А теперь тот же код с типами:
Плюсы второго варианта:
- Автоматическая проверка типов во время выполнения
- IDE подсказывает, если вы передаёте что-то не то
- Код самодокументируемый
- Проще писать тесты
🔐 Совет от меня: включите строгий режим в начале всех ваших файлов:
Это заставит PHP быть более строго типизированным и поможет ловить ошибки ещё до выполнения логики.
💬 А вы используете строгую типизацию? Или всё ещё пишете
Поделитесь опытом в комментариях👇
👉 @php_lib
🧠 Сила строгой типизации в PHP
В PHP 7 мы получили возможность указывать типы аргументов и возвращаемых значений. В PHP 8 всё стало ещё строже. Но многие до сих пор этим пренебрегают — зря!
Вот пример. Допустим, у вас есть функция:
function calculateTotal($price, $quantity) {
return $price * $quantity;
}
А теперь тот же код с типами:
function calculateTotal(float $price, int $quantity): float {
return $price * $quantity;
}
Плюсы второго варианта:
- Автоматическая проверка типов во время выполнения
- IDE подсказывает, если вы передаёте что-то не то
- Код самодокументируемый
- Проще писать тесты
🔐 Совет от меня: включите строгий режим в начале всех ваших файлов:
declare(strict_types=1);
Это заставит PHP быть более строго типизированным и поможет ловить ошибки ещё до выполнения логики.
💬 А вы используете строгую типизацию? Или всё ещё пишете
$data = getData();
и надеетесь, что там будет то, что вы ожидаете?Поделитесь опытом в комментариях👇
👉 @php_lib
384
06:40
12.04.2025
imageИзображение не доступно для предпросмотра
⚡️Laravel — удобный PHP-фреймворк, а его возможности выходят далеко за рамки классической веб-разработки. Хотите увидеть, как он помогает автоматизировать реальные процессы?
На бесплатном вебинаре 16 апреля в 20:00 мск покажем, как с помощью Laravel и Telegram Bot API создать Telegram-бота для дистанционного полива цветов. Подключим IoT-устройства, разберём работу с MQTT и визуализируем данные через Grafana.
Вы узнаете, как использовать Laravel в IoT-сценариях, управлять устройствами через Telegram, собирать и отображать метрики, а также получите представление о возможностях Arduino на примере ESP-8266.
👉Регистрируйтесь и получите скидку на большое обучение «Framework Laravel»: https://vk.cc/cKIOcm
На бесплатном вебинаре 16 апреля в 20:00 мск покажем, как с помощью Laravel и Telegram Bot API создать Telegram-бота для дистанционного полива цветов. Подключим IoT-устройства, разберём работу с MQTT и визуализируем данные через Grafana.
Вы узнаете, как использовать Laravel в IoT-сценариях, управлять устройствами через Telegram, собирать и отображать метрики, а также получите представление о возможностях Arduino на примере ESP-8266.
👉Регистрируйтесь и получите скидку на большое обучение «Framework Laravel»: https://vk.cc/cKIOcm
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
461
10:03
11.04.2025
.🛠 Как логировать SQL-запросы только при ошибках
Часто сталкиваюсь с ситуацией: ошибка 500 в проде, а что именно пошло не так — неясно. Особенно если это была ошибка в SQL-запросе. Логировать все SQL-запросы — слишком жирно и шумно. Но логировать только при исключениях — вот это огонь!
🔍 Решение
Добавьте следующий сниппет в
🔐 Пояснение
- При каждом SQL-запросе мы проверяем, был ли в этом запросе выброшен exception.
- Если да — логируем SQL.
- Используем отдельный лог-канал
👉 Создайте в
Теперь, если в продакшене будет падение — вы увидите какой SQL-запрос был выполнен перед ошибкой. Это невероятно ускоряет диагностику багов.
👉 @php_lib
Часто сталкиваюсь с ситуацией: ошибка 500 в проде, а что именно пошло не так — неясно. Особенно если это была ошибка в SQL-запросе. Логировать все SQL-запросы — слишком жирно и шумно. Но логировать только при исключениях — вот это огонь!
🔍 Решение
Добавьте следующий сниппет в
AppServiceProvider
:
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
public function boot()
{
DB::listen(function ($query) {
if (app()->bound('exception.logged')) {
Log::channel('sql')->debug($query->sql, $query->bindings);
}
});
app()->singleton('exception.logged', function () {
return true;
});
app()->error(function (\Throwable $e) {
app()->instance('exception.logged', true);
});
}
🔐 Пояснение
- При каждом SQL-запросе мы проверяем, был ли в этом запросе выброшен exception.
- Если да — логируем SQL.
- Используем отдельный лог-канал
sql
, чтобы не засорять основной laravel.log
.👉 Создайте в
config/logging.php
канал sql
, направьте его в отдельный файл, например storage/logs/sql.log
.Теперь, если в продакшене будет падение — вы увидите какой SQL-запрос был выполнен перед ошибкой. Это невероятно ускоряет диагностику багов.
👉 @php_lib
453
08:19
11.04.2025
🔍 Как логировать все входящие параметры в методы классов
Представим, что у нас есть большой проект с кучей классов, и в одном месте какая-то логика работает не так, как ожидалось. Часто хочется понять: а с какими аргументами вообще вызывается метод?
Вот удобный способ — использовать
🧠 Профит: когда метод вызывается, вы сразу в логе видите:
- с какими аргументами он был вызван
- откуда он был вызван (файл и строка)
Это суперполезно в проде, когда нет возможности ставить дебаггер, а нужно поймать, что пошло не так.
📌 Совет: делайте
👉 @php_lib
Представим, что у нас есть большой проект с кучей классов, и в одном месте какая-то логика работает не так, как ожидалось. Часто хочется понять: а с какими аргументами вообще вызывается метод?
Вот удобный способ — использовать
debug_backtrace()
и func_get_args()
:
class SomeService {
public function process($userId, $data) {
$this->logArgs(__METHOD__);
// Дальше идёт логика
}
protected function logArgs($methodName) {
$args = func_get_args();
array_shift($args); // Убираем $methodName
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2)[1];
error_log(sprintf(
"[%s] Called from %s:%s with args: %s",
$methodName,
$trace['file'] ?? 'n/a',
$trace['line'] ?? 'n/a',
json_encode($args, JSON_UNESCAPED_UNICODE)
));
}
}
🧠 Профит: когда метод вызывается, вы сразу в логе видите:
- с какими аргументами он был вызван
- откуда он был вызван (файл и строка)
Это суперполезно в проде, когда нет возможности ставить дебаггер, а нужно поймать, что пошло не так.
📌 Совет: делайте
logArgs()
общим методом в базовом классе и логируйте важные вызовы на проде, оборачивая условием по уровню логирования или флагу.👉 @php_lib
430
11:49
10.04.2025
imageИзображение не доступно для предпросмотра
Как настроить мониторинг с помощью Grafana для PHP-приложений?
Каждый PHP-разработчик рано или поздно сталкивается с необходимостью мониторинга своих приложений. Сложные системы требуют эффективных инструментов для отслеживания их работы. Одним из таких инструментов является Grafana — мощное средство для визуализации данных и настройки алертов, которое делает мониторинг простым и наглядным.
На открытом вебинаре 15 апреля в 20:00 мск вы научитесь:
- Подключать различные источники данных, такие как Graphite и PostgreSQL.
- Визуализировать данные с помощью гибких и информативных графиков.
- Настраивать алерты, чтобы получать уведомления о критических событиях.
Присоединяйтесь к вебинару и получите скидку на большое обучение «PHP Developer. Professional.
Регистрируйтесь прямо сейчас: https://vk.cc/cKFYw2
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Каждый PHP-разработчик рано или поздно сталкивается с необходимостью мониторинга своих приложений. Сложные системы требуют эффективных инструментов для отслеживания их работы. Одним из таких инструментов является Grafana — мощное средство для визуализации данных и настройки алертов, которое делает мониторинг простым и наглядным.
На открытом вебинаре 15 апреля в 20:00 мск вы научитесь:
- Подключать различные источники данных, такие как Graphite и PostgreSQL.
- Визуализировать данные с помощью гибких и информативных графиков.
- Настраивать алерты, чтобы получать уведомления о критических событиях.
Присоединяйтесь к вебинару и получите скидку на большое обучение «PHP Developer. Professional.
Регистрируйтесь прямо сейчас: https://vk.cc/cKFYw2
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
443
09:48
10.04.2025
Сегодня я покажу вам одну фичу PHP, которую многие или не знают, или забывают использовать — array destructuring. А зря!
Смотрите, вместо привычного:
Можно писать так:
Код стал чище, короче и понятнее. Особенно приятно, когда возвращается ассоциативный массив — не надо писать вручную кучу
Или с обычными массивами:
Разворот массива работает с любой нумерацией — главное, чтобы структура соответствовала.
💡 Применяю это часто в контроллерах, в тестах и когда разбираю конфиги. Удобно и читаемо.
👉 @php_lib
Смотрите, вместо привычного:
$user = getUser(); // ['name' => 'Ivan', 'email' => '[email protected]']
$name = $user['name'];
$email = $user['email'];
Можно писать так:
['name' => $name, 'email' => $email] = getUser();
Код стал чище, короче и понятнее. Особенно приятно, когда возвращается ассоциативный массив — не надо писать вручную кучу
$data['ключ']
.Или с обычными массивами:
[$id, $name, $email] = getUserArray(); // [1, 'Ivan', '[email protected]']
Разворот массива работает с любой нумерацией — главное, чтобы структура соответствовала.
💡 Применяю это часто в контроллерах, в тестах и когда разбираю конфиги. Удобно и читаемо.
👉 @php_lib
523
07:45
09.04.2025
close
С этим каналом часто покупают
Отзывы канала
Отзывов нет
Лучшие в тематике
Новинки в тематике
Выбрано
0
каналов на сумму:0.00₽
Подписчики:
0
Просмотры:
lock_outline
Перейти в корзинуКупить за:0.00₽
Комментарий