Telegram Web
📉🤦 152 000 уволенных в IT за год: кому это помогло?

Корпоративная бензопила снова в деле: каждый месяц 2 миллиона американцев теряют работу из-за сокращений. Но действительно ли это помогает компаниям?

🔗 Читать статью
👍5
Кастомные правила PHPStan для улучшения проектов Symfony

Использование PHPStan помогает улучшить качество PHP-кода, особенно в проектах на Symfony, Doctrine и Laravel. Однако для обеспечения долговечности проекта необходимо внедрять дополнительные правила статического анализа. Это включает в себя высокое покрытие типами, качественное тестирование и автоматическое применение правил через CI.

A. Правила для ясного внедрения зависимостей

NoRequiredOutsideClassRule: Запрещает использование атрибута #[Required] в трейтах, чтобы избежать сильной связности и сложночитаемого кода. Рекомендуется использовать явное внедрение через конструктор.

NoAbstractControllerConstructorRule: Абстрактные контроллеры не должны иметь конструкторы, чтобы избежать жесткой связности и сложностей при наследовании. Вместо этого следует использовать атрибут #[Required] для внедрения зависимостей.

NoConstructorAndRequiredTogetherRule: Запрещает одновременное использование конструктора и атрибута #[Required] в одном классе. Необходимо выбрать один способ внедрения зависимостей.

NoFindTaggedServiceIdsCallRule: Предотвращает использование метода findTaggedServiceIds(), предлагая вместо этого использовать автоконфигурацию через атрибуты или теги в конфигурации.

NoGetInControllerRule: Запрещает использование метода $this->get() в контроллерах, поощряя внедрение зависимостей через конструктор.

B. Унификация маршрутизации

NoRoutingPrefixRule: Избегает использования префиксов в маршрутах, чтобы обеспечить прозрачность и единообразие определения путей.

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

C. Подписчики событий

NoListenerWithoutContractRule: Поощряет использование интерфейса EventSubscriberInterface вместо слушателей, чтобы хранить метаданные внутри класса и уменьшить объем конфигурации.

NoStringInGetSubscribedEventsRule: Требует использования ссылок на классы событий в методе getSubscribedEvents(), что облегчает обновление и улучшает поддержку IDE.

👉Читать статью
🔥62
😧 58% IT-специалистов страдают: психология успеха и борьба с синдромом самозванца

Синдром самозванца — не просто модный термин, а реальная проблема, с которой сталкиваются даже опытные разработчики. Почему так происходит и как с этим бороться? Разбираемся в причинах «стандартной болезни айтишников»

➡️ Читайте в статье

Спойлер: дело не в навыках, а в психологии успеха

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
👾2
Эксперт или универсал: Какой путь выбрать

Однажды каждый разработчик сталкивается с выбором:

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

Разбираем плюсы, минусы и подводные камни каждого пути.

Путь эксперта

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

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

Минусы:
— Высокий порог входа: чтобы стать экспертом, нужны годы практики.
— Узкая специализация = риски (если технология потеряет актуальность).
— Иногда скучно: одно и то же из года в год.

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

Путь универсала

Ты не привязываешься к одной технологии и легко прыгаешь между разными стекми. Сегодня фронтенд, завтра DevOps, послезавтра AI — ты всегда готов учиться новому.

Плюсы:
✓ Легче адаптироваться к новым трендам и рынку.
✓ Возможность работать в разных областях.
✓ Больше шансов занять менеджерские позиции.
✓ Можно быть разработчиком-одиночкой (фриланс, стартапы, консалтинг).

Минусы:
— Поверхностные знания = не всегда высокая зарплата.
— Риски синдрома «немного знаю обо всём, но нигде не силён».
— Постоянная учёба: новые фреймворки, языки, подходы... устаёшь от потока информации.

Если тебе нравится пробовать новое, ты быстро адаптируешься к изменениям и любишь разбираться в широком спектре задач — это твой вариант.

Давайте обсудим в комментариях какой путь выбрали вы или хотели бы выбрать 👇

#междусобойчик
👍5
💻 Подборка новостей по PHP за неделю:

🔎 Релиз-кандидат CakePHP 5.2.0-RC1
В этой версии представлены улучшения, такие как команда cake counter_cache для регенерации счетчиков моделей с использованием CounterCacheBehavior, метод ConsoleIntegrationTestTrait::debugOutput() для упрощения отладки интеграционных тестов консольных команд и поддержка опции separator для консольных аргументов и опций, что позволяет определять параметры, например, как --names=foo,bar

🔎 Релиз Laravel MongoDB 5.2
Команда MongoDB выпустила версию 5.2.0 интеграции MongoDB для Laravel. Это обновление включает поддержку Laravel 12, интеграцию с Laravel Scout и возможности векторного поиска.

🔎 Временная область контекста в Laravel 12.1
Команда Laravel выпустила версию 12.1.0 — первое минорное обновление Laravel 12, которое включает метод context scope, метод Arr::partition(), метод getRawSql() для экземпляров исключений запросов и другие улучшения.

🔎 Неделя Symfony #949 (3–9 марта 2025 года)

