📅  最后修改于: 2023-12-03 14:45:25.946000             🧑  作者: Mango
在 PHP 中,我们经常需要获取对象的键(也称为属性名)来操作其属性。本文将介绍几种获取对象键的方法。
get_object_vars
函数get_object_vars
函数可以获取一个对象的所有属性(包括私有属性)。通过遍历这个数组,我们可以获取对象的所有键。
class Person {
private $name = 'Tom';
public $age = 18;
}
$person = new Person();
$properties = get_object_vars($person);
foreach ($properties as $key => $value) {
echo $key . ' => ' . $value . "\n";
}
上面的示例将输出:
name => Tom
age => 18
stdClass
转换如果我们的对象不是某个类的实例,而是以数组方式创建的,我们可以使用 stdClass
类将其转换为对象。然后,我们可以使用 get_object_vars
来获取其所有键。
$array = [
'name' => 'Tom',
'age' => 18
];
$object = (object) $array;
$properties = get_object_vars($object);
foreach ($properties as $key => $value) {
echo $key . ' => ' . $value . "\n";
}
上面的示例将输出:
name => Tom
age => 18
ReflectionObject
类ReflectionObject
类提供了一个更加强大的方法来获取对象的所有属性(包括私有属性)。通过 getProperties
方法获取对象的所有属性,然后遍历这个数组,我们可以获取所有键。
class Person {
private $name = 'Tom';
public $age = 18;
}
$person = new Person();
$reflection = new ReflectionObject($person);
$properties = $reflection->getProperties();
foreach ($properties as $property) {
$property->setAccessible(true);
echo $property->getName() . ' => ' . $property->getValue($person) . "\n";
}
上面的示例将输出:
name => Tom
age => 18
以上是获取对象键的三种常用方法。无论你使用哪种方法,都可以轻松地获取对象的所有属性,不管是公共的还是私有的。