PHP Portal | Программирование
4.85K subscribers
408 photos
20 videos
2 files
209 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для PHP-разработчика

Связь: @devmangx
Download Telegram
Защита чувствительных данных в PHP

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

Как работает sensitive_parameter:
При использовании этого атрибута, PHP скрывает значение параметра в сообщениях об ошибках и логах, заменяя его на ***. Это помогает предотвратить утечки конфиденциальной информации, такой как пароли или токены.

Пример использования:
class UserAuthenticator {
public function authenticate(
#[\SensitiveParameter] string $password
) {
// Логика аутентификации
if ($password !== 'secret') {
throw new \Exception("Authentication failed");
}
}
}

try {
(new UserAuthenticator())->authenticate('wrong_password');
} catch (\Exception $e) {
error_log($e->getMessage());
error_log($e->getTraceAsString());
}


В этом примере, если аутентификация не удастся, в логе вместо фактического значения пароля будет отображено ***.

👉 @PHPgx | #заметки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍162
Please open Telegram to view this post
VIEW IN TELEGRAM
😁31👍3
Laravel Pipelines отлично подходят для разделения логики на отдельные классы действий, но они имеют ограничение — метод send принимает только один аргумент.

В такой ситуации стоит рассмотреть использование объекта payload, чтобы передать в конвейер несколько зависимостей.

👉 @PHPgx | #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍2
Как получить список всех свойств объекта

В PHP можно получить список всех свойств объекта с помощью функции get_object_vars(). Эта функция возвращает массив, в котором ключами являются имена свойств, а значениями - их значения.

Пример использования функции get_object_vars():
    $object = new stdClass();
$object->name = "John Doe";
$object->age = 30;

$properties = get_object_vars($object);
print_r($properties);


Этот код выведет следующий результат:
    Array
(
[name] => John Doe
[age] => 30
)


Функция get_object_vars() может быть полезна, если вам нужно получить список всех свойств объекта. Например, вы можете использовать ее для создания списка всех элементов управления на форме или всех параметров в массиве.

👉 @PHPgx | #заметки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍111
💡 Совет по Laravel

Данные загружаются быстрее, если целевое значение является целым числом.

Используйте 𝘄𝗵𝗲𝗿𝗲𝗜𝗻𝘁𝗲𝗴𝗲𝗿𝗜𝗻𝗥𝗮𝘄() вместо метода 𝘄𝗵𝗲𝗿𝗲𝗜𝗻(), чтобы быстрее загружать данные, когда целевое значение является целым числом.

👉 @PHPgx | #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Null-safe оператор PHP

null-safe оператор ?-> позволяет безопасно обращаться к свойствам и методам объектов, которые могут быть равными null.

До появления null-safe оператора, доступ к свойству или методу объекта, который может быть равным null, мог привести к ошибке NullPointerException.

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

Примеры:
$user = User::findOrFail(1);

$name = $user?->name; // вернет имя пользователя, если $user не равен null

$age = $user?->getAge(); // вернет возраст пользователя, если $user не равен null


👉 @PHPgx | #заметки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍121
💡 Один из самых старых советов и подсказок Laravel, но каждый раз, когда я делюсь им, многие люди говорят: «Вау, я не знал этого, так круто».

Цикл «forelse» в Blade.

👉 @PHPgx | #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🤯5
💡 Совет по Laravel

Используйте Model Broadcast для обновлений в реальном времени

Model broadcasting в Laravel позволяет получать обновления в реальном времени при создании, обновлении или удалении моделей Eloquent. Это идеально подходит для живых дашбордов или уведомлений.

Включите broadcasting в вашей модели:

👉 @PHPgx | #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
regexpbuilderphp

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

👉 https://github.com/gherkins/regexpbuilderphp

👉 @PHPgx | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🤔3
Что происходит, когда вы вводите URL-адрес в браузере?

Довольно простой вопрос, который могут спросить в ходе собеса

1️⃣Пользователь вводит URL:

🔹Браузер ищет IP-адрес в нескольких уровнях кеша (браузера, ОС, локальном и у провайдера).
🔹Если IP-адрес не найден, запрос отправляется к DNS-резолверу.

2️⃣ Браузер устанавливает TCP-соединение с сервером по протоколу HTTP или HTTPS.

3️⃣ Браузер отправляет HTTP-запрос (GET/POST/...) на сервер для получения данных.

4️⃣ Сервер отправляет HTTP-ответ с нужными данными (HTML, CSS, JS и т. д.), браузер обрабатывает и отображает страницу пользователю.
 
👉 Источник

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10👀4🌭1
Foundry

Библиотека-фабрика моделей для создания выразительных, автозаполняемых по требованию фич для разработки/тестирования с помощью Symfony и Doctrine

Ссылка: тык

👉 @PHPgx | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
💡 Совет по Laravel

Знаете ли вы... Во время итерации в цикле foreach внутри цикла будет доступна переменная $loop. Эта переменная предоставляет доступ к некоторым полезным битам информации.

👉 @PHPgx | #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
php-vips

Очень быстрый пакет для работы с изображениями, который в ~5 раз быстрее Imagick или GD и потребляет меньше памяти. Это хороший пример FFI

Ссылка: тык

👉 @PHPgx | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
💡 Если вы используете GitHub Actions для запуска набора тестов вашего PHP-приложения, подумайте о добавлении шага для кэширования директории vendor, используемой Composer.

Это позволяет закэшировать всю директорию vendor при первом запуске и автоматически обновить кэш в случае изменения файла composer.lock, что экономит время сборки.

👉 @PHPgx | #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍152
💡 Совет по Laravel

Нужно обновить много моделей на основе сложных условий?

Комбинируйте эти методы Eloquent для ускорения работы в 10–100 раз:

select() → извлекайте только ID
chunkById() → используйте пакетную обработку для разделения больших объемов данных
toQuery() → выполняйте обновление моделей напрямую

👉 @PHPgx | #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Пример HTTP-сервера на PHP с использованием файберов

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

Для развёртывания используется Docker Compose, а код доступен в открытом репозитории

👉 Читать

➡️ @PHPgx | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
CPX

Это как npx но для PHP. Этот инструмент позволяет выполнить любую команду из любого пакета Composer, даже если он не установлен в вашем проекте.

👉 @PHPgx | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
💡 whereRelation против whereDoesntHaveRelation в Laravel

Не попадай в ловушку, пытаясь инвертировать whereRelation! Одно условие находит ЛЮБУЮ запись, а другое гарантирует, что НЕТ совпадений.

Уловил разницу? 😧

👉 @PHPgx | #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🌚1