Библиотека пхпшника #свежак
🥰1
🔹 PHP разбор: что использовать и когда? 🔹

Сегодня сравним isset() vs empty() vs is_null() — функции для проверки переменных в PHP. Когда какую применять? 🤔

isset($var) — Проверяет, существует ли переменная и не равна ли она null.
🔹 isset($var)false, если $var = null; или переменная не объявлена.
🔹 isset($var) → true, если $var = «», 0, false, [], но НЕ null.

empty($var) — Проверяет, считается ли переменная «пустой» (falsey значением).
🔹 empty($var)true, если $var = «», 0, false, null, [], «0».
🔹 empty($var) → false, если $var = «abc», 123, [1,2,3].

is_null($var) — Проверяет, является ли переменная строго null.
🔹 is_null($var)true, только если $var = null.
🔹 is_null($var)false, если $var существует и имеет любое другое значение (даже «», 0, false).

📌 Когда что использовать?
🔹 isset($var) → Проверяем, существует ли переменная.
🔹 empty($var) → Проверяем, «пустая» ли она (falsey).
🔹 is_null($var) → Проверяем, является ли null.

✍️ А какую функцию вы чаще используете в своих проектах?

Библиотека пхпшника #буст
👍16🥱2
🐘 Глубокое погружение в экосистему PHP

Статья представляет собой подробный анализ качества кода в экосистеме PHP. Автор загрузил 236 ГБ Git-репозиториев, содержащих 2,3 миллиарда строк кода, и проанализировал 11,1 миллиона PHP-файлов, чтобы получить представление о состоянии экосистемы.

Основные заключения статьи:

🔸Модульность и лаконичность: 36% файлов содержат менее 100 строк кода, что свидетельствует о предпочтении небольших и сфокусированных реализаций. Широкое использование интерфейсов (3,7 млн интерфейсов против 7,4 млн классов) способствует высокой модульности экосистемы.

🔸Сложность кода: 76,5% файлов имеют низкую цикломатическую сложность (0-10), однако 23,5% кода обладают высокой сложностью, что может затруднять поддержку.

🔸Зависимость от небольшого числа пакетов: Всего 136 пакетов (0,05% от общего числа) составляют более половины всех загрузок в экосистеме. Хотя эти ключевые библиотеки хорошо поддерживаются, такая концентрация создает риски, связанные с зависимостью.

🔸«Теневая инфраструктура»: Некоторые широко используемые пакеты имеют низкую популярность (мало звезд на GitHub), что указывает на то, что критически важные зависимости могут поддерживаться очень небольшими командами.

🔸Состояние экосистемы: Хотя экосистема PHP в целом здорова, 70% пакетов показывают минимальную активность, а 23% кажутся заброшенными, что делает аудит зависимостей необходимым.

👉 Читать статью

Библиотека пхпшника
🔥8👍3
♻️ Повторное выполнение одновременных запросов

В Laravel версий 10 и ниже повторное выполнение неудачных одновременных запросов было невозможным. И что же? В Laravel 11 это возможно! 🚀

Библиотека пхпшника
👍11👾1
Media is too big
VIEW IN TELEGRAM
🧑‍💻 Какой язык программирования учить в 2025 году

Proglib рассказывает базу в формате рилса
Please open Telegram to view this post
VIEW IN TELEGRAM
😁13🥱7
PHP Superglobals: Использование, безопасность и лучшие практики современной разработки

PHP Superglobals — это встроенные глобальные массивы, которые позволяют получать доступ к данным сервера, параметрам запроса, информации о сессиях и другим данным. Они появились в версии PHP 4.1.0, заменив устаревший и небезопасный механизм register_globals, что сделало управление переменными более предсказуемым и улучшило безопасность.

Использование Superglobals в PHP 8
В актуальных версиях PHP эти массивы остаются важным инструментом, но при работе с ними необходимо учитывать риски, такие как XSS-атаки, SQL-инъекции и угон сессий.

Основные Superglobals и их назначение:
$_GET — получение параметров из URL.
$_POST — обработка данных формы, отправленных методом POST.
$_SESSION — хранение переменных сессии.
$_COOKIE — работа с cookie-файлами.
$_SERVER — доступ к метаданным сервера (например, $_SERVER['HTTP_USER_AGENT']).
$_FILES — загрузка файлов.
$_REQUEST — объединяет данные из $_GET, $_POST и $_COOKIE (не рекомендуется к использованию).

🔗 Medium
👍7🌚3
ℹ️ Laravel: упрощённое мокирование HTTP-запросов в тестах

Как это работает

Laravel предоставляет фасад Http, который позволяет элегантно и просто мокировать HTTP-запросы в тестах, снижая объем кода и повышая читаемость.

Основные возможности

Http::fake() поддерживает различные типы ответов:

Строковые ответы: 'example.com' => 'Ответ'
Массивы (конвертируются в JSON): 'api.site.com/*' => ['ключ' => 'значение']
Коды статусов: 'service.com' => 204

Преимущества использования

