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

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

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

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

#вопросы_с_собеседований
👍42
Советы по моделям в Laravel

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

1. Избегайте проблемы N+1 запросов
N+1 запросы возникают, когда для каждого элемента в коллекции данных выполняется отдельный запрос к базе данных, что замедляет приложение. Чтобы избежать этого, используйте eager loading для подгрузки связанных данных заранее.

2. Предотвращение доступа к несуществующим атрибутам
Если вы случайно попытаетесь получить доступ к несуществующему атрибуту модели, Laravel может вернуть null, что может вызвать неожиданные ошибки. Включите функцию, которая будет выбрасывать исключение при попытке доступа к несуществующему полю.

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

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

5. Использование UUID вместо автонумерации
Для повышения безопасности можно использовать UUID (уникальные идентификаторы) в качестве первичных ключей или для публичных идентификаторов. Это затрудняет предсказание ID и может защитить приложение от атак.

6. Использование кастомных коллекций
Laravel позволяет создавать собственные коллекции моделей с дополнительными методами для удобства работы с ними.
9👍3
Когда вам нужно проверить поле, но на самом деле оно не требуется ни для чего, например, «принять условия использования», воспользуйтесь правилом exclude. Таким образом проверяемый метод не вернет его.
🔥8🥱5👍4
⚒️ Шардирование базы данных: шпаргалка для разработчика

👉 Источник
6🔥1
🤥 Наврал в резюме: 5 вариантов, что делать

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

Не хочешь преукрашивать в резюме — тогда забирай курс по Алгоритмам от базы до эксперт уровня:
🔵 Алгоритмы и структуры данных

🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Привет, друзья! 👋

Мы готовим статью о самых странных и уникальных дистрибутивах Linux, и нам нужно ваше мнение! 🤔💬

1️⃣ Какой самый необычный дистрибутив Linux вы когда-либо пробовали? Почему он вас удивил?

2️⃣ Есть ли у вас советы для новичков, которые только начинают работать с Linux? 🐧

Поделитесь своими идеями в комментариях! Самые интересные идеи и предложения мы обязательно включим в нашу статью. Спасибо за участие! 🙌
Extend or implement

🌐Автор обсуждает различие между наследованием абстрактных классов и реализацией интерфейсов в программировании, а также свое недовольство тем, как часто наследование используется неправильно. Он указывает, что наследование зачастую применяется для обеспечения гибкости и конфигурируемости кода, что кажется ему неправильным, поскольку это противоречит первоначальному замыслу объектно-ориентированного программирования (ООП), описанному Аланом Кеем.

🔄Согласно его мнению, наследование должно отражать реальные отношения (например, AdminUser наследует User), тогда как интерфейсы должны описывать техническое поведение (например, User реализует Model). Он также выражает разочарование, что современные языки программирования часто допускают злоупотребление наследованием, хотя есть и другие, более подходящие способы решения проблем конфигурации и расширяемости кода.

В итоге он находит свое представление о наследовании и интерфейсах более удобным для работы, хотя признает технические ограничения PHP.
👍6🎉4🔥1
Книга: «Рецепты PHP. Для профессиональных разработчиков»

Важнейшая книга на кухне разработчиков на PHP!

💬В ней нет ни слова о том, как разделывать фазана, зачем солить воду и сколько в минутах будет «до готовности». Лишь практическое руководство, как использовать современную версию PHP для задач, встречающихся в современной практике программистов.

🟢В этом сборнике рецептов разработчики на PHP найдут надежные и проверенные решения распространенных задач. PHP — удивительно простой язык программирования, что объясняет, почему на нем написано более 75% веб-сайтов в Интернете. Но он также невероятно терпим к ошибкам программирования, что может привести к тиражированию сомнительного кода.
🥱11👍7😢1
LazyStream — это библиотека, предоставляющая удобный способ ленивой записи в потоки с помощью генераторов. Он позволяет постепенно записывать данные в поток, уменьшая использование памяти и повышая производительность при работе с большими объемами данных.

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

✔️Многопоточная запись (конечно, лениво): экспортируйте большие наборы данных в несколько файлов или сетевых расположений одновременно, например, в резервные копии и журналы.

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

✔️Совместимость с потоками : библиотека совместима с различными типами потоков, включая файловые потоки, сетевые потоки и пользовательские потоки. Вы можете легко интегрировать его с существующим кодом, основанным на потоковых операциях. На самом деле он работает с любым типом потока, если он зарегистрирован благодаря stream_wrapper_register().

✔️Потоковые режимы : в настоящее время библиотека поддерживает только потоковое чтение. В ближайшем будущем планируется поддержка ленивого потокового чтения и удобный способ сделать это.
👍32
Мем смешной, ситуация страшная 🤖

#memes
👍13😢7😁3🤔3
Объясните разницу между $message и $$message

$message — это обычная переменная, имеющая фиксированное имя и фиксированное значение, тогда как $$message — это ссылочная переменная, в которой хранятся данные о переменной. Значение $$message может динамически меняться по мере изменения значения переменной.

#вопросы_с_собеседований
🥱23👍6👾2😁1
Какие новые возможности PHP 8.4 являются наиболее практичными и заслуживающими внимания для разработчиков?

В этой статье рассматриваются наиболее практичные и заслуживающие внимания функции PHP 8.4, на которые разработчикам стоит обратить внимание.
👍4🌚2
🛠️ API-документация без головной боли: ТОП-11 инструментов

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

🔗 Читать статью
В Laravel 9.32 появился класс Benchmark, который может измерять время любой задачи.

Это довольно полезный помощник
9🥱5🔥2👾2🌚1