ヘルパー関数
Nette\Utils\Helpers は、便利なヘルパー関数を集めた静的クラスです。
インストール:
composer require nette/utils
以下の例では、次のクラスの別名が定義されているものとします。
use Nette\Utils\Helpers;
capture (callable $func): string
コールバックを実行し、その出力を文字列として取り込んで返します。
$res = Helpers::capture(function () use ($template) {
$template->render();
});
clamp (int|float $value, int|float $min, int|float $max): int|float
値を min から max までの範囲(両端を含む)に収めます。
Helpers::clamp($level, 0, 255);
compare (mixed $left, string $operator, mixed $right): bool
2 つの値を PHP と同じやり方で比較します。演算子
>、>=、<、<=、=、==、===、!=、!==、<>
に対応しています。演算子が動的に決まる(変数である)場面で役立ちます。
Helpers::compare(10, '<', 20); // true
falseToNull (mixed $value): mixed
false を null に変換します。ほかの値はそのままです。
Helpers::falseToNull(false); // null
Helpers::falseToNull(123); // 123
getLastError(): string
直近に起きた PHP
のエラーを返します。エラーが起きていなければ空文字列を返します。error_get_last()
と違い、PHP のディレクティブ html_errors の影響を受けず、常に HTML
ではなくテキストを返します。
Helpers::getLastError();
getSuggestion (string[] $possibilities, string $value): ?string
与えられた $possibilities の中から、$value
に最も近く、かつ同一ではない文字列を見つけます。8
ビットのエンコーディングにのみ対応しています。
これは、ある選択肢が正しくないときに、似た代案をユーザーに示したい場合に便利です(ただし別のものを示すので、同一の文字列は無視されます)。Nette の「もしかして……?」というメッセージはこうして作られています。
$items = ['foo', 'bar', 'baz'];
Helpers::getSuggestion($items, 'fo'); // 'foo'
Helpers::getSuggestion($items, 'barr'); // 'bar'
Helpers::getSuggestion($items, 'baz'); // 'baz' ではなく 'bar'
splitClassName (string $name): array
PHP のクラス名を名前空間と短いクラス名に分けます。2 つの文字列の配列を返し、最初が名前空間、2 つめがクラス名です。
Helpers::splitClassName('Nette\Utils\Helpers'); // ['Nette\Utils', 'Helpers']
Helpers::splitClassName('Foo'); // ['', 'Foo']