Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
11.3K subscribers
1.33K photos
19 videos
27 files
4.02K links
Все самое полезное для пхпшника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/bca892d6

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
📊 Состояние PHP в 2024 году: результаты исследования состояния экосистемы разработчиков от JetBrains

PHP остается краеугольным камнем веб-разработки, на нем работают миллионы сайтов по всему миру. Его активное и заинтересованное сообщество ценит его гибкость и простоту использования.

В этом году в опросе приняли участие 2 660 PHP-разработчиков со всего мира. По уровню опыта преобладают мидлы. 86% уже используют PHP 8, но его распространение идёт медленнее, чем в своё время у PHP 7.

Среди фреймворков Laravel безоговорочно лидирует, а его популярность продолжает расти. В плане инструментов PhpStorm остаётся главным выбором разработчиков, однако VS Code набирает обороты, особенно среди начинающих.

Читайте в исследовании и узнайте, как PHP-разработчики ориентируются в постоянно меняющемся мире современной веб-разработки.
👍14🤩21
🔥 Как НЕ НАДО собеседовать middle разработчиков

Автор является действующим PHP middle разработчиком в одной средней компании. Занимается разработкой highload микросервисов в B2B сфере. Суммарно обрабатывается около 50к запросов в секунду, хранятся миллиарды записей и находится на поддержке около тысячи интернет‑магазинов.
Он имеет опыт в техническом собеседовании, в том числе и других middle php разработчиков. За свою карьеру провёл пару десятков таких собеседований, по результатам которых было нанято около 5 разработчиков и 2 аутсорс компании.

🔗Читай на Хабре, как автор делится опытом собеседования на позицию middle php разработчика во «ВКонтакте»
👍4😢3😁1🤔1
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования

🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion

#️⃣C#

Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
🤔1
🎨 MetaStorm — плагин, расширяющий PHPStorm

Этот плагин позволяет расширить поведение PhpStorm и добавить поддержку ваших собственных фреймворков с помощью нескольких строк в файле конфигурации. Он разблокирует ссылки и автодополнение в обычных местах, таких как method($object,), render() и т. д.

👉Официальный сайт

#инструменты
🔥1
Какова цель использования функций array_count_values() и array_search() в PHP?

array_count_values(): Функция array_count_values() используется для подсчёта количества вхождений значений в массиве. Она возвращает ассоциативный массив, где ключи — это уникальные значения из входного массива, а значения — количество их появлений.

array_search(): Функция array_search() ищет определённое значение в массиве и возвращает первый ключ, соответствующий этому значению. Если значение не найдено, функция возвращает false.

#вопросы_с_собеседований
👍4🔥21
🔗 В PHP 8.4 улучшено именование замыканий для упрощения отладки

В PHP 8.4 улучшена читаемость стека вызовов при использовании замыканий. Ранее в трассировке ошибок замыкания обозначались просто как {closure}, без указания их расположения в коде. Это усложняло отладку, особенно если в одном пространстве имен использовалось несколько замыканий.

Теперь в стеке вызовов указывается место объявления замыкания. Например, вместо {closure} теперь отображается {closure:Shopware\Storefront\Controller\StorefrontController::renderStorefront():26}, что позволяет точно определить, где было создано и вызвано замыкание.

Кроме того, при использовании var_dump теперь можно увидеть файл и строку, где объявлено замыкание. Этот функционал ранее использовался в Tideways Profiler и Xdebug, а теперь стал частью PHP благодаря вкладу одного из разработчиков.

👉Читать подробнее
🔥30
💡 Предварительный просмотр почтовых отправлений

При работе с почтовыми файлами мы часто отправляем их в MailHog или Mailtrap, чтобы быстро просмотреть отрисованное письмо. Знаете ли вы, что Laravel позволяет просматривать письма в браузере, как если бы это были обычные файлы Blade? 🚀

#совет
👍11
🤔 Прекратите использовать псевдотипы

PHP использует псевдотипы callable и iterable для удобной валидации данных, но они не являются полноценными типами, как string или array.

Callable появился в PHP 5.4 и объединяет замыкания, строки и массивы, ссылающиеся на функции. Он удобен, но создаёт сложности при статическом анализе, так как строка может содержать несуществующую функцию.

Iterable, введённый в PHP 7.1, проверяет, является ли значение массивом или реализует интерфейс Traversable. В PHP 8.2 он перестал быть псевдотипом и теперь представляет собой объединение двух типов. Его использование может вызвать ошибки, если, например, массив заменяется генератором, что делает невозможным прямой доступ по индексу.

Псевдотипы удобны, но их использование может затруднить анализ кода и привести к неожиданным ошибкам. Вместо callable лучше использовать Closure, а iterable заменять конкретными типами (array или Iterator) для большей предсказуемости.

💬Читать подробнее
👍4🤔3🌚2
Какой метод принимает имя класса или ссылку на объект и возвращает массив имен интерфейсов, которые он реализует?
Anonymous Quiz
68%
class_implements()
4%
is_subclass()
3%
is_subclass_of()
24%
class_interface()
TwigStan — статический анализатор для Twig'а

Это статический анализатор для шаблонов Twig, основанный на PHPStan. Он предназначен для выявления ошибок в шаблонах Twig на этапе разработки, что способствует повышению качества и надежности кода. Инструмент компилирует шаблоны Twig в PHP-код, оптимизирует его для лучшего анализа и сообщает об ошибках, указывая исходный шаблон и номер строки, где возникла проблема.

Обратите внимание, что проект находится на экспериментальной стадии

🔗Github

