Php 如何按访问修改器筛选属性
所以我想只从类中输出公共属性Php 如何按访问修改器筛选属性,php,class,object,access-modifiers,Php,Class,Object,Access Modifiers,所以我想只从类中输出公共属性 class MyClass { $public $var1, $var2, var3; $private $pVar1, $pVar2, pVar3; //outputs all variables and their values //lets assume they are all defined function outputPublic() { foreach($this as $key=&g
class MyClass
{
$public $var1, $var2, var3;
$private $pVar1, $pVar2, pVar3;
//outputs all variables and their values
//lets assume they are all defined
function outputPublic()
{
foreach($this as $key=>$val)
echo $key . ' : ' . $val . '<br>';
}
}
有不同的方法。你可以用
foreach(调用_user_func('get_object_vars',$this)作为$key=>$val){
回显$key.':'.$val.
';
}
或者你可以使用
$reflect=新的ReflectionClass($this);
foreach($reflect->getProperties(ReflectionProperty::IS_PUBLIC)作为$props){
echo$props->getName()。:'.$props->getValue($this)。';
}
我建议使用ReflectionClass而不是get_object_vars,从PHP7中可以获得另一种行为。请看一看phps
ReflectionClass
@Daan,谢谢,我会看一看
$obj = new MyClass();
foreach($obj as $key=$val)
echo $key . ' : ' . $val;
foreach(call_user_func('get_object_vars', $this) as $key => $val) {
echo $key . ' : ' . $val . '<br>';
}
$reflect = new ReflectionClass($this);
foreach($reflect->getProperties(ReflectionProperty::IS_PUBLIC) as $props) {
echo $props->getName() . ' : ' . $props->getValue($this) . '<br>';
}