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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
Повышаем читаемость Symfony DI

Разработчик, работающий с Symfony, делится опытомhttps://habr.com/ru/articles/833134/ создания приложений и рассказывает о проблемах, с которыми он столкнулся при использовании Symfony DI. Он также делится советами, которые, по его мнению, будут полезны при разработке крупных приложений.
👍6🥱4🔥1
AI Tool Bridge

Основной проблемой при интеграции ИИ в любой проект является управление взаимодействием между ИИ и остальной частью вашего приложения. Это становится особенно сложным, когда ИИ необходимо выполнять вызовы API для получения информации или инициирования действий.

AI Tool Bridge для PHP элегантно решает эту проблему, предлагая простой интерфейс для определения «инструментальных функций», которые ИИ может использовать, когда ему необходимо взаимодействовать с внешними системами.

Важной оптимизацией является способность библиотеки генерировать необходимую структуру JSON для функционирования инструмента. Он делает это, запрашивая у ИИ только необходимые значения, а затем генерируя JSON на основе предоставленной схемы JSON. Такой подход гарантирует достоверность окончательного JSON, который достигает кода вашего приложения.

Ключевые особенности этой библиотеки включают в себя:

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

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

Обеспечение запуска инструментов с полным и правильно отформатированным JSON.
👍3🔥2
Какой подход следует применить во время тестирования кода, который имеет внешние зависимости?

Один из подходов, который может быть применен во время тестирования кода с внешними зависимостями, — это использование моков или заглушек (mocks или stubs).

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

#вопросы_с_собеседований
👍4
Как промежуточное ПО TrimStrings в Laravel может вызывать проблемы

Что такое TrimStrings Middleware и для чего оно нужно?


TrimStrings — это middleware в Laravel, которое автоматически удаляет пробелы в начале и в конце строк данных, поступающих в запросах. Например, если пользователь вводит в форму " [email protected] " с пробелами, middleware уберёт эти пробелы и передаст чистую строку «[email protected]». Это помогает избежать ошибок, вызванных лишними пробелами.

Что произошло?

При интеграции с бразильским платёжным провайдером возникла необходимость валидации данных о транзакциях, поступающих на сервер через POST-запрос. Для проверки подлинности данных выполняется хэширование строки с использованием алгоритма SHA256 и секретного ключа. Однако в процессе проверки некоторые корректные запросы отклонялись.

Анализ логов Nginx показал, что в параметре full_name от провайдера сохранялись конечные пробелы, которые на сервере обрезались TrimStrings middleware. Это приводило к несоответствию хэшей и отклонению запросов.

Как решить проблему?

Для предотвращения подобных ситуаций нужно отключить TrimStrings middleware для определённых маршрутов. В Laravel 8 для этого появился метод TrimStrings::skipWhen.
🔸Если вы используете валидацию с ->unique() в ларе, не забудьте игнорировать текущую запись в форме редактирования.

В противном случае у вас возникнет ошибка валидации «Поле уже занято» в форме редактирования.
🥱8🤔7👾4👍1
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🎉1
Действительно ли класс DateTime в PHP настолько плох?

Здесь мы рассмотрим плюсы и минусы класса DateTime, важность неизменяемости и то, как эффективно использовать класс DateTime, проанализируем причины и последствия, стоящие за этими проблемами.
🎉2👍1
#дайджест #phpdevjob

Вакансии PHP разработчиков уровня Junior

▪️PHP разработчик
Удаленка. Social Media Holding — технологические IT- проекты
Подробнее

▪️Веб-программист
Санкт-Петербург. Информатика и Сервис — системный интегратор и разработчик
Подробнее

Вакансии PHP разработчиков уровня Middle

▪️PHP Разработчик
Удаленка. Digital Services — разработка проектов в области кибербезопасности
Подробнее

▪️PHP Developer
Удаленка. Максимал — разработка сайтов любой сложности
Подробнее

Вакансии PHP разработчиков уровня Senior

▪️Backend-разработчик
Москва. Present&Simple — бренд женской одежды
Подробнее

▪️PHP-разработчик
Удаленка. Fix Price. IT — международная торговая розничная сеть
Подробнее

Понравились вакансии?
❤️ — да
🤔 — нет
5👍1🤔1
В чем разница между методами dd() и dump()?

В Laravel методы dd() и dump() используются для вывода отладочной информации, но между ними есть некоторые различия:

Метод dd() (Dump and Die):

dd() расшифровывается как «Dump and Die».
Он выводит отладочную информацию и сразу завершает выполнение скрипта. Это удобно, когда нужно быстро остановить выполнение программы и просмотреть значения переменных или других данных.
Пример использования:

$data = [1, 2, 3];
dd($data);
// Выведет содержимое переменной $data и остановит выполнение скрипта.


Метод dump():

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

$data = [1, 2, 3];
dump($data);
// Выведет содержимое переменной $data, но скрипт продолжит выполнение.


Таким образом, основное отличие заключается в том, что dd() завершает выполнение программы, а dump() — нет.

#вопросы_с_собеседований
👍6😁5
CSV и PHP8.4+

Здесь обсуждаются изменения в PHP 8.4, касающиеся обработки CSV-файлов, и их влияние на разработчиков и библиотеку league/csv, которая является популярным инструментом для работы с CSV в PHP.

В новой версии PHP 8.4 будут введены новые функции, такие как асимметричная видимость и хуки для свойств, но также будут изменения в старых функциональностях, в частности, в обработке CSV.

Разработчикам рекомендуется обновить свой код, чтобы использовать пустую строку для параметра экранирования и избежать предупреждений о депрекации. В статье приводятся примеры кода с пояснениями, как это сделать.
👍6🎉3🔥1👏1
Yaml — король мета-описаний

На Хабре уже опубликовано несколько статей о Yaml, однако они выглядят однобоко и не раскрывают его истинную природу. В этой статье будет сделана попытка исправить этот недостаток, рассказав о Yaml в положительном контексте. Детальное описание синтаксиса стандартного Yaml здесь приводиться не будет, так как в Интернете и на самом Хабре имеется множество материалов на эту тему, ссылки на которые также можно найти в данной статье. Материал предназначен для тех, кто уже знаком с Yaml, но, возможно, испытывает к нему неприязнь.
🥱2👍1
Привет, друзья! 👋

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

Не стесняйтесь делиться своими историями и лайфхаками в комментариях! 💬 Ваш опыт может помочь другим разработчикам справиться с прокрастинацией. Спасибо за участие!
👍3
Топ-5 стратегий кэширования

➡️ Реальное использование:

🔹 Cache Aside + Write Through: обеспечивает согласованную синхронизацию кэша/БД, позволяя при этом осуществлять контроль заполнения кэша во время чтения. Немедленные записи в базу данных могут нагружать БД.
🔹 Read Through + Write Back: абстрагирует БД и хорошо справляется с потоком трафика записи, задерживая синхронизацию. Однако это сопряжено с риском большей потери данных, если кэш выйдет из строя до синхронизации буферизованных записей с базой данных.

👉 Источник
👍6
#дайджест новостей по PHP за неделю:

🔎Стратегии предварительной выборки активов с Vite в Laravel 11.21 — На этой неделе команда Laravel выпустила версию 11.21, которая включает стратегии предварительной выборки активов для Vite, удобный метод принудительного уничтожения моделей с мягким удалением, обновления помощников для тестирования и многое другое.

🔎Symfony 7.1 с новыми возможностями

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

🔎Неделя Symfony #921 (19-25 августа 2024 года) — На этой неделе в грядущей версии Symfony 7.2 была добавлена возможность рендеринга блока Twig с атрибутом Template, улучшен Serializer с конвертером имен из змеиного регистра в верблюжий, а также добавлена поддержка новых операторов в компоненте ExpressionLanguage.
👍42
Эта статья посвящена потенциальным уязвимостям, связанным с использованием слабого сравнения (==) в PHP. В отличие от строгого сравнения (===), слабое сравнение не учитывает типы данных и может привести к непредсказуемым результатам, что делает код уязвимым для атак.

PHP Loose Comparison (Слабое сравнение в PHP)

Слабое сравнение происходит, когда два значения сравниваются оператором ==, который не проверяет типы данных. PHP пытается привести сравниваемые значения к общему типу перед сравнением, что может приводить к неожиданным результатам. Например, строка 'string' при сравнении с true будет считаться эквивалентной true.

Уязвимые сценарии

Автор приводит два примера, где слабое сравнение может стать причиной серьезных проблем:

✔️Небезопасная система авторизации:

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

✔️Небезопасная авторизация с использованием switch:

В этом примере хакер может получить доступ к привилегиям администратора, просто подставив true в качестве значения $_POST['user_role'], так как switch-case также использует слабое сравнение.

Смягчение уязвимостей

Чтобы избежать таких проблем, рекомендуется использовать строгое сравнение (===), которое проверяет и значение, и тип данных. Также, начиная с PHP 8.0, можно использовать конструкцию match, которая работает как switch, но использует строгое сравнение, что делает код более безопасным.
👍15😁7🔥21🌚1
Топ модулей для распознавания рекапчи на Python, Node js и PHP

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

Был проведен анализ рынка модулей для распознавания капчи, и на основе этого составлен субъективный топ модулей для трех популярных языков программирования.
👍5