#инструменты
👍81🔥1
Какова цель «Gii» в Yii2?

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

Возможности Gii в Yii2:
🔸Ускоряет разработку:
Автоматически генерирует шаблонный код, сокращая рутинные задачи.

🔸Создает модели из базы данных:
Генерирует Active Record модели, анализируя структуру базы данных.

🔸Генерирует CRUD (Создание, Чтение, Обновление, Удаление):
Создает контроллеры, представления и модели для работы с данными.

🔸Уменьшает вероятность ошибок:
Обеспечивает единообразие и правильный синтаксис в сгенерированном коде.

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

🔸Расширяет функциональность:
Позволяет создавать собственные шаблоны кода для повторного использования.

Как использовать Gii в Yii2

1. Включите Gii в config/web.php:

'modules' => [ 'gii' => [ 'class' => 'yii\gii\Module', ],],


2. Откройте Gii в браузере:
https://your-app-url/index.php?r=gii

3. Выберите нужный генератор (Модель, CRUD, Контроллер и т. д.), введите данные и создайте код.

Использование в командной строке
Gii можно запускать через консоль Yii2:
php yii gii/model --tableName=your_table_namephp yii gii/crud --modelClass=app\models\YourModel --controllerClass=app\controllers\YourController
🥱8👍4😁1
🚀 Laravel 12 — новые возможности и улучшения

Laravel 12 выходит уже совсем скоро! Официальная дата релиза — 24 февраля 2025 года, и он получит много новых мощных функций и улучшений.

В Laravel 12 появятся такие важные функции, как:
Улучшенная структура приложения — более упорядоченная и интуитивно понятная.
Усовершенствованный конструктор запросов — новая функция nestedWhere() для сложных запросов.
Улучшения в области безопасности — Более надежная проверка паролей с помощью функции secureValidate().
Улучшенная разработка API — Родной GraphQL и улучшенная версионность API.
Отладка с помощью искусственного интеллекта — решение проблем в реальном времени с помощью функции debug()->suggest().
Производительность и масштабируемость — Асинхронное кэширование и улучшенное использование PHP.
Функции реального времени — Поддержка WebSocket для уведомлений и чатов в реальном времени.
Удобные инструменты для разработчиков — Более продуманный CLI и улучшенные команды Artisan.

📢 Смотрите полный обзор здесь: 👉 Видео о новых возможностях Laravel 12
🔥21🤔8🥰1😁1
Общение с умными устройствами силами PHP

Каждый день мы сталкиваемся с более новыми и умными устройствами, управляемыми через интернет или Wi-Fi. Концепция IoT (Internet of Things) объединяет физические устройства в одну сеть для передачи данных и управления ими. И, оказывается, что интернет вещей — никакое не ограничение! Управлять устройствами в сети можно с помощью легковесного протокола MQTT.


🔗Хабр
1👍1
📚 Читаете ли вы техническую литературу, чтобы прокачать свои навыки?

❤️ — да, постоянно читаю
👍 — иногда читаю
👾 — почти не обращаюсь к книгам, получаю знания из других источников

👇 Посоветуйте в комментариях книги, которые показались вам наиболее полезными

#интерактив
👍7342👾40
💾 Новый тренажёр по SQL

Разработчик создал SQL Noir — интерактивную детективную игру, где расследования ведутся с помощью SQL-запросов.

Погружаешься в сюжет и решаешь загадки с реальными SQL-запросами.

🔗 Ссылка
👍26😁8🔥42
Вакансии «Библиотеки программиста» — ждем вас в команде!

Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов

Подробности тут

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾
Как Geocodio поддерживает в актуальном состоянии 300 миллионов адресов

Geocodio поддерживает актуальность более 300 миллионов адресов с помощью собственной системы обработки данных Chop Chop.

Как обновляются адресные данные
Адреса постоянно меняются: появляются новые дома, улицы, пересматриваются границы участков. Чтобы поддерживать базу в актуальном состоянии, Geocodio использует почти 3 000 источников данных и автоматизированный конвейер обработки.

Система Chop Chop
Chop Chop — внутренняя платформа компании, построенная на Laravel и SQLite. Она управляет поступающими данными, очищает, нормализует и проверяет их. Благодаря системе очередей в Laravel Horizon данные из сотен источников обрабатываются параллельно на мощных серверах.

В системе есть визуальный редактор, позволяющий корректировать данные вручную. Для массовых исправлений используются SQL-запросы.

Этапы обработки данных
1. Получение данных — большинство источников (городские и окружные администрации) обновляются еженедельно.
2. Конвертация форматов — сырые данные приводятся к единому виду (GeoJSON).
3. Обогащение — добавляются недостающие почтовые коды, города, корректируются адресные записи.
4. Валидация — проверяются корректность номеров домов, координат и других параметров. Если качество данных низкое, они отбрасываются (до 30% записей).
5. Проверка изменений — если в новой версии есть значительные отличия, их передают на ручную проверку.

Развертывание обновлений
Каждую ночь Chop Chop собирает свежие данные в агрегированную базу SQLite. Затем тестируется геокодер, и перед развертыванием изменений их проверяет человек.

Благодаря заранее подготовленным копиям базы данных обновления разворачиваются быстро — достаточно переключить систему на новую версию.

👉Читать подробнее
👍9🥱3
🟢 Пропуск заданий при отмене пакетной обработки в Laravel

При работе с пакетными заданиями лучше всего проверять, не отменена ли пакетная обработка перед запуском задания, и вам не придется делать это вручную, потому что промежуточное ПО SkipIfBatchCancelled сделает это за вас 🚀

#совет
👍6👾3