Forwarded from Библиотека C/C++ разработчика | cpp, boost, qt
Сомневаетесь в своем прогрессе? Мы собрали 7 четких признаков того, что вы реально растете как разраб. Спойлер: дело не только в коде!
👉 Подробнее в статье
👉 Подробнее в статье
🧠 Ковариантность и контравариантность в PHP — кратко и по сути
Эти термины звучат сложно, но суть у них простая. Разработчики используют их идеи постоянно — просто не всегда знают, как это называется. Ниже — простое объяснение с примерами.
🔍 Что это такое?
Ковариантность — когда метод возвращает более конкретный тип, чем у родителя.
Контравариантность — когда метод принимает менее конкретный тип, чем у родителя.
✅ Ковариантность (return types)
PHP поддерживает ковариантность только для возвращаемых значений. Примеры:
Можно «сузить» возвращаемый тип в дочернем классе — и это будет валидно.
❌ Контравариантность в return'ах
PHP не позволяет делать возвращаемый тип менее конкретным.
Например,
✅ Контравариантность (параметры)
А вот с параметрами всё наоборот — здесь PHP позволяет делать типы шире:
Такой подход делает методы более гибкими при переопределении.
❌ Ковариантность в параметрах
Нельзя в параметрах делать тип более конкретным, чем у родителя. Это приведёт к ошибке.
🚫 Конструкторы — отдельная история
Ковариантность и контравариантность на конструкторы не влияют. У них своя логика, и они не наследуются как обычные методы.
👉 Читать статью
Эти термины звучат сложно, но суть у них простая. Разработчики используют их идеи постоянно — просто не всегда знают, как это называется. Ниже — простое объяснение с примерами.
🔍 Что это такое?
Ковариантность — когда метод возвращает более конкретный тип, чем у родителя.
Контравариантность — когда метод принимает менее конкретный тип, чем у родителя.
✅ Ковариантность (return types)
PHP поддерживает ковариантность только для возвращаемых значений. Примеры:
float|int
→ int
BaseClass
→ ChildClass
Exportable
→ Exportable&Cacheable
Можно «сузить» возвращаемый тип в дочернем классе — и это будет валидно.
❌ Контравариантность в return'ах
PHP не позволяет делать возвращаемый тип менее конкретным.
Например,
int → float|int
— вызовет ошибку.✅ Контравариантность (параметры)
А вот с параметрами всё наоборот — здесь PHP позволяет делать типы шире:
array
→ array|Collection
Traversable&Collection
→ Collection
EloquentCollection
→ Collection
Такой подход делает методы более гибкими при переопределении.
❌ Ковариантность в параметрах
Нельзя в параметрах делать тип более конкретным, чем у родителя. Это приведёт к ошибке.
🚫 Конструкторы — отдельная история
Ковариантность и контравариантность на конструкторы не влияют. У них своя логика, и они не наследуются как обычные методы.
👉 Читать статью
👍15
Как интегрировать Laravel с Apache Kafka
Статья рассказывает о том, как интегрировать Apache Kafka с Laravel на примере реального кейса — обработка заказа в e-commerce приложении, включая оплату и обновление склада.
🔗 Читать статью
Библиотека пхпшника #буст
Статья рассказывает о том, как интегрировать Apache Kafka с Laravel на примере реального кейса — обработка заказа в e-commerce приложении, включая оплату и обновление склада.
🔗 Читать статью
Библиотека пхпшника #буст
👍9🥱2❤1🤔1😢1
🧱⛏️ Чекни свой крафт: 8 признаков, что разработчик слишком залип в Minecraft
Думаешь, что твоя продуктивность падает из-за багов в коде? А может, все дело в том, что ты мысленно фармишь крипперов, пока твой PM объясняет задачу?
😎 Пройди наш тест и узнай, насколько глубоко ты провалился в пиксельную кроличью нору!
👉 Пройти тест
Библиотека пхпшника
Думаешь, что твоя продуктивность падает из-за багов в коде? А может, все дело в том, что ты мысленно фармишь крипперов, пока твой PM объясняет задачу?
😎 Пройди наш тест и узнай, насколько глубоко ты провалился в пиксельную кроличью нору!
Библиотека пхпшника
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3🥱2
🐘 Промпт дня: собеседование по PHP
Этот промпт поможет вам провести полноценное mock-интервью, где можно потренировать навыки в PHP и получить развёрнутую обратную связь по каждому ответу.
Используем этот промпт, чтобы провести техническую беседу:
Библиотека пхпшника #буст
Этот промпт поможет вам провести полноценное mock-интервью, где можно потренировать навыки в PHP и получить развёрнутую обратную связь по каждому ответу.
Используем этот промпт, чтобы провести техническую беседу:
You are a Senior PHP Developer and experienced interviewer, known for your ability to assess a candidate's PHP proficiency through targeted questions and constructive feedback. Your goal is to conduct a mock PHP interview, simulating a real-world technical assessment. You will ask one question at a time, wait for the candidate's response, provide feedback and corrections, and then proceed to the next question.
Here is the format you will use to conduct the mock interview:
---
Question Number: $question_number
Question: $php_question
(Wait for candidate's response)
#
Feedback on Candidate's Response
Strengths: $strengths_of_response
Areas for Improvement: $areas_for_improvement
Corrected/Improved Answer (if necessary): $corrected_answer
## Next Question
(Proceed to the next question, following the same format)
---
Begin the mock interview
Библиотека пхпшника #буст
🔥8👍3😢2🌚1
🔍 Задумывались ли вы о
Оператор строгого сравнения
Но так ли необходима встроенная проверка типов в
Раньше типичный код выглядел так:
Сейчас, с распространением типизации, логика меняется:
Проверка типов переместилась в сигнатуру функции, делая строгое сравнение избыточным.
Даже в функциях с разными возвращаемыми типами
Но ведь можно заменить на
Вывод:
💬 А какой вариант чаще используете вы?
Библиотека пхпшника #междусобойчик
===
в PHP?Оператор строгого сравнения
===
настолько привычен, что многие разработчики автоматически добавляют третий знак равенства, даже не задумываясь.Но так ли необходима встроенная проверка типов в
===
?Раньше типичный код выглядел так:
function isEqual($a, $b){ return $a === $b;}
Сейчас, с распространением типизации, логика меняется:
function isEqual(string $a, string $b){ return $a == $b; // Типы уже гарантированы}
Проверка типов переместилась в сигнатуру функции, делая строгое сравнение избыточным.
Даже в функциях с разными возвращаемыми типами
===
не всегда оправдан. Классический пример — strpos()
:$pos = strpos('abc', 'a');// Традиционный вариант:if ($pos === false) { // действие, если не найдено}`
Но ведь можно заменить на
is_bool($pos)
или явную проверку $pos === false && !is_int($pos)
.Вывод:
===
остаётся полезным инструментом, но его применение не всегда обосновано. Гибкое использование ==
в сочетании с современной типизацией делает код чище без потери надёжности.💬 А какой вариант чаще используете вы?
Библиотека пхпшника #междусобойчик
😁17🌚5🤔2🥱1
Продолжаем рассказывать про полезные фишки шторма для начинающих. Вот подборка дополнительных возможностей, не попавших в прошлые подборки:
🔹 Ctrl + E: открыть список недавно измененных файлов.
🔹 Alt + Insert: генерация кода, например, геттеров, сеттеров или конструкторов.
🔹 Shift + F6: переименование переменной, функции или файла.
Библиотека пхпшника #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1🔥1🥱1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🎉🐙🐱 20 лет Git: все такой же необычный, все такой же великолепный
Легендарному Git стукнуло 20! Вспоминаем, как проект, который Линус Торвальдс называл «тупым менеджером контента», стал незаменимым инструментом для всех, кто хоть раз писал код или даже просто хранил файлы.
Погружаемся в историю, эволюцию и влияние Git на индустрию разработки.
➡️ Читать статью
🐸 Библиотека программиста
Легендарному Git стукнуло 20! Вспоминаем, как проект, который Линус Торвальдс называл «тупым менеджером контента», стал незаменимым инструментом для всех, кто хоть раз писал код или даже просто хранил файлы.
Погружаемся в историю, эволюцию и влияние Git на индустрию разработки.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Архитектура в Laravel. Как сделать код понятным и масштабируемым
Сегодня речь пойдет о теме, где нет универсальных решений, но есть проверенные практики — как организовать код в Laravel, чтобы он оставался чистым даже спустя годы развития.
🔗 Хабр
Библиотека пхпшника
Сегодня речь пойдет о теме, где нет универсальных решений, но есть проверенные практики — как организовать код в Laravel, чтобы он оставался чистым даже спустя годы развития.
🔗 Хабр
Библиотека пхпшника
❤5👍2👾1
Готовы проверить свои знания в базовой терминологии? В этой головоломке спрятаны 11 терминов из мира программиста.
Правила просты:
— Найдите 11 слов в сетке
— Напишите в комментариях, какие слова вы нашли
— Объясните один из терминов так, чтобы даже джун понял
🏆 Кто первым найдет все 11 слов и объяснит хотя бы один термин — тот настоящий бэкендер😏
Погнали 👇
Библиотека пхпшника #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека питониста | Python, Django, Flask
На собеседовании важно уметь выделить главное — свои сильные стороны, мышление и ценности. Это помогает справляться со стрессом, неожиданными вопросами и субъективной оценкой.
• Как работает PCA
• Зачем он нужен
• Как применять его на практике — например, для анализа доходностей акций S&P 500
Библиотека питониста
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
💻 Подборка новостей по PHP за неделю:
🔎 Laravel 12.8: Автоматическая загрузка отношений и новые возможности
Команда Laravel представила версию 12.8.0, в которой реализована автоматическая eager-загрузка отношений. Это упрощает работу с данными и снижает вероятность возникновения проблемы N+1 запросов.
🔎 Laravel 12.6: Метод fillAndInsert и другие улучшения
В версии 12.6.0 фреймворка Laravel появился метод
🔎 Релизы PHP 8.4.6 и 8.3.20: исправления ошибок и улучшения безопасности
Рекомендуется обновиться до этих версий, чтобы обеспечить стабильную и безопасную работу приложений.
🔎 Неделя Symfony #954 (7–13 апреля 2025 года)
На этой неделе Symfony 7.3 перешёл в стадию «feature freeze» в преддверии релиза, запланированного на конец мая 2025 года.
Библиотека пхпшника #свежак
🔎 Laravel 12.8: Автоматическая загрузка отношений и новые возможности
Команда Laravel представила версию 12.8.0, в которой реализована автоматическая eager-загрузка отношений. Это упрощает работу с данными и снижает вероятность возникновения проблемы N+1 запросов.
🔎 Laravel 12.6: Метод fillAndInsert и другие улучшения
В версии 12.6.0 фреймворка Laravel появился метод
fillAndInsert()
, который позволяет заполнять модель данными и сразу вставлять её в базу данных, учитывая приведения типов и временные метки.🔎 Релизы PHP 8.4.6 и 8.3.20: исправления ошибок и улучшения безопасности
Рекомендуется обновиться до этих версий, чтобы обеспечить стабильную и безопасную работу приложений.
🔎 Неделя Symfony #954 (7–13 апреля 2025 года)
На этой неделе Symfony 7.3 перешёл в стадию «feature freeze» в преддверии релиза, запланированного на конец мая 2025 года.
Библиотека пхпшника #свежак
👍1
🚀 Как использовать Enums в Laravel 12
С выходом PHP 8.1 в язык пришли Enum'ы — перечисления, которые делают код чище, безопаснее и выразительнее. Laravel 12 полностью поддерживает Enums и превращает их в мощный инструмент валидации, кастов моделей и отображения данных.
🧩 Что дают Enums?
Надёжная типизация и защита от ошибок
Удобство в работе с методами (
Простое использование в Eloquent, Blade, API, валидации
Мощные кастомные методы и проверка переходов состояний
🔥 Enums становятся частью доменной логики, а не просто значениями.
📚 В статье — примеры, практики, best practices и советы по производительности.
🔗 Medium
Библиотека пхпшника #буст
С выходом PHP 8.1 в язык пришли Enum'ы — перечисления, которые делают код чище, безопаснее и выразительнее. Laravel 12 полностью поддерживает Enums и превращает их в мощный инструмент валидации, кастов моделей и отображения данных.
🧩 Что дают Enums?
Надёжная типизация и защита от ошибок
Удобство в работе с методами (
label()
, color()
, isFinalized()
)Простое использование в Eloquent, Blade, API, валидации
Мощные кастомные методы и проверка переходов состояний
🔥 Enums становятся частью доменной логики, а не просто значениями.
📚 В статье — примеры, практики, best practices и советы по производительности.
🔗 Medium
Библиотека пхпшника #буст
👍7🔥1😢1
🛡️ Переход с
Если вы всё ещё используете аннотации
🔹 Обновите бандл до версии 6.0
🔹 Используйте Rector для миграции аннотаций в PHP-атрибуты
🔹 Исправьте ограничение
🔹 Замените
🔹 Разделяйте сложные условия на несколько
🔹 Используйте enum-классы для прав доступа
🔹 Перейдите на нативный атрибут
🔧 Инструменты для автоматизации
Используйте Rector для автоматического применения преобразований и PHPStan для контроля качества кода.
📚 Подробнее
Полное руководство с примерами и конфигурациями доступно в оригинальной статье
@Security
на #[IsGranted]
в SymfonyЕсли вы всё ещё используете аннотации
@Security
из sensio/framework-extra-bundle
, пора переходить на нативные атрибуты Symfony. Вот как это сделать:🔹 Обновите бандл до версии 6.0
🔹 Используйте Rector для миграции аннотаций в PHP-атрибуты
🔹 Исправьте ограничение
#[Security]
, чтобы он стал повторяемым🔹 Замените
#[Security(«is_granted(...)»)]
на #[IsGranted(...)]
🔹 Разделяйте сложные условия на несколько
#[IsGranted]
🔹 Используйте enum-классы для прав доступа
🔹 Перейдите на нативный атрибут
Symfony\Component\Security\Http\Attribute\IsGranted
🔧 Инструменты для автоматизации
Используйте Rector для автоматического применения преобразований и PHPStan для контроля качества кода.
📚 Подробнее
Полное руководство с примерами и конфигурациями доступно в оригинальной статье
Reli — профилировщик выборки или памяти
Это профилировщик, написанный на PHP, который считывает информацию о запуске виртуальной машины PHP извне процесса. Вы можете обнаружить узкие места производительности или утечки памяти в своих скриптах, не меняя целевой скрипт и не загружая расширения.
🔗 Github
#инструменты
Это профилировщик, написанный на PHP, который считывает информацию о запуске виртуальной машины PHP извне процесса. Вы можете обнаружить узкие места производительности или утечки памяти в своих скриптах, не меняя целевой скрипт и не загружая расширения.
🔗 Github
#инструменты
👍5❤1
🐘 Квиз для PHP-разработчиков: ответишь на все вопросы или сольешься?
Проверь свои знания PHP перед собеседованием: тест с вопросами о типах данных, функциях, директивах и классах. Идеально для разработчиков, готовящихся к техническому интервью.
👉 Пройти тест
Проверь свои знания PHP перед собеседованием: тест с вопросами о типах данных, функциях, директивах и классах. Идеально для разработчиков, готовящихся к техническому интервью.
👉 Пройти тест
🤔1
Когда сроки горят, а разработчиков не хватает
Нехватка квалифицированных разработчиков, срывы дедлайнов и перегруз команды — эти проблемы знакомы большинству IT-руководителей. В условиях растущей конкуренции найти баланс между качеством реализации, сроками и бюджетом становится всё сложнее, особенно когда проект требует редких компетенций или быстрого масштабирования.
Решение проблемы — задействовать дополнительные ресурсы на аутсорсе или аутстаффе. Например, обратиться в Proglib. Да-да, мы запустили свою студию веб-разработки!
Что мы предлагаем:
• Опытные специалисты для аутстаффа (frontend, backend, DevOps, UI/UX, PM, BA)
• Полноценная разработка проектов под ключ
• Гибкое масштабирование команды под потребности клиента
• Прозрачная коммуникация и регулярная отчетность
Для каждого проекта формируется индивидуальная команда, исходя из конкретных потребностей заказчика.
Заполните форму, чтобы ускорить свою разработку 👉 https://forms.yandex.ru/u/67e548a4eb614622efa0bcb2/
Нехватка квалифицированных разработчиков, срывы дедлайнов и перегруз команды — эти проблемы знакомы большинству IT-руководителей. В условиях растущей конкуренции найти баланс между качеством реализации, сроками и бюджетом становится всё сложнее, особенно когда проект требует редких компетенций или быстрого масштабирования.
Решение проблемы — задействовать дополнительные ресурсы на аутсорсе или аутстаффе. Например, обратиться в Proglib. Да-да, мы запустили свою студию веб-разработки!
Что мы предлагаем:
• Опытные специалисты для аутстаффа (frontend, backend, DevOps, UI/UX, PM, BA)
• Полноценная разработка проектов под ключ
• Гибкое масштабирование команды под потребности клиента
• Прозрачная коммуникация и регулярная отчетность
Для каждого проекта формируется индивидуальная команда, исходя из конкретных потребностей заказчика.
Заполните форму, чтобы ускорить свою разработку 👉 https://forms.yandex.ru/u/67e548a4eb614622efa0bcb2/
🥱4😁3