Download PHP - Endlich objektorientiert - OO- und UML
Transcript
Umsetzung objektorientierter Grundlagen
Auch in diesem Fall werden die Methoden anhand der Rechnungsklasse getestet. Auf
den dynamischen Klassenlader wird hier verzichtet, da kein Objekt angelegt wird. Die
Klasse wird stattdessen manuell in der ersten Zeile des PHP-Skripts geladen.
<?php require_once("rechnung.inc.php"); ?>
<html><body>
<?php
$klasse='Rechnung';
echo '<br>class_exists:<br>';
echo var_dump(class_exists($klasse));
echo '<br>get_class_methods:<br>';
echo var_dump(get_class_methods($klasse));
echo '<br>get_declared_classes:<br>';
echo var_dump(get_declared_classes());
echo '<br>get_class_vars:<br>';
echo var_dump(get_class_vars($klasse));
?>
</body></html>
Listing 4.23: Testen der Metainformationen einer Klasse
Die beeindruckende Ausgabe des Skripts aus Listing 4.23 lautet:
class_exists:
bool(true)
get_class_methods:
array(4) { [0]=> string(11) "__construct" [1]=> string(15) "setAusgeliefert" [2]=>
string(10) "__toString" [3]=> string(7) "__clone" }
get_declared_classes:
array(140) { [0]=> string(8) "stdClass" [1]=> string(9) "Exception" [2]=>
string(14) "ErrorException" [3]=> string(16) "COMPersistHelper" [4]=> string(13)
"com_exception" [5]=> string(19) "com_safearray_proxy" [6]=> string(7) "variant"
[7]=> string(3) "com" [8]=> string(6) "dotnet" [9]=> string(19)
"ReflectionException" [10]=> string(10) "Reflection" [11]=> string(26)
"ReflectionFunctionAbstract" [12]=> string(18) "ReflectionFunction" [13]=>
string(19) "ReflectionParameter" [14]=> string(16) "ReflectionMethod" [15]=>
string(15) "ReflectionClass" [16]=> string(16) "ReflectionObject" [17]=> string(18)
"ReflectionProperty" [18]=> string(19) "ReflectionExtension" [19]=> string(8)
"DateTime" [20]=> string(12) "DateTimeZone" [21]=> string(11) "LibXMLError" [22]=>
string(22) "__PHP_Incomplete_Class" [23]=> string(15) "php_user_filter" [24]=>
string(9) "Directory" [25]=> string(16) "SimpleXMLElement" [26]=> string(12)
"DOMException" [27]=> string(13) "DOMStringList" [28]=> string(11) "DOMNameList"
[29]=> string(21) "DOMImplementationList" [30]=> string(23)
"DOMImplementationSource" [31]=> string(17) "DOMImplementation" [32]=> string(7)
"DOMNode" [33]=> string(16) "DOMNameSpaceNode" [34]=> string(19)
"DOMDocumentFragment" [35]=> string(11) "DOMDocument" [36]=> string(11)
PHP – Endlich objektorientiert
235