有没有办法创建一个包含类中所有公共变量的数组,而不必在PHP5中手动添加它们?
我正在寻找在类中顺序设置一组变量的最快方法
答案 0 :(得分:5)
答案 1 :(得分:3)
get_class_vars()
显而易见 - 请参阅PHP网站上的get_class_vars文档。
修改:使用此功能设置的示例:
$foo = new Foo();
$properties = get_class_vars("Foo");
foreach ($vars as $property)
{
$foo->{$property} = "some value";
}
你也可以使用Reflection API - 来自PHP docs:
<?php
class Foo {
public $foo = 1;
protected $bar = 2;
private $baz = 3;
}
$foo = new Foo();
$reflect = new ReflectionClass($foo);
$props = $reflect->getProperties(ReflectionProperty::IS_PUBLIC);
foreach ($props as $prop) {
print $prop->getName() . "\n";
}
var_dump($props);
?>
...直接从上面链接的PHP文档中获取的示例,但为了您的目的而进行了调整以仅检索公共属性。您可以根据需要过滤公共,受保护等。
这将返回一个ReflectionProperty
个对象数组,其中包含适当的名称和类。
修改:使用上述$props
数组进行设置的示例:
$props = $reflect->getProperties(ReflectionProperty::IS_PUBLIC);
foreach ($props as $prop)
{
$foo->{$prop->getName()} = "some value";
}
答案 2 :(得分:1)
看看PHP的Reflection API。您可以使用ReflectionClass::getProperties获取属性。
要设置属性,请执行以下操作:
$propToSet = 'somePropName';
$obj->{$propToSet} = "newValue";
答案 3 :(得分:0)
尝试get_class_vars($obj);