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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
Статья описывает путь разработчика по улучшению вывода типов в PHPStan, инструменте статического анализа для PHP, с особым акцентом на то, как массив $matches ведет себя после вызова функции preg_match. Цель заключалась в том, чтобы точно определить структуру массива $matches в зависимости от различных факторов, таких как группы захвата в регулярном выражении, необязательные или условные группы, а также флаги, такие как PREG_UNMATCHED_AS_NULL.

Автор столкнулся с рядом вызовов, включая:

✔️Определение, какие группы захвата присутствуют и как они структурированы.
✔️Обработка необязательных и условных групп.
✔️Управление тем, как функция preg_match влияет на $matches в разных ветках конструкций if-else.

Для решения этих задач разработчик экспериментировал с «хаками» для регулярных выражений, а затем перешел на более надежный метод анализа с использованием абстрактного синтаксического дерева (AST) через библиотеку Hoa\Regex, несмотря на проблемы с её поддержкой. Он также реализовал расширения в PHPStan для работы с переменными, переданными по ссылке, такими как $matches, и убедился, что эти улучшения могут быть полезны другим библиотекам, использующим обертки для preg_match.
🎉2
🌎 Интенсив «Архитектуры и шаблоны проектирования» для middle и senior-разработчиков

Проверьте свои знания, ответив на 8 вопросов – https://proglib.io/w/27630c86

🧐 Кому подойдет?

Разработчикам, которые знают любой объектно-ориентированный язык программирования.

🧐 Как проходит обучение?

В течение всего интенсива вы будете создавать игру «Звездные войны». У вас будет собственный корабль, который научится летать по полю битвы, стрелять основным оружием и применять секретное оружие.

👉 Подробная программа обучения

👉 Купить со скидкой 30% 👉

Промокод MIDDLE действует до 25 сентября
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2
Привет, друзья! 👋

Готовим статью «Лучшие шрифты для программирования» и хотим узнать ваше мнение! 🖥
Поделитесь своим опытом: какой шрифт, на ваш взгляд, самый удобный для долгих сессий кодинга и почему? 💻🕰

Ждем ваши ответы в комментариях! Самые интересные и полезные советы войдут в нашу статью. 📝💡
👍3😁21
👨‍💻 Шпаргалка по проектированию реляционных баз данных

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

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

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

👉 Источник
😁12👍1🥰1🎉1🥱1
#дайджест новостей по PHP за неделю:

🔎CakePHP 5.1.0 официально выпущен — Команда CakePHP рада сообщить о скором выходе CakePHP 5.1.0. Она вводит небольшое количество предупреждений об устаревании. Любые изменения, введенные сейчас, сохранят свое поведение до их удаления в версии 6.0.0.

🔎Chaperone, Defer, Cache::flexible и многое другое теперь доступно в Laravel 11.23 — На этой неделе команда Laravel выпустила версию 11.23 с обновлениями для Laracon, такими как defer(), concurrency, contextual container attritubes и другие.

🔎PHP 8.4.0 Beta 5 доступен для тестирования — Команда PHP рада сообщить о выходе PHP 8.4.0, Beta 5. Это третья бета-версия, продолжающая цикл выпуска PHP 8.4.

🔎Неделя Symfony #924 (9-15 сентября 2024 года) — На этой неделе активность разработчиков Symfony была направлена на исправление ошибок в существующих ветках: мы предоставили обходной путь для ошибки parse_url(), обновили данные wcswidth в компоненте String до Unicode 16, а также обновили данные ICU до версии 75.1.
🔥1
Эффективность контейнеров в модульных монолитах: Symfony vs. Laravel

Для сравнения контейнеров Laravel и Symfony автор провел тест, который симулировал создание сложных зависимостей в приложении и измерял время и память, затраченные на создание сервисов. Результаты показали, что контейнер Symfony значительно быстрее и эффективнее благодаря предкомпиляции конфигурации и использованию общих (shared) экземпляров сервисов по умолчанию. В Laravel же каждый раз пересоздаются зависимости, что приводит к большему времени и расходу памяти.
👍18😁5
⭐️ Создание мока для известной библиотеки spatie/laravel-newsletter

🔥 Это для того чтобы не вызывать реального API, а лишь имитировать успешную подписку и добавление тегов в Mailchimp
🥱2
Вакансии «Библиотеки программиста» — ждем вас в команде!

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

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

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

Ждем ваших откликов 👾
👍1
Что такое Memcache и Memcached? Можно ли использовать один экземпляр Memcache между несколькими проектами PHP?

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

Memcache — это пространство для хранения данных, и Memcache можно запускать на одном или нескольких серверах. Следовательно, можно использовать один экземпляр Memcache в нескольких проектах.

Можно настроить клиент для взаимодействия с отдельным набором экземпляров. Таким образом, также допускается запуск двух разных процессов Memcache на одном хосте. Несмотря на то, что оба таких процесса выполняются на одном и том же хосте, они остаются независимыми, если только нет раздела данных.

#вопросы_с_собеседований
👍1🔥1
Атрибут #[\Override] в PHP

Здесь рассматривается новая функция PHP 8.3 — атрибут #[\Override], который позволяет указывать, что метод класса переопределяет метод родительского класса. Автор объясняет, как использовать этот атрибут, и показывает его преимущества для разработки и поддержки кода.

Что такое атрибут #[\Override]?

Атрибут #[\Override] сигнализирует, что метод в дочернем классе переопределяет метод родительского класса. Если атрибут используется для метода, который не переопределяет метод родителя, PHP вызовет фатальную ошибку. Пример:
class ParentClass {
protected function someMethod(): void {
// ...
}
}

class ChildClass extends ParentClass {
#[\Override]
protected function someMethod(): void {
// ...
}
}


Преимущества использования #[\Override]:

Обнаружение ошибок на этапе выполнения: Если метод больше не существует в родительском классе, PHP выведет фатальную ошибку, что помогает избежать непредсказуемого поведения.

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

Поддержка в IDE: Использование атрибута улучшает работу IDE, таких как PHPStorm, позволяя быстро находить методы, которые больше не переопределяют родительские.

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

Пример использования:

Автор приводит пример с Laravel, где метод casts() модели пользователя переопределяет метод родительского класса для задания правил преобразования полей (например, хэширование паролей). Если в будущем метод casts() будет заменён на новый, использование атрибута #[\Override] поможет быстро выявить проблему.
🔥71👍1
Схематично, простыми словами о внутреннем устройстве PHP (Zend Engine, OPCache, JIT)

Данный пост нацелен на неопытных PHP-специалистов. От этой информации лучше программировать вы не станете, но уменьшится «магия» того, с чем работаешь
👍61👾1
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍2
Как протестировать все маршруты в вашем приложении Laravel, написав всего один тест Pest

Здесь рассказывается о новом пакете для тестирования маршрутов в приложениях Laravel, который называется spatie/pest-plugin-route-testing. Этот пакет позволяет разработчикам протестировать все простые маршруты (например, страницы с GET-запросами) в приложении с помощью одного теста. Это помогает убедиться, что все простые страницы приложения корректно работают, и минимизировать возможность забыть добавить тест для новой страницы.
👍7🤔2
Опрос

Мы хотим провести большой розыгрыш и подарить победителю смартфон на выбор. Помимо iPhone, предлагаем вам выбрать, какой ещё смартфон вы бы хотели видеть среди призов.
🤩3👍1