require_once "fullshop.php"; function classData(ReflectionClass $class) { $details = ""; $name = $class->getName(); if ($class->isUserDefined()) { $details .= "{$name} is user defined\n"; } if ($class->isInternal()) { $details .= "{$name} is built-in\n"; } if ($class->isInterface()) { $details .= "{$name} is interface\n"; } if ($class->isAbstract()) { $details .= "{$name} is an abstract class\n"; } if ($class->isFinal()) { $details .= "{$name} is a final class\n"; } if ($class->isInstantiable()) { $details .= "{$name} can be instantiated\n"; } else { $details .= "{$name} can not be instantiated\n"; } return $details; } $prod_class = new ReflectionClass('CdProduct'); print classData($prod_class);
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Reflection Class Example Usage</title> <link rel="stylesheet" href="style.css"> </head> <body> <h3>Reflection Class Example Usage</h3> <?php require 'util.php'; spl_autoload_register(function ($class) { require $class . '.php'; }); $prod_class = new ReflectionClass('CdProduct'); // output of the following doesn't look very useful // Reflection::export($prod_class); // standard var_dump() $cd1 = new CdProduct('cd1', 'bob', 'bobbleson', 4, 50); echo '<br><br><pre>' . var_dump($cd1) . '</pre>'; print '<p><b>Class Info</b></p>'; print nl2br(classData($prod_class)); ?> </body> </html>
$details .= "{$name} -- это интерфейс"; } if ($class->isAbstract()) { $details .= "{$name} -- это абстрактный класс"; } if ($class->isFinal()) { $details .= "{$name} -- это финальный класс"; } if ($class->isInstantiable()) { $details .= "{$name} -- можно создать экземпляр класса"; } else { $details .= "{$name} -- нельзя создать экземпляр класса"; } return $details; } echo classData($prod_class); // выводим информацию echo "<hr>"; //--------------------------------------------------------------------------------- // выводим код класса class ReflectionUtil { static function getClassSource(ReflectionClass $class) { // принимаем объект класса ReflectionClass $path = $class->getFileName(); // получаем путь к файлу $lines = @file($path); // получаем массив с кодом $from = $class->getStartLine(); // получаем строку где начинается нужный код
if ($class->isAbstract()) { $details .= "{$name} is a final class\n"; } if ($class->isFinal()) { $details .= "{$name} is a final class\n"; } if ($class->isInstantiable()) { $details .= "{$name} can be instantiated\n"; } else { $details .= "{$name} can not be instantiated\n"; } return $details; } $s = new returns(); $t = new ReflectionClass("returns"); print classData($t); echo "<pre>"; //ReflectionClass::export($t); //print_r($t); exit; $s->sf("1", "2", "3"); $d = new returns3(); print_r(class_implements($d)); exit; $s = new returns(); //$s->hehe(); print_r(get_class_vars('returns')); echo "\n"; print is_callable(array($s, "hehe")); echo "\n"; print "234";