PHP/Class/Reflection Class Definition
Содержание
- 1 Class information: is Abstract, is Final and is Instantiable
- 2 Class information: is User Defined, is Internal and is Interface
- 3 Get class information: file name, start line and end line
- 4 Get class name
- 5 get_class_vars: get class variables
- 6 get_declared_classes: get all defined class
- 7 Use Reflection class to export class
- 8 var_dump a class
Class information: is Abstract, is Final and is Instantiable
<source lang="html4strict">
<?php class Person {
private $name; private $age; private $id; function __construct( $name, $age ) { $this->name = $name; $this->age = $age; } function setId( $id ) { $this->id = $id; } function getId(){ echo "get id method"; } function __clone() { $this->id = 0; }
} $p = new ReflectionClass( "Person" ); print classData( $p ); function classData( ReflectionClass $class ) {
$details = ""; $name = $class->getName(); 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;
} ?>
</source>
Class information: is User Defined, is Internal and is Interface
<source lang="html4strict">
<?php class Person {
private $name; private $age; private $id; function __construct( $name, $age ) { $this->name = $name; $this->age = $age; } function setId( $id ) { $this->id = $id; } function getId(){ echo "get id method"; } function __clone() { $this->id = 0; }
} $p = new ReflectionClass( "Person" ); print classData( $p ); 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"; } return $details;
} ?>
</source>
Get class information: file name, start line and end line
<source lang="html4strict">
<?php class Person {
private $name; private $age; private $id; function __construct( $name, $age ) { $this->name = $name; $this->age = $age; } function setId( $id ) { $this->id = $id; } function getId(){ echo "get id method"; } function __clone() { $this->id = 0; }
} class ReflectionUtil {
static function getClassSource( ReflectionClass $class ) { $path = $class->getFileName(); $lines = @file( $path ); $from = $class->getStartLine(); $to = $class->getEndLine(); $len = $to-$from+1; return implode( array_slice( $lines, $from-1, $len )); }
} print ReflectionUtil::getClassSource(
new ReflectionClass( "Person" ) );
?>
</source>
Get class name
<source lang="html4strict">
<?php class Person {
private $name; private $age; private $id; function __construct( $name, $age ) { $this->name = $name; $this->age = $age; } function setId( $id ) { $this->id = $id; } function __clone() { $this->id = 0; }
} $p = new Person("A",10); print get_class( $p ); if ( get_class( $p ) == "Person" ) {
print "\$p is a Person object\n";
} ?>
</source>
get_class_vars: get class variables
<source lang="html4strict">
<?php class Person {
private $name; private $age; private $id; function __construct( $name, $age ) { $this->name = $name; $this->age = $age; } function setId( $id ) { $this->id = $id; } function getId(){ echo "get id method"; } function __clone() { $this->id = 0; }
} print_r( get_class_vars( "Person" ) ); ?>
</source>
get_declared_classes: get all defined class
<source lang="html4strict">
<?php class Person {
private $name; private $age; private $id; function __construct( $name, $age ) { $this->name = $name; $this->age = $age; } function setId( $id ) { $this->id = $id; } function __clone() { $this->id = 0; }
} print_r( get_declared_classes() ); ?>
</source>
Use Reflection class to export class
<source lang="html4strict">
<?php class Person {
private $name; private $age; private $id; function __construct( $name, $age ) { $this->name = $name; $this->age = $age; } function setId( $id ) { $this->id = $id; } function getId(){ echo "get id method"; } function __clone() { $this->id = 0; }
} $p = new ReflectionClass( "Person" ); Reflection::export( $p );
?>
</source>
var_dump a class
<source lang="html4strict">
<?php class Person {
private $name; private $age; private $id; function __construct( $name, $age ) { $this->name = $name; $this->age = $age; } function setId( $id ) { $this->id = $id; } function getId(){ echo "get id method"; } function __clone() { $this->id = 0; }
} var_dump( new Person("A",10) ); ?>
</source>