Присоединяйтесь к нашему каналу и погрузитесь в мир для PHP-разработчика
Связь: @devmangx
Post #217
2.48K
PH @phpgx
Showing posts older than #219 · Back to latest

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


forelse» в Blade.null-safe оператор ?-> позволяет безопасно обращаться к свойствам и методам объектов, которые могут быть равными null.null-safe оператора, доступ к свойству или методу объекта, который может быть равным null, мог привести к ошибке NullPointerException.null, без необходимости использования оператора isset().$user = User::findOrFail(1);
$name = $user?->name; // вернет имя пользователя, если $user не равен null
$age = $user?->getAge(); // вернет возраст пользователя, если $user не равен null

𝘄𝗵𝗲𝗿𝗲𝗜𝗻𝘁𝗲𝗴𝗲𝗿𝗜𝗻𝗥𝗮𝘄() вместо метода 𝘄𝗵𝗲𝗿𝗲𝗜𝗻(), чтобы быстрее загружать данные, когда целевое значение является целым числом.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() может быть полезна, если вам нужно получить список всех свойств объекта. Например, вы можете использовать ее для создания списка всех элементов управления на форме или всех параметров в массиве.
send принимает только один аргумент.sensitive_parameter — это атрибут, позволяющий пометить параметры функций и методов как чувствительные, чтобы исключить их из логов и трейсбеков.sensitive_parameter:***. Это помогает предотвратить утечки конфиденциальной информации, такой как пароли или токены.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());
}***.$key = sodium_crypto_secretbox_keygen(); // Генерация ключа
file_put_contents('secret.key', $key); // Сохранение ключа в файл
$message = "Конфиденциальные данные";
$key = file_get_contents('secret.key'); // Получение ключа из файла
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES); // Генерация случайного вектора инициализации
$ciphertext = sodium_crypto_secretbox($message, $nonce, $key);
// Сохранение зашифрованных данных
file_put_contents('data.enc', $nonce . $ciphertext);
echo "Данные успешно зашифрованы!";
$key = file_get_contents('secret.key');
$encrypted = file_get_contents('data.enc');
$nonce = mb_substr($encrypted, 0, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, '8bit');
$ciphertext = mb_substr($encrypted, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, null, '8bit');
$decrypted = sodium_crypto_secretbox_open($ciphertext, $nonce, $key);
if ($decrypted === false) {
throw new Exception("Ошибка расшифровки данных!");
}
echo "Расшифрованные данные: {$decrypted}";