PHP Conference Japan 2024

assert_options

(PHP 4, PHP 5, PHP 7, PHP 8)

assert_optionsSetzt oder liefert Assert-Optionen

Warnung

Diese Funktion ist seit PHP 8.3.0 als DEPRECATED (veraltet) markiert. Von der Verwendung dieser Funktion wird dringend abgeraten.

Beschreibung

assert_options(int $option, mixed $value = ?): mixed

assert_options() ermöglicht es, die verschiedenen assert()-Optionen zu setzen, oder abzufragen, welche Optionen gesetzt sind.

Hinweis: Von der Verwendung von assert_options() wird abgeraten; stattdessen sollten die php.ini-Optionen zend.assertions und assert.exception durch ini_set() und ini_get() gesetzt bzw. gelesen werden.

Parameter-Liste

option

Assert-Optionen
Option INI-Option Standardwert Beschreibung
ASSERT_ACTIVE assert.active 1 Aktiviert die assert()-Überprüfung.
ASSERT_EXCEPTION assert.exception 1 Löst für jede fehlgeschlagene Assertion einen AssertionError aus
ASSERT_WARNING assert.warning 1 Gibt eine PHP-Warnung für jede fehlgeschlagene Überprüfung aus.
ASSERT_BAIL assert.bail 0 Beendet das Programm bei fehlgeschlagener Überprüfung.
ASSERT_QUIET_EVAL assert.quiet_eval 0 Unterdrückt die Fehlerausgabe während der Überprüfung. Entfernt in PHP 8.0.0.
ASSERT_CALLBACK assert.callback (null) Die Funktion, die bei fehlgeschlagener Überprüfung aufgerufen wird.

value

Ein optionaler neuer Wert für die Option.

Die Callback-Funktion, die per ASSERT_CALLBACK oder assert.callback gesetzt wurde, sollte folgende Signatur haben:

assert_callback(
    string $file,
    int $line,
    ?string $assertion,
    string $description = ?
): void
file
Die Datei, in der assert() aufgerufen wurde.
line
Die Zeile, in der assert() aufgerufen wurde.
assertion
Vor PHP 8.0.0 die Assertion, die an assert() übergeben wurde, aber nur wenn die Assertion als Zeichenkette angegeben wird (ist die Assertion eine boolesche Bedingung, dann ist dieser Parameter eine leere Zeichenkette). Seit PHP 8.0.0 ist dieser Parameter immer null.
description
Die Beschreibung, die an assert() übergeben wurde.

Die Übergabe einer leeren Zeichenkette als value setzt den Assert-Callback zurück.

Rückgabewerte

Gibt die Einstellung der gesetzten Optionen zurück.

Fehler/Exceptions

Wenn option keine gültige Option ist, wird ein ValueError ausgelöst.

Changelog

Version Beschreibung
8.3.0 assert_option() ist nun veraltet.
8.0.0 Wenn option keine gültige Option ist, wird ein ValueError ausgelöst; zuvor wurde false zurückgegeben.

Beispiele

Beispiel #1 assert_options()-Beispiel

<?php
// Das ist unsere Funktion zur Behandlung von
// fehlgeschlagenen Überprüfungen
function assert_failure($file, $line, $assertion, $message)
{
echo
"Die Assertion $assertion in $file in Zeile $line schlug fehl: $message";
}

// Das ist unsere Testfunktion
function test_assert($parameter)
{
assert(is_bool($parameter));
}

// Wir setzen unsere Assert-Optionen
assert_options(ASSERT_ACTIVE, true);
assert_options(ASSERT_BAIL, true);
assert_options(ASSERT_WARNING, false);
assert_options(ASSERT_CALLBACK, 'assert_failure');

// Wir führen eine Überprüfung durch, die fehlschlägt
test_assert(1);

// Dies wird nie erreicht, weil ASSERT_BAIL
// true ist
echo 'Unerreicht';
?>

Siehe auch

  • assert() - Überprüft eine Assertion (Zusicherung)

add a note

User Contributed Notes 1 note

up
4
Fr?d?ric Bouchery
21 years ago
Here is an exemple how to use the assertion callback function :

<?php
assert_options
( ASSERT_CALLBACK, 'assert_callback');

function
assert_callback( $script, $line, $message ) {
echo
'You have a design error in your script <b>', $script,'</b> : line <b>', $line,'</b> :<br />';
echo
'<b>', ereg_replace( '^.*//\*', '', $message ), '</b><br /><br />';
echo
'Open the source file and check it, because it\'s not a normal behaviour !';
exit;
}

$x = 3;
assert('is_integer( $x ) && ($x >= 0) && ($x <= 10); //* $x must be an integer value from 0 to 10' );
echo
"0 <= $x <= 10";
?>

assertion is usefull for "design by contract" methodology ...
To Top