<?php interface Serializable { // ... }
class Object { // ... }
/** * Une classe compteur * */ class Counter extends Object implements Serializable { const START = 0; private static $c = Counter::START;
/** * Invocation du compteur * * @access public * @return int */ public function count() { return self::$c++; } }
// Création d'une instance de la classe ReflectionClass $class = new ReflectionClass('Counter');
// Affichage d'informations basiques printf( "===> La %s%s%s %s '%s' [extension de %s]\n". " déclarée dans %s\n". " lignes %d à %d\n". " a le modificateur %d [%s]\n", $class->isInternal() ? 'internal' : 'user-defined', $class->isAbstract() ? ' abstract' : '', $class->isFinal() ? ' final' : '', $class->isInterface() ? 'interface' : 'class', $class->getName(), var_export($class->getParentClass(), 1), $class->getFileName(), $class->getStartLine(), $class->getEndline(), $class->getModifiers(), implode(' ', Reflection::getModifierNames($class->getModifiers())) );
// Affichage du commentaire de la documentation printf("---> Documentation:\n %s\n", var_export($class->getDocComment(), 1));
// Affichage de l'interface qui implémente cette classe printf("---> Implémenté :\n %s\n", var_export($class->getInterfaces(), 1));
// Affichage des constantes de la classe printf("---> Constantes : %s\n", var_export($class->getConstants(), 1));
// Affichage des propriétés de la classe printf("---> Properties: %s\n", var_export($class->getProperties(), 1));
// Affichage des méthodes de la classe printf("---> Méthodes : %s\n", var_export($class->getMethods(), 1));
// Si cette classe est instanciable, création d'une instance if ($class->isInstantiable()) { $counter = $class->newInstance();
echo '---> $counter est uneinstance ? '; echo $class->isInstance($counter) ? 'oui' : 'non';
echo "\n---> Le nouvel objet Object() est une instance ? "; echo $class->isInstance(new Object()) ? 'oui' : 'non'; } ?>
|