📜  php 获取对象类 - PHP (1)

📅  最后修改于: 2023-12-03 15:18:31.998000             🧑  作者: Mango

PHP获取对象类

在PHP中,我们经常需要获取一个对象的类名或者类实例的类名。本文将介绍如何在PHP中获取对象类。

获取类名

在PHP中,可以使用get_class()函数来获取对象的类名。这个函数的语法如下:

string get_class ( object $object = ? )

其中$object是一个对象实例,如果不传参数,则返回当前执行代码所在的类名。下面是一个例子:

class MyClass {
}

$obj = new MyClass();
echo get_class($obj); // 输出 "MyClass"

如果你想获取一个对象所在的命名空间和类名,可以使用get_class()函数的另一个变体get_class_name()

string get_class_name ( object $object = ? )

这个函数跟get_class()的区别就是返回的类名包含命名空间。下面是一个例子:

namespace MyNamespace;

class MyClass {
}

$obj = new MyClass();
echo get_class_name($obj); // 输出 "MyNamespace\MyClass"
获取类的反射对象

在PHP中,可以使用ReflectionClass类来获取一个类的反射对象。这个对象提供了很多有用的API来获取类的信息,比如类名、命名空间、类的方法、属性等等。下面是一个例子:

class MyClass {
    public $name = 'Tom';
    private function sayHello($age) {
        echo "Hello, my name is {$this->name}, I'm {$age} years old.";
    }
}

$reflection = new ReflectionClass('MyClass');
echo $reflection->getName(); // 输出 "MyClass"
echo $reflection->getNamespaceName(); // 输出 ""
$property = $reflection->getProperty('name');
var_dump($property->isPublic()); // 输出 bool(true)
$method = $reflection->getMethod('sayHello');
var_dump($method->isPrivate()); // 输出 bool(true)
获取类实例的类型

在PHP中,可以使用instanceof操作符来判断一个类实例是否是某个类或其子类的实例。下面是一个例子:

class MyClass {
}

class MySubClass extends MyClass {
}

$obj = new MyClass();
$subObj = new MySubClass();
var_dump($obj instanceof MyClass); // 输出 bool(true)
var_dump($subObj instanceof MyClass); // 输出 bool(true)
var_dump($subObj instanceof MySubClass); // 输出 bool(true)
结论

以上就是PHP的获取对象类的方法。get_class()函数用来获取类名,ReflectionClass类用来获取类的反射对象,instanceof操作符用来判断类实例的类型。