Библиотека пхпшника | 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
В чем разница между функциями «htmlentities» и «htmlspecialchars» в PHP?

В PHP функции «htmlentities()» и «htmlspecialchars()» используются для кодирования HTML-сущностей, но они имеют разные цели:

«htmlspecialchars()»: Эта функция в основном используется для экранирования символов HTML, которые имеют специальное значение в HTML, таких как <, >, &, и «. Она преобразует эти символы в соответствующие HTML-сущности (<, >, &, «). Это часто используется для предотвращения атак XSS (межсайтового скриптинга), гарантируя, что пользовательский ввод отображается «как есть», без интерпретации как HTML.

«htmlentities()»: Эта функция преобразует все применимые символы в соответствующие HTML-сущности. В дополнение к символам, экранируемым «htmlspecialchars()», она также преобразует символы, такие как не-ASCII символы и различные символы. Эта функция часто используется, когда необходимо гарантировать безопасное кодирование всех символов для вывода HTML, особенно при работе с многоязычным контентом.

#вопросы_с_собеседований
9😁2
Освоение маршрутов Laravel: комплексное руководство для всех уровней

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

Далее представляются более продвинутые техники, такие как привязка модели к маршруту, контроллеры ресурсов и API-маршруты.

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

Команда Тейлора скоро выпустит новую мажорную версию фреймворка. Laravel 11 продолжает улучшения, начатые в Laravel 10.x, представляя упрощенную структуру приложения, ограничение скорости в секунду, маршруты проверки состояния приложения, элегантную ротацию ключа шифрования, улучшения в тестировании очередей, транспорт отправки почты, интеграцию с Prompt валидатором, новые команды Artisan и другие нововведения. Кроме того, был представлен Laravel Reverb — масштабируемый сервер WebSocket, обеспечивающий надежную работу в реальном времени.

Основные изменения в Laravel 11:

🔴Требуется PHP 8.2.

🟠Упрощенная структура приложения с новым файлом bootstrap/app.php для настройки маршрутизации, промежуточного ПО, обработки исключений и т.д.

🟡Вместо пяти сервис-провайдеров в Laravel 11 по умолчанию только один — AppServiceProvider, объединяющий функционал предыдущих.

🟢Расширены возможности использования переменных окружения для конфигурации фреймворка.

Удалены файлы маршрутов api.php и channels.php, но их можно создать при необходимости.

🟣Мидлвары теперь настраиваются в bootstrap/app.php, что уменьшает объем приложения.

🔵Планировщик задач теперь настраивается непосредственно в файле routes/console.php.

🔴Обработка исключений также настраивается в bootstrap/app.php.

🟠По умолчанию новые приложения Laravel используют SQLite для хранения данных, что упрощает начало работы.

🟡Laravel Reverb предоставляет быструю и масштабируемую работу с WebSocket, а также поддерживает горизонтальное масштабирование с использованием Redis.

🟢Добавлена поддержка ограничения скорости в секунду.

Введены маршруты проверки состояния приложения.

🟣Добавлена элегантная ротация ключей шифрования.

🔵Добавлены новые команды Artisan для быстрого создания классов, интерфейсов и трейтов.
👍20🔥10😁5🥱42
💬 Как вы относитесь к парному программированию? Это то самое, при котором два разраба работают вместе над одной задачей, сидя за одним рабочим местом.
👍18🥱7🌚5😁1
Еще один #дайджест новостей по PHP за неделю:

🔎Выпущена версия cakephp phpstan 3.1.0! — много изменений в работе с таблицами и многое другое!

🔎Выпущена Symfony 7.0.4 — Вот список наиболее важных изменений с версии 7.0.3.

🔎Неделя Symfony № 895 (19–25 февраля 2024 г.)
👍5
Мечты о строго и статически типизированном PHP

Сегодня мы рассмотрим важный вопрос. Это возможность превращения PHP из динамически типизированного языка в статически типизированный с помощью введения различных типовых объявлений. С момента выпуска PHP 7.0 в декабре 2015 года в языке появились новые функции для работы с типами данных, такие как типизация параметров функций, возвращаемые типы и свойства классов.

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

