1、get_object_vars($obj) 获得对象的属性,以关联数组形式返回。
get_class_methods() 获得类的方法,以关联数组形式返回。
class A{
public $name;
public $age;
public $sex;
public function __construct($name,$age,$sex){
$this->name = $name;
$this->age = $age;
$this->sex = sex;
}
}
$a = new A('fxxy','28','man');
echo '
';
print_r(get_object_vars($a));//获得对象属性集合,以数组形式展示
print_r(get_class_methods('A'));//获得类方法集合,以数组形式展示
2、get_parent_class(),参数是对象或者是类名,获得父类。
class A{
public $name;
public $age;
public $sex;
public function show(){
return $this->name;
}
}
class B extends A{
}
$b = new B();
echo get_parent_class($b);//A
3、is_subclass_of($obj,$class):判断对象是否是某个类的子类实例化产生的。
class A{
public $name;
public $age;
public $sex;
public function show(){
return $this->sex;
}
}
class B extends A{
}
$b = new B();
echo is_subclass_of($b,'A');//1
4、interface_exists():判断接口是否存在。
interface A{
function eat();
function walk();
function run();
}
class B implements A{
function eat(){
echo 'eat';
}
function walk(){
echo 'walk';
}
function run(){
echo 'run';
}
}
echo interface_exists('A');//1
5、get_class():获得当前对象是哪个类实例化出来的。
6、get_declared_classes():以数组形式返回当前脚本中所有的类。
7、get_declared_interfaces():以数组形式返回当前脚本中的所有接口。
class Person{
private $name;
private $age;
private $sex;
public function show(){
echo $this->show();
}
}
$person = new Person();
echo get_class($person);//Person
echo '
';
print_r(get_declared_classes());
interface A{
function see();
function watch();
}//当前脚本中所有的类
print_r(get_declared_interfaces());//当前脚本中所有的接口
8、method_exists():判断某个类中是否存在某个方法,也就是检查类的方法是否存在。
9、property_exists():判断某个类中是否存在某个属性,也就是检查类的属性是否存在。
10、instanceof:判断某个对象是否是某个类实例化产生的。
class A{
public $name;
public $age;
public function show(){
echo 'show';
}
}
$a = new A();
var_dump(method_exists($a,'show'));//true
var_dump(method_exists($a,'go'));//false
var_dump(property_exists('A','name'));//true
var_dump(property_exists($a,'sex'));//false
echo $a instanceof A;//1
echo $a instanceof B// 空
后续还会继续更新更多面向对象有关的函数!