Библиотека пхпшника | 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
Попробуйте MongoDB в Laravel в один клик через GitHub Codespaces

Эта статья рассказывает о том, как облачные среды разработки, такие как GitHub Codespaces, могут облегчить процесс вступления новых участников в проект и ускорить процесс внесения ими вклада в код при минимальном времени настройки. Она подчеркивает проблемы, связанные с различиями в конфигурациях разработческих окружений, которые могут привести к трате времени на устранение проблем. Рассматривается преимущество использования контейнеризированных окружений разработки, особенно в облачных средах, что делает процесс разработки более удобным и безпрепятственным.

Здесь также приводится пример использования GitHub Codespaces для публикации учебного пособия по интеграции MongoDB в приложение Laravel. Авторы показывают, как можно избежать начальных настроек, позволяя читателям развернуть приложение одним нажатием кнопки и сразу начать работать над кодом. В статье также описывается конфигурация Codespaces, включая использование Docker контейнеров, файлы конфигурации и запуск служб внутри контейнеров.
👍3🤔2
Опишите поведение при использовании traits с одинаковыми именами полей и / или методов?

При использовании traits с одинаковыми именами полей и/или методов, возникает конфликт имен, который не позволяет PHP однозначно определить, какое поле или метод должны использоваться.

Если в классе используется несколько traits, и в этих traits есть поля или методы с одинаковыми именами, возникает ошибка компиляции «trait method has not been applied», или «trait field has not been applied». По сути, PHP не знает, из какого trait следует взять поле или метод.

Для разрешения этого конфликта имен трейт может быть использован с использованием псевдонима. Например, можно использовать ключевое слово insteadof, чтобы указать, какой метод или поле должно использоваться
Также в PHP 7.2 была добавлена возможность адаптировать методы или конфликтующие поля с помощью оператора as.
С помощью таких алиасов можно явным образом указать, какой метод или поле следует использовать из каждого трейта.

#вопросы_с_собеседований
👍18🥱31
Saloon

Saloon — это библиотека PHP, которая предоставляет вам инструменты для создания простых интеграций API и SDK. Saloon перемещает ваши запросы API в повторно используемые классы, чтобы вы могли хранить все свои конфигурации API в одном месте. Его можно легко настроить с помощью плагинов, но он поставляется предварительно настроенным для вас, поэтому вы можете сразу же приступить к отправке запросов API. Saloon поставляется со множеством интересных функций, таких как запись запросов в ваших тестах, кеширование, OAuth2 и нумерация страниц.
👍5🥱5
Forwarded from Библиотека программиста | программирование, кодинг, разработка
📊Исследование рынка ИТ-вакансий: годовой рост составил 18%

Технократия и hh.ru проанализировали спрос на ИТ-специалистов в России за период с сентября 2022 года по сентябрь 2023 года. Одни из самых востребованных вакансий — системные и бизнес аналитики, менеджеры проектов и продуктов, а также Java-разработчики.

📌Основные выводы из исследования:

◆Спрос на ИТ-специалистов за год вырос: в сентябре 2022 года на портале hh.ru было открыто 64 тыс. вакансий, а в сентябре 2023 года компании разместили 76 тыс. вакансий. Годовой прирост составил 18%, согласно статистике hh.ru.

◆Активнее других бизнес начал искать аналитиков (системных и бизнесовых), а также менеджеров проектов. За год число размещенных вакансий для этих позиций увеличилось практически в 2 раза.

◆В среднем каждый месяц компании размещают более 9 тысяч вакансий для разработчиков. Практически каждая шестая вакансия — Java-разработчик. Их доля от общего числа вакансий для разработчиков составляет 16%. В первой тройке востребованных стеков также расположились PHP и Python разработчики — 12% и 11% соответственно.

◆Самые активные наниматели айтишников — компании из сферы «Информационные технологии». Но при этом, в первой тройке нанимателей Сбер, Тинькофф и Иннотех — компании из сферы «финансы». 

