gpt4 book ai didi

php - 如何通过访问修饰符过滤属性

转载 作者:可可西里 更新时间:2023-10-31 23:19:20 25 4
gpt4 key购买 nike

所以我想输出只在一个类中公开的属性。

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>';
}
}

我通过使用外部函数循环访问该类的实例来实现此功能,但我想知道如何从内部执行此操作。有没有办法获取访问修饰符?

从外部检索公共(public)属性的示例

$obj = new MyClass();
foreach($obj as $key=$val)
echo $key . ' : ' . $val;

最佳答案

有不同的方式。您可以使用 get_object_vars

foreach(call_user_func('get_object_vars', $this) as $key => $val) {
echo $key . ' : ' . $val . '<br>';
}

或者您可以使用 ReflectionClass

$reflect = new ReflectionClass($this);
foreach($reflect->getProperties(ReflectionProperty::IS_PUBLIC) as $props) {
echo $props->getName() . ' : ' . $props->getValue($this) . '<br>';
}

我建议使用 ReflectionClass 而不是 get_object_vars,从 php 7 开始你会得到另一种行为。

关于php - 如何通过访问修饰符过滤属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30572011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com