PHP 7 - Oczekiwania
Expectationssą wstecznie kompatybilnym rozszerzeniem starszej funkcji assert (). Oczekiwanie umożliwia asercje o zerowych kosztach w kodzie produkcyjnym i zapewnia możliwość zgłaszania niestandardowych wyjątków, gdy asercja nie powiedzie się. assert () jest teraz konstrukcją językową, w której pierwszy parametr jest wyrażeniem w porównaniu do bycia ciągiem znaków lub wartością logiczną do przetestowania.
Dyrektywy konfiguracji dla assert ()
Dyrektywa | Domyślna wartość | Możliwa wartość |
---|---|---|
zend.assertions | 1 | 1 - generowanie i wykonywanie kodu (tryb programowania) 0 - generuj kod, ale przeskakuj go w czasie wykonywania -1 - nie generuj kodu (tryb produkcyjny) |
assert.exception | 0 | 1 - throw, gdy asercja nie powiedzie się, albo przez wyrzucenie obiektu dostarczonego jako wyjątek, albo przez zgłoszenie nowego AssertionError obiekt, jeśli nie podano wyjątku. 0 - użyj lub wygeneruj Throwable, jak opisano powyżej, ale generuje ostrzeżenie tylko na podstawie tego obiektu, zamiast go rzucać (kompatybilne z zachowaniem PHP 5) |
Parametry
assertion- Stwierdzenie. W PHP 5 musi to być ciąg znaków do oceny lub wartość logiczna do przetestowania. W PHP 7 może to być również dowolne wyrażenie zwracające wartość, która zostanie wykonana, a wynik jest używany do wskazania, czy asercja się powiodła, czy nie.
description - opcjonalny opis, który zostanie dołączony do komunikatu o błędzie, jeśli asercja się nie powiedzie.
exception - W PHP 7 drugim parametrem może być a Throwable obiekt zamiast opisowego ciągu znaków, w takim przypadku jest to obiekt, który zostanie wyrzucony, jeśli stwierdzenie nie powiedzie się, a assert.exception dyrektywa konfiguracji jest włączona.
Zwracane wartości
FALSE jeśli twierdzenie jest fałszywe, TRUE Inaczej.
Przykład
<?php
ini_set('assert.exception', 1);
class CustomError extends AssertionError {}
assert(false, new CustomError('Custom Error Message!'));
?>
Tworzy następujące dane wyjściowe przeglądarki -
Fatal error: Uncaught CustomError: Custom Error Message! in...