◆Специалистов грейда Junior стали искать на 101% чаще, но в абсолютных значениях бизнесу интересны опытные специалисты уровня Senior — на момент сентября этого года 2,7 тыс. вакансий для Senior против 0,6 тыс. для Junior.

◆По медианным зарплатам лидируют разработчики Ruby on rails — компании готовы платить им 252 000 рублей в месяц. За ними следуют Golang и Java разработчики.

◆Свердловская область в тройке среди регионов нанимателей. Компании из Екатеринбурга и области расположились после Москвы и Санкт-Петербурга.

◆Почти каждая вторая вакансия для ИТ-специалистов предполагает формат удаленной работы: с 25% в 2021 году до 40% в 2023 году.

#карьера #инфографика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🥱51
Как выдавать себя за пользователей в вашем приложении Laravel

Статья рассказывает о функциональности Laravel Nova, которая позволяет администраторам входить в систему от имени других пользователей для проверки ошибок или исследования проблем.

Здесь описывается установка и использование Laravel Impersonate пакета, который упрощает этот процесс. Чтобы настроить имперсонацию в Laravel приложении, необходимо установить и подключить пакет, добавить несколько маршрутов для имперсонации пользователей, а также использовать Blade хелперы для реализации функционала.

Статья также предоставляет советы по продвинутой настройке, такие как ограничение возможности имперсонации исключительно для администраторов. Автор также дает рекомендацию для использования пакета вместе с Laravel Jetstream и предостерегает от возможных проблем при настройке. В целом, Laravel Impersonate пакет представляет собой удобное решение для входа в систему от имени других пользователей в Laravel приложениях.
🥱5👍21
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🥱41
🔍Здесь рассматривается проблема типизации в приложениях, использующих Query Bus. Query Bus — это шаблон проектирования, который позволяет обрабатывать запросы и возвращать результаты. Проблема заключается в том, что возвращаемый тип данных из Query Bus неопределен, что затрудняет типизацию в приложении.

🔧Для решения этой проблемы автор предлагает использовать дженерики. Они позволяют связывать тип возвращаемого значения Query с типом, который возвращает соответствующий QueryHandler. Таким образом, он предлагает определить интерфейс Query как generic, указав переменный тип T.

Затем типизируется интерфейс QueryBus, указывая, что он принимает объекты типа Query и возвращает объекты типа T. Это позволяет явно указать тип возвращаемого значения из Query Bus.

🔑Наконец, показывается пример конкретного запроса, который также типизируется с использованием generics. Это позволяет автоматически определять тип возвращаемого значения из Query Bus в среде разработки, такой как PHPStorm, облегчая работу с кодом.
👍11🥱4
#хочу_спросить

Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Новое в Symfony 6.4: Профилировщик команд и CHIPS сookie

🔎Здесь рассказывается о значительном улучшении Symfony Profiler, одной из любимых функций разработчиков Symfony. Профилировщик собирает всю информацию о HTTP-запросах, позволяя анализировать эти данные при поиске ошибок. В Symfony 6.4 (и 7.0) профилировщик был улучшен таким образом, что теперь он также может профилировать команды, выполняемые в консоли.

👨‍💻Эта статья объясняет изменения в поддержке сторонних куки в веб-браузерах, начиная с середины 2024 года. Она представляет новую альтернативу под названием CHIPS (Cookies Having Independent Partitioned State), предлагая детали об использовании атрибута Partitioned в HTTP-заголовке Set-Cookie. Этот атрибут Partitioned позволяет хранить куки с использованием двух ключей: ключа хоста (host key) и нового ключа разделения (partition key). Такой подход предотвращает доступ к кукам между различными ресурсами, встроенными в один и тот же сайт, что обеспечивает большую конфиденциальность данных пользователей.
👍7
Как вы понимаете Special Case / Null Object и где его следует применять?