🔸Снижение объёма кода: упрощённый синтаксис делает тесты более компактными.
🔸Улучшенная читаемость: тесты становятся более понятными и поддерживаемыми.
🔸Гибкость: возможность задавать различные типы ответов для разных URL с поддержкой подстановочных знаков.

Где применять

🔹Тестирование интеграций с внешними API.
🔹Мокирование ответов сервисов для проверки обработки различных сценариев.
🔹Снижение зависимости от внешних сервисов при выполнении тестов.

💬 Читать статью
🤩1👾1
💬 Как оставлять комментарии в чате нашего канала

В нашем чате работает бот Shieldy — он защищает от спама, запрашивая у новых участников решение простой капчи.

⚠️ Проблема, с которой сталкиваются многие: вы нажимаете под постом «Прокомментировать», пишете что-то, а потом получаете бан и не можете писать комментарии.

Почему так: Shieldy отправляет капчу в сам чат, а не в комментарии под конкретный пост. Из-за этого капчу можно не увидеть, не отправить ответ на нее, и бот автоматически заблокирует вас.

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

— Зайдите в описание канала с телефона и нажмите кнопку Discuss / Чат
— Нажмите Join / Присоединиться
— Сразу обратите внимание на сообщение от бота Shieldy
— Решите простой пример и отправьте ответ в чат

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

❗️ Если вас все-таки забанили

— Это временная блокировка на несколько минут
— Подождите и попробуйте зайти позже, бот снова отправит вам капчу

Админы канала никак не могут ускорить процесс, бот автоматически снимает с вас блокировку через пару минут. Мы понимаем, что эта система неидеальна, и ищем более удобное решение.

👾 Спасибо, что активно участвуете в обсуждении наших постов!
Please open Telegram to view this post
VIEW IN TELEGRAM
😢3😁21🥱1
🐧 Пингвин, покоривший мир: история взлета Linux – ОС, управляющей 96% серверов

В 1991 году на компьютере с 4 мегабайтами памяти родилась программа, которая сегодня управляет большей частью интернета, смартфонами и даже космическими аппаратами. Это история Linux, рассказанная одним из первых свидетелей.

➡️ Читать статью
➡️ Зеркало
👍5
Промт для автоматического документирования PHP-кода с использованием PHPDoc

Если вы хотите, чтобы ваш PHP-код был всегда с отличной документацией, вот пример промта для автоматического создания PHPDoc-блоков:

«Проанализируй следующий PHP-код и сгенерируй соответствующие PHPDoc-блоки для всех классов, методов и свойств. Убедись, что используются правильные теги, такие как @param, @return, @throws, и добавь описания для каждого элемента:



\\Ваш код
»

🔹 Рекомендации по использованию:

🌟 Стандарты оформления: Соблюдайте стандарты PSR-12 для единого оформления и удобочитаемости кода.

🔧 Автоматизация: Используйте инструменты для автоматической генерации документации, такие как phpDocumentor. Это сэкономит вам массу времени и сил.

📅 Поддержание актуальности: Регулярно обновляйте документацию, чтобы она всегда отражала текущий контекст. Это упростит поддержку проекта в долгосрочной перспективе, если такая цель конечно имеется😜

Библиотека пхпшника #буст
👍5
php-tokio — Используйте любую асинхронную библиотеку Rust в PHP

Эта библиотека позволяет вам использовать любую асинхронную библиотеку Rust внутри PHP в асинхронном режиме.

Она полностью интегрирована с revolt: это обеспечивает полную совместимость с amphp , PSL и responsephp.

🔗 Github

#инструменты
🔥15
🛠 Ускоряем работу в PhpStorm: самые полезные хоткеи

Продолжаем рассказывать про полезные фишки шторма для начинающих. Вот подборка наиболее полезных сочетаний для редактирования:

🔸 Ctrl + D: дублирование текущей строки или выделенного блока.

🔸 Ctrl + Y: удаление строки под курсором.

🔸 Ctrl + Shift + J: объединение выделенных строк в одну, что упрощает форматирование массивов и HTML-тегов.

🔸 Ctrl + Alt + L: переформатирование кода в соответствии с настройками оформления.

🙂 Пишите в комменты ваши любимые сочетания

Библиотека пхпшника #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Обеспечение надежности JSON из LLM-ответов в PHP

Эта статья рассказывает о библиотеке LLM-JSON-Cleaner, которая помогает разработчикам работать с JSON-ответами от больших языковых моделей (LLM). Если вы когда-нибудь взаимодействовали с LLM API, то наверняка сталкивались с ситуацией, когда вместо чистого JSON приходят ответы, содержащие дополнительный текст — приветствия, комментарии, пояснения. Даже если четко задать модели формат, она все равно может выдать неидеальный JSON.

Вот тут и пригодится LLM-JSON-Cleaner. Она решает две основные задачи: извлекает JSON из ответов LLM, удаляя весь ненужный текст, и проверяет, соответствует ли этот JSON заданной схеме.

Установить ее очень просто — достаточно выполнить команду composer require edgaras/llm-json-cleaner. После этого можно сразу начинать использовать.

👉 Читать статью
🌚5
2025/07/13 05:57:47
Back to Top
HTML Embed Code: