class Processor {
public function process($data)
{
if (!is_object($data)) {
throw new TypeError(
'Expected object'
);
}
return $data;
}
}class Processor {
public function process(object $data): object
{
return $data;
}
}$hash = password_hash(
$password,
PASSWORD_BCRYPT,
['cost' => 12]
);$hash = password_hash(
$password,
PASSWORD_ARGON2ID,
[
'memory_cost' => 1024,
'time_cost' => 2,
'threads' => 2,
]
);$key = random_bytes(
SODIUM_CRYPTO_SECRETBOX_KEYBYTES
);
$nonce = random_bytes(
SODIUM_CRYPTO_SECRETBOX_NONCEBYTES
);
$cipher = sodium_crypto_secretbox(
'Secret message',
$nonce,
$key
);trait LoggerTrait
{
public function log(string $msg): void
{
// Base logging
}
}trait LoggerTrait {
abstract public function getChannel(): string;
public function log(string $msg): void
{
$channel = $this->getChannel();
// ...
}
}