Библиотека пхпшника | 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
В чем разница между методами 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
Как хранить координаты точки на карте в БД?

Рассмотрим несколько возможных подходов:

1. Хранение отдельных полей с широтой и долготой:
- Создайте две числовые колонки в таблице БД, например, «latitude» и «longitude», представляющие широту и долготу соответственно.
- Для каждой точки, сохраните ее координаты в эти поля.
- При поиске точек на карте, вы можете использовать операторы сравнения или функции, поддерживаемые БД, для поиска точек в определенном радиусе или в пределах определенной географической области.

2. Использование географических типов данных:
- Некоторые реляционные БД, такие как MySQL с расширением Spatial, PostgreSQL с расширением PostGIS или SQLite с поддержкой расширения SpatiaLite, предоставляют специальные типы данных для работы с географическими объектами.
- Создайте колонку с типом данных для хранения географической информации, например, тип «Point», который позволяет хранить точку с заданными координатами.
- Сохраняйте информацию о точках на карте в этой колонке.
- Используйте функции и операторы, поддерживаемые соответствующим расширением БД, для выполнения географических запросов, таких как поиск точек в определенном радиусе или внутри границ определенного полигона.

#вопросы_с_собеседований
👍17🤔21
Состояние дженериков и коллекций

На сайте PHPFoundation вышла интересная статья, которая посвящена внедрению дженериков. В ней рассматриваются различные подходы к этой проблеме и их текущее состояние.
👍9
💀 Как гарантированно провалить собеседование: 10 верных способов

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

Чтобы не завалить собеседование — забирайте наш курс:
🔵 Базовые модели ML и приложения

🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩1
🙂 При создании записей с помощью Factories вы можете использовать класс Sequence, чтобы заменить некоторые значения и применить к ним специальную логику.
Преимущества написания чистого, поддерживаемого кода.

Здесь обсуждается важность написания чистого и поддерживаемого кода. Автор, имеющий двадцатилетний опыт программирования, признаёт, что ранее его основной целью было просто заставить код работать, не задумываясь о его качестве и поддерживаемости. Но после знакомства с Laravel он начал обращать внимание на чистоту кода и его удобочитаемость для других разработчиков.

Почему важно писать чистый код:

✔️Высокое качество кода: Обдумывая код и стараясь сделать его максимально чистым, вы автоматически улучшаете его качество.

✔️Удобочитаемость: Чистый код проще для понимания, что облегчает работу другим разработчикам.

✔️Лёгкость поддержки: Чистый и понятный код легче поддерживать, так как снижается риск ошибочных изменений.

✔️Самодокументирование: Чистый код может не требовать дополнительных комментариев, так как он уже говорит сам за себя.

✔️Простота тестирования: Структурированный код с соблюдением принципов единственной ответственности и разделения обязанностей легче тестировать.

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

Простые техники для написания чистого кода:

🔸Соблюдение стандартов и соглашений: Следуйте общепринятым стандартам (например, PSR-12), а также рекомендациям вашей команды.

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

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

🔸Пространство для кода: Добавляйте отступы между блоками кода для улучшения его читаемости.

🔸Ранний выход, отсутствие else, отрицательные проверки: Эти подходы помогают упростить логические блоки и делают код более читаемым.

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

🔸Минимизация вложенности: Старайтесь избегать глубоких вложенных структур, чтобы код не становился запутанным.
👍7🥱3
#хочу_спросить

Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
👍1
LLPhant — комплексная PHP-инфраструктура генеративного искусственного интеллекта

Эта платформа разработана так, чтобы она была максимально простой, но при этом предоставляла вам инструменты, необходимые для создания мощных приложений. Он совместим с Symfony и Laravel.

На данный момент поддерживается только OpenAI, если вы хотите использовать другие LLM, вы можете использовать genossGPT в качестве прокси.
👍3🤔1