Special Case / Null Object — это шаблон проектирования, который используется для обработки специальных случаев или значений отсутствия объекта. Он позволяет разработчику избежать проверок на null и обрабатывать такое отсутствие объекта по-особенному.

Null Object — это класс, который реализует интерфейс или абстрактный класс, используемый вместо null. Он предоставляет реализацию методов, которые обрабатываются для отсутствующего объекта, и возвращает пустые значения или выполняет пустые действия.

Null Object можно применять, когда требуется обработать отсутствие объекта без использования проверок на null. Он может быть полезен в таких ситуациях:

1. Вместо проверки на null, можно использовать Null Object, чтобы избежать возникновения исключений или ошибок, связанных с отсутствием объекта и его методов.

2. Null Object может упростить код и избавить от необходимости писать дополнительные условия для обработки null значений.

3. Он также может быть полезен в шаблонном методе, когда необходимо иметь базовую реализацию методов, которые могут быть переопределены в подклассах, и одновременно обрабатывать отсутствие объекта.

В этом примере, если использовать NullLogger, то метод log не выполняет никаких действий и не вызывает ошибок при отсутствии файла или других ресурсов, которые могут быть связаны с реальным логгером.

#вопросы_с_собеседований
👍12
FrankenPHP

FrankenPHP — это современный сервер приложений для PHP, построенный на базе веб-сервера Caddy .

FrankenPHP дает новые возможности вашим приложениям

FrankenPHP работает с любым PHP-приложением и делает ваши проекты Symfony быстрее, чем когда-либо, благодаря интеграции с рабочим режимом (появляется поддержка Laravel Octane).

FrankenPHP также можно использовать как отдельную библиотеку Go для встраивания PHP в любое приложение, использующее net/http.
🥱8👍61🌚1
Что такое гексагональная архитектура. Разделение бизнес-логики и инфраструктуры с помощью портов и адаптеров

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

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

Этот подход позволяет разрабатывать и тестировать приложения в изоляции, не завися от внешних технологий, и обеспечивает гибкость и легкость в поддержке.
👍5
Какую диагональ монитора чаще всего используете на работе?
⬇️⬇️⬇️⬇️
🥱2💯1
Новое в Symfony 6.4: маршруты на основе FQCN и Обработчик подпроцесса

Первая статья представляет новую возможность автоматического именования маршрутов в Symfony при использовании контроллеров. Теперь разработчики могут определять уникальные имена маршрутов на основе FQCN (полного имени класса) контроллера и имени метода. Это снижает вероятность ошибок и делает код более читаемым, избегая использования «магических строк» для определения имен маршрутов.

Вторая статья представляет новый класс PhpSubprocess в Symfony 6.4, который решает проблему передачи конфигурационных настроек от родительского процесса к подпроцессам в PHP. Это обеспечивает надежность и предсказуемость работы с подпроцессами, такими как консольные команды, унаследовав конфигурацию от родительского процесса.
👍9
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🎙️ТОП-14 подкастов о карьере в ИТ

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

👉 NEWHR и СОБЕС — два подкаста от Киры Кузьменко, рекрутера с 20-летним опытом
👉 Хочу в айти — подкаст для новичков, в котором не так много выпусков, но они короткие, ёмкие и интересные.
👉 Выхожу с понедельника — подкаст про разные направления в ИТ
👉 Moscow Python — подкаст о карьере, личном опыте и не только
👉 Podlodka Podcast — популярный подкаст с очень разнообразными и интересными темами, связанными с карьерой в ИТ и другими айтишными направлениями

#подкасты
👍3
А был ли баг? Может бага и не было? Зачем, как и чем тестировать PHP код

В статье рассматриваются основные подходы к тестированию бэкенда на PHP, обсуждаются преимущества и проблемы, связанные с этим процессом. Также о методах обнаружения и устранения багов, инструментах и книгах для более глубокого изучения тестирования. Материал будет полезен как начинающим тестировщикам, так и разработчикам, которые хотят освоить тестирование бэкенда, но не знают с чего начать.
👍4🥱4