<?php
/**
* Einfache Funktion für Tests
*/
/**
* Aufruf ohne Parameter: Liste der bisher gesammelte Fehlermeldungen wird als String zurückgegeben
* Aufruf mit einem Parameter: Übergebener String wird als Zwischenüberschrift gesetzt
* Aufruf mit zwei Parametern: ein boolscher Wert und ein Fehlertext der bei false gezeigt wird
* Aufruf mit drei Parametern: der dritte Parameter sorgt dafür, dass nur jeweils der erste Fehler angezeigt wird
*/
function SimpleTest()
{
static $s = '';
static $headline = '';
static $groupby = array();
// Snippets zur Gestaltung der Anzeige ...
$bullet = ' — ';
$nl = '<br />';
$tpl_headline = '<h4>[%s]</h4>';
$tpl_msg = <<< EOT
<div style="border:dashed 2px #999;padding:10px;background-color:#fff">
<h1>Es sind Fehler aufgetreten</h1>
%s
</div>
EOT;
$n = func_num_args();
$group = false;
switch($n):
case 3:
$group = func_get_arg(2);
// fall through intended ...
case 2:
$bool = func_get_arg(0);
$msg = func_get_arg(1);
break;
case 1:
// Zwischenüberschrift ...
$headline = func_get_arg(0);
return true;
break;
case 0:
$tmp = $s;
$s = '';
$headline = '';
if (!empty($tmp)){
$msg = sprintf($tpl_msg, $tmp);
}else{
$msg = '';
}
return $msg;
break;
default:
die ('wrong number of arguments');
break;
endswitch;
if (!$bool && ($group === false || !isset($groupby[$group]))){
if (!empty($headline)){
$s .= sprintf($tpl_headline, $headline);
$headline = '';
}
$s .= $bullet.$msg.$nl;
if ($group !== false){
$groupby[$group] = true;
}
}
}
SimpleTest('Testreihe A');
SimpleTest(2*3 == 9, 'Mmmmh, 2*3 ist doch nicht 9?');
SimpleTest('Testreihe B');
// der dritte Parameter sorgt dafür, dass immer nur der erste auftretende Fehler
// angezeigt wird.
SimpleTest(file_exists('gibtesabernicht.txt'), 'Datei nicht vorhanden', 1);
SimpleTest(is_readable('gibtesabernicht.txt'), 'Datei nicht lesbar', 1);
SimpleTest(is_writeable('gibtesabernicht.txt'), 'Datei nicht beschreibbar', 1);
SimpleTest(1 < 2, 'Eins soll immer kleiner als zwei sein');
SimpleTest(extension_loaded('gd'), 'Die GD-Lib ist nicht verfügbar');
echo SimpleTest();
?>
Dieses PHP Snippet soll in erster Linie als Beispiel und Anregung für eigene Bemühungen dienen.
Gerne darf man es für Projekte aller Art benutzen.
Möchte jemand das Snippet also solches in ähnlicher oder anderer Form veröffentlichen ist ein kleiner Hinweis auf simplecontent.net nicht zuviel verlangt oder Herr Koch?
Für die Abwesenheit von Fehlern kann natürlich keine Gewähr gegeben werden.