PHP/Reflection/get declared classes
get_declared_classes() function returns an array of all defined classes.
Its syntax is: array get_declared_classes()
<?
class Vehicle {
}
class Car extends Vehicle {
}
$declared_classes = get_declared_classes();
print_r($declared_classes);
?>
/*
Array ( [0] => stdClass [1] => Exception [2] =>
ErrorException [3] => COMPersistHelper [4] => com_exception
[5] => com_safearray_proxy [6] => variant [7] => com [8] => dotnet
[9] => DateTime [10] => DateTimeZone [11] => ReflectionException
[12] => Reflection [13] => ReflectionFunctionAbstract
[14] => ReflectionFunction [15] => ReflectionParameter
[16] => ReflectionMethod [17] => ReflectionClass [18] => ReflectionObject
[19] => ReflectionProperty [20] => ReflectionExtension
[21] => LibXMLError [22] => __PHP_Incomplete_Class
[23] => php_user_filter [24] => Directory [25] => SimpleXMLElement
[26] => DOMException [27] => DOMStringList [28] => DOMNameList
[29] => DOMImplementationList [30] => DOMImplementationSource
[31] => DOMImplementation [32] => DOMNode [33] => DOMNameSpaceNode
[34] => DOMDocumentFragment [35] => DOMDocument [36] => DOMNodeList
[37] => DOMNamedNodeMap [38] => DOMCharacterData [39] => DOMAttr
[40] => DOMElement [41] => DOMText [42] => DOMComment
[43] => DOMTypeinfo [44] => DOMUserDataHandler [45] => DOMDomError
[46] => DOMErrorHandler [47] => DOMLocator [48] => DOMConfiguration
[49] => DOMCdataSection [50] => DOMDocumentType [51] => DOMNotation
[52] => DOMEntity [53] => DOMEntityReference
[54] => DOMProcessingInstruction [55] => DOMStringExtend
[56] => DOMXPath [57] => RecursiveIteratorIterator
[58] => IteratorIterator [59] => FilterIterator
[60] => RecursiveFilterIterator [61] => ParentIterator
[62] => LimitIterator [63] => CachingIterator
[64] => RecursiveCachingIterator [65] => NoRewindIterator
[66] => AppendIterator [67] => InfiniteIterator [68] => RegexIterator
[69] => RecursiveRegexIterator [70] => EmptyIterator [71] => ArrayObject
[72] => ArrayIterator [73] => RecursiveArrayIterator [74] => SplFileInfo
[75] => DirectoryIterator [76] => RecursiveDirectoryIterator
[77] => SplFileObject [78] => SplTempFileObject [79] => SimpleXMLIterator
[80] => LogicException [81] => BadFunctionCallException
[82] => BadMethodCallException [83] => DomainException
[84] => InvalidArgumentException [85] => LengthException
[86] => OutOfRangeException [87] => RuntimeException
[88] => OutOfBoundsException [89] => OverflowException
[90] => RangeException [91] => UnderflowException
[92] => UnexpectedValueException [93] => SplObjectStorage
[94] => PDOException [95] => PDO [96] => PDOStatement [97] => PDORow
[98] => ImagickException [99] => ImagickDrawException
[100] => ImagickPixelIteratorException [101] => ImagickPixelException
[102] => Imagick [103] => ImagickDraw [104] => ImagickPixelIterator
[105] => ImagickPixel [106] => Collator [107] => NumberFormatter
[108] => Normalizer [109] => Locale [110] => MessageFormatter
[111] => IntlDateFormatter [112] => mysqli_sql_exception
[113] => mysqli_driver [114] => mysqli [115] => mysqli_warning
[116] => mysqli_result [117] => mysqli_stmt [118] => SoapClient
[119] => SoapVar [120] => SoapServer [121] => SoapFault
[122] => SoapParam [123] => SoapHeader [124] => SQLiteDatabase
[125] => SQLiteResult [126] => SQLiteUnbuffered [127] => SQLiteException
[128] => tidy [129] => tidyNode [130] => XMLReader
[131] => XMLWriter [132] => XSLTProcessor [133] => ZipArchive
[134] => Vehicle [135] => Car )
*/
If you are not sure which XML APIs might be available
<?
$xmlfile = "myfile.xml";
$classes = get_declared_classes();
if( in_array("SimpleXMLElement", $classes) ) {
$xmldoc = simplexml_load_file($xmlfile);
} elseif( in_array("DOMDocument", $classes) )
{
$xmldoc = new DOMDocument();
$xmldoc->load($xmlfile);
} else {
}
?>