Кроме того, обсуждается вопрос о том, каким образом внедрить эти функции, предлагаются различные варианты синтаксиса для реализации типизации переменных и массивов, а также предлагается использование псевдонимов типов для упрощения работы с повторяющимися типами данных в коде.
👍5
🧿 Знания — сила! Что должен изучить каждый программист?

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

‼️ Мы проведем анализ ответов и составим ТОП-лист навыков, которые не помешают освоить каждому программисту и разработчику для успешного карьерного роста!

👉 Опросик
😁7🤔1
Практический пример декомпозиции монолитного PHP приложения

Декомпозиция монолита — не редкая проблема. Это связано с тем, что на ранних стадиях развития любого стартапа накапливается так называемый decision debt — выбранная архитектура является оптимальной для быстрой разработки и экспериментирования, но не для зрелого продукта.

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

Учитывая популярность проблемы, существует множество книг и статей о подходах к её решению, но автор считает, что есть недостаток практических примеров. Поэтому, в этой статье он решил сосредоточиться на технических деталях, используя в качестве примера приложение, написанное на PHP и фреймворке Symfony.
👍71
ИИ для PHP: как настроить подсказки ИИ для улучшения тестов

В нашем прошлом посте мы рассмотрели, как JetBrains AI Assistant может автоматически создавать модульные тесты. Генерируя скучный шаблонный код, мы можем сразу перейти к более интересной части создания тестов.

Здесь рассказывается про то, как можно улучшить ваши промты для написания более надежных тестов
AI Assistant может быть точнее в предсказании желаемого кода и дает пользователю возможность дополнительно специфицировать запросы с помощью кнопки «Specify».

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

Существует несколько основных способов оптимизации баз данных:

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

Оптимизация запросов: Напишите запросы таким образом, чтобы они были эффективными. Используйте инструкции JOIN, WHERE и GROUP BY там, где это необходимо, чтобы снизить объем возвращаемых данных.

Кэширование: Используйте кэширование результатов запросов там, где это возможно. Например, результаты запросов к базе данных могут быть кэшированы в Redis или Memcached.

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

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

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

Масштабирование базы данных: При необходимости масштабируйте базу данных горизонтально или вертикально. Горизонтальное масштабирование (шардинг) позволяет распределить данные по нескольким серверам, а вертикальное масштабирование (разделение на таблицы) позволяет распределить данные по разным таблицам или базам данных.

Мониторинг и профилирование: Регулярно отслеживайте производительность запросов и операций базы данных с помощью инструментов мониторинга и профилирования. Это позволяет идентифицировать узкие места и проводить дальнейшую оптимизацию.

#вопросы_с_собеседований
👍14🌚51
Пиши код в Laravel как senior

🚀Здесь рассматриваются ключевые практики и принципы разработки во фреймворке Laravel. Начинается всё с обзора основ Laravel, 🏛️ включая его архитектуру MVC, ORM Eloquent, шаблонизатор Blade, а также компоненты, такие как миграции, сидеры и промежуточные слои.🛠️

Далее предоставляются примеры «неправильного» и «правильного» кода, демонстрируя, как следовать стандартам и соглашениям Laravel для написания чистого, эффективного и масштабируемого кода.

Также обсуждаются важность принципов DRY и использования сервисов для обработки бизнес-логики, а также предлагает советы по оптимизации и лучшим практикам, таким как использование команд Artisan, миграции базы данных, промежуточные слои и автоматизированное тестирование.
🥱19👍2👾2🌚1
Создание поддерживаемых PHP-приложений: анализ данных и анализ бизнес-процессов

Здесь обсуждается различие между традиционным подходом CRUD (Create, Read, Update, Delete) к разработке программного обеспечения и более ориентированным на бизнес процесс подходом. В традиционном подходе упор делается на технические аспекты, такие как манипуляции с данными в базе данных, в то время как в бизнес-ориентированном подходе акцент делается на описании поведения системы и ее бизнес-процессов.

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

Далее предлагается использовать более ориентированный на бизнес процесс подход, который позволяет лучше описать и понять бизнес-логику, именуя классы, методы и свойства так, чтобы они отражали бизнес-термины, а не технические детали. Это позволяет разработчикам лучше понимать и описывать бизнес-процессы, а также создавать более читаемый и понятный код.
👍21
🪨💧Hard skills и soft skills: что это и как они проверяются на техническом собеседовании

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

🔗 Читать статью
👏3🎉2🥱1🌚1