Библиотека пхпшника | 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
Альтернатива Nova: почему решили перейти с самописного решения на Orchid

Статья рассказывает о решении перейти от самописной административной панели к использованию Orchid — открытой административной панели для проектов на Laravel. Автор выделяет несколько преимуществ Orchid перед их предыдущим решением, а также проводит сравнение с Laravel Nova — коммерческой админ-панелью.
👍3🥱21
Как вы считаете, действительно ли функциональное программирование бесполезно в PHP?
💯10
Forwarded from Библиотека программиста | программирование, кодинг, разработка
📯Внимание всем отважным героям и искателям приключений!

«Библиотеки Программиста» с гордостью представляет новую захватывающую игру — «Битва с Драконом». Выберите своих персонажей и сразитесь с древним Крылатым Ужасом Бурлопиворогом в эпическом поединке!

Мы предлагаем вам взять под свой контроль хитроумного изобретателя или ловкого вора.

💎Победителей ждет почет, уважение и награда! Итак, кто осмелится бросить вызов Бурлопиворогу? Начните свою «Битву с Драконом»!
👍2
Объекты-значения в PHP 8: создание лучшего кода

Статья рассматривает использование шаблона проектирования «Value Object» для повышения качества кода.

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

🔧Value Objects могут решить эти проблемы. Предоставляется пример, где в конструкторе осуществляется валидация данных. Это позволяет устранить дублирование логики проверки в разных местах кода.

Далее описаны три основных принципа работы с Value Objects:

Неменяемость (Immutability): Value Objects не должны изменяться после создания. В PHP 8.1 введены readonly-свойства для упрощения реализации неменяемости.

Сравнимость (Comparability): Обеспечение возможности легкого сравнения объектов Value Objects для определения их идентичности или различия.

Постоянство данных (Consistency): Value Objects всегда должны представлять валидные данные, и валидация должна выполняться в конструкторе объекта.

Автор также подчеркивает важность легкости отладки (Debuggability) Value Objects, предлагая использовать метод __toString() для простых объектов и toArray() для составных объектов.
👍43
Создание одностраничного приложения с помощью HTMX и Symfony

Данная статья представляет собой учебное пособие или руководство по использованию библиотеки htmx в сочетании с Symfony для создания веб-приложения с улучшенным UX.

Здесь рассматриваются различные аспекты разработки, включая навигацию, отправку форм, отображение данных, динамический поиск и аутентификацию.
6🔥2
Разработка расширения для PHP на C++. Хуки встроенных функций и методов

В этой статье показано, как создать расширение для PHP на C++ на примере разработки функциональности, позволяющей перехватывать вызовы встроенных функций и методов классов в php.

Здесь подробно рассмотрен процесс создания расширения для PHP на C++. Начиная с настройки среды разработки и создания проекта, до шагов по реализации хуков и выполнения callback-функций. Затронуты все основные ключевые моменты, от встраивания хуков во встроенные PHP-функции до подмены целевых функций и обработки аргументов, исключений и результатов.
👍15🔥411
Что такое sensitive данные? Как хранятся в базе? Как отражаются в логах?

Sensitive данные (чувствительные данные) — это информация, которая является приватной, конфиденциальной или важной для безопасности организации или пользователя. К таким данным относятся, например, пароли, номера кредитных карт, персональные идентификационные номера и т.д.

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

Sensitive данные не должны непосредственно отражаться в логах. Вместо этого должна быть сохранена информация о том, что операция на sensitive данных была выполнена. Например, вместо того, чтобы сохранять сам пароль в логах, можно сохранить запись вроде «пользователь X изменил свой пароль». Это делается для предотвращения утечки конфиденциальной информации в случае несанкционированного доступа к логам.

#вопросы_с_собеседований
10🥱5😁4👍1
Автономный взлом веб-приложений PHP на уровне байт-кода

Автор описывает новый алгоритм под названием «алгоритм обратного следования» («follow-back algorithm»), который он разработал для автоматического обнаружения уязвимостей в PHP-коде на уровне байткода. Алгоритм направлен на преодоление ограничений статического анализа, основанного на AST или поиске по регулярным выражениям, внедряя в себя анализ потока данных.

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

«Алгоритм обратного следования» в основном отслеживает обратный путь от потенциальной стоковой инструкции к входному источнику, рекурсивно выявляя инструкции, которые определяют или создают переменные, используемые в предыдущих инструкциях. Ручное пошаговое описание алгоритма включает в себя следование инструкциям байткода шаг за шагом, начиная с стоковой инструкции (например, ECHO) и отслеживания пути обратно к пользовательскому входному источнику (например, FETCH_DIM_R или FETCH_R).

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

Кроме того, представлена информация о распространенных уязвимостях PHP, связанных с пользовательским вводом, упоминает использование алгоритма обратного следования на конкретных веб-приложениях, разработанных для тестирования безопасности.
👍73
Forwarded from Библиотека программиста | программирование, кодинг, разработка
This media is not supported in your browser
VIEW IN TELEGRAM
🗄 ACID в контексте транзакции базы данных: наглядная демонстрация от ByteByteGo (Alex Xu)

