php -- instanceof、class_exists、insterface_exists、method_exists、get_class、get_parent_class

时间:2022-08-03 06:39:48

class_exists:类是否存在

在创建对象之前判断类是否存在,如果不存在就应该先加载类,再创建对象,容错。

interface_exists:接口是否存在

method_exists:方法是否存在

get_class:得到对象类名

get_parent_class:得到父类的类名(不管父类是否继承自其他类)

<?php

    //对象相关函数
class S{ } class A extends S{
private function test(){ }
} class B extends A{ }
echo '<pre>';
//子类对象是否属于父类
$b = new B;
var_dump($b instanceof A); //true
var_dump($b instanceof B); //true //判断类是否存在
var_dump(class_exists('A')); //true //判断接口是否存在
var_dump(interface_exists('A')); //false //判断方法是否存在,只是判断类中是否有该方法,而不是去访问
//不管方法是用什么访问修饰限定符
var_dump(method_exists(new A,'test')); //true
var_dump(method_exists('A','test')); //true
var_dump(method_exists('B','test')); //true
//一旦类与类之间进行继承,只会判断继承链上是否存在该方法,判断不出来方法是否被继承 //得到对象的类名
var_dump(get_class($b)); //B
var_dump(get_parent_class($b)); //A