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...