🔹 Atomicity (атомарность) гарантирует, что каждая транзакция будет выполнена полностью или не будет выполнена совсем. Не допускаются промежуточные состояния.
🔹 Consistency (согласованность). Благодаря тому, что транзакция не допускает промежуточных результатов, БД остается консистентной. Есть такое определение транзакции: «Упорядоченное множество операций, переводящих базу данных из одного согласованного состояния в другое». То есть до выполнения операции и после БД остается консистентной (согласованной).
🔹 Isolation (изолированность). Во время выполнения транзакции параллельные транзакции не должны оказывать влияния на ее результат.
🔹 Durability (надежность). Если пользователь получил подтверждение от системы о выполнении транзакции, он может быть уверен, что сделанные им изменения не будут отменены из-за какого-либо сбоя.

#вопросы_с_собесов
👍14🔥2😁21🥱1
🚀Мотивацией работы с обширным базовым набором PHPStan в существующих проектах, особенно когда есть ограничения бюджета, является постепенное улучшение качества кода путем внедрения статического анализа в рабочий процесс.
🔄Процесс включает в себя настройку phpstan-baseline-analysis для отслеживания распределения ошибок в проекте и прогресса. Сгенерированные числа затем используются для создания отчетов о тенденциях для команды разработки.

🛠️Важность фильтрации базовых ошибок для сосредоточенной работы над конкретными областями улучшения заключается в том, что с phpstan-baseline-analysis версии 0.12.4 инструмент позволяет фильтровать ошибки по классам. Это позволяет разработчикам ориентироваться на определенные типы ошибок, такие как те, которые связаны с недопустимыми PHPDoc. Вводится инструмент phpstan-baseline-filter для облегчения этого процесса. Он может исключать или включать определенные классы ошибок из базового набора, что позволяет разработчикам решать проблемы поэтапно. Примеры использования инструмента phpstan-baseline-filter, включая команды для исключения или включения определенных классов ошибок показаны далее. Доступные ключи фильтра включают Classes-Cognitive-Complexity, Deprecations, Invalid-Phpdocs, Unknown-Types, Anonymous-Variables и Unused-Symbols . Предлагается использовать этот подход для установления приоритетов и решения проблем в зависимости от фокуса команды и потребностей проекта.
👍41
🧠Чему вы бы хотели научиться?

Расскажите нам о ваших пожеланиях: какие навыки вы хотели бы прокачать в ближайшее время или какую профессию хотели бы приобрести?

За прохождение опроса вы получите промокод на скидку 15% на все наши курсы до конца 2024 года.

👉Опрос по ссылке👈
😁6👏21👍1🌚1
Какие еще ЯПы кроме PHP знаете/изучали?
🌚82
Как выполнять команды Laravel Artisan с использованием эндпоинтов

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

Вместо традиционного подхода через cPanel или SSH можно создать API-эндпоинт для обработки команд, таких как миграции базы данных или очистка кеша.

Шаги:

1️⃣Создание контроллера (например, CommandController) с помощью Artisan.
2️⃣Добавление маршрута в Api routes для обработки API-запроса к созданному контроллеру.
3️⃣В контроллере создание метода runCommand, который выполняет Artisan-команду, используя переданную команду в API-запросе, и возвращает результат выполнения.
4️⃣Для безопасности API-точки создание Middleware (например, DebugModeOnly), которое позволяет выполнение команд только в режиме отладки. Регистрация Middleware в ядре приложения.
5️⃣Присвоение Middleware к созданному маршруту в Api.php.
👍9🎉21
Что означает сложность алгоритма?

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

Существуют два основных типа сложности алгоритма: временная сложность и пространственная сложность.

Временная сложность алгоритма оценивает время, необходимое для его выполнения, в зависимости от размера входных данных. Обычно время выполнения алгоритма измеряется в тактах процессора или в секундах. Примеры временной сложности включают константную сложность O(1) (выполнение за постоянное время), линейную сложность O(n) (выполнение занимает время, пропорциональное размеру входных данных) и квадратичную сложность O(n^2) (выполнение занимает время, пропорциональное квадрату размера входных данных).

Пространственная сложность алгоритма оценивает объем памяти, необходимый для его выполнения, в зависимости от размера входных данных. Обычно пространственная сложность измеряется в байтах. Примеры пространственной сложности включают константную сложность O(1) (не зависит от размера входных данных), линейную сложность O(n) (потребляет память, пропорционально размеру входных данных) и квадратичную сложность O(n^2) (потребляет память, пропорционально квадрату размера входных данных).

#вопросы_с_собеседований
👍11🔥32😁2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
This media is not supported in the widget
VIEW IN TELEGRAM
🎉18🥱4
Использование stdClass в PHP

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

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

✔️Работа с JSON:
stdClass удобен при декодировании JSON-строк в объекты PHP с использованием json_decode, особенно при работе с динамическими JSON-структурами.

✔️Взаимодействие с динамическими данными:
stdClass упрощает присвоение свойств для обработки данных из внешних источников, таких как API, где структура данных может изменяться.

✔️Динамический возврат объектов:
Функции или методы могут легко возвращать динамические объекты с использованием stdClass.

Однако, стоит учесть, что stdClass предоставляет гибкость для создания объектов на лету, но не обладает той же надежностью, что и классы в объектно-ориентированном программировании.
🌚8👏62😁2🎉2