将对象转换为仅PHP数组的公共字段
我想在PHP中将一个对象转换为数组,但只转换为它的公共字段。我已经找到了一些关于在PHP中将对象强制转换为数组的答案,但它们都转换了所有字段(也是私有的)。但我只需要公共字段-如何实现这一点?使用 例如:将对象转换为仅PHP数组的公共字段,php,oop,object,Php,Oop,Object,我想在PHP中将一个对象转换为数组,但只转换为它的公共字段。我已经找到了一些关于在PHP中将对象强制转换为数组的答案,但它们都转换了所有字段(也是私有的)。但我只需要公共字段-如何实现这一点?使用 例如: $object_to_arr = get_object_vars($obj); get\u object\u vars()将只返回对象的可访问和非静态属性 编辑: 如果您直接在$this上运行此命令,则它将返回私有属性。这是因为类本身甚至可以访问private属性 要解决此问题,请执行以下操
$object_to_arr = get_object_vars($obj);
get\u object\u vars()
将只返回对象的可访问和非静态属性
编辑:
如果您直接在$this
上运行此命令,则它将返回私有属性。这是因为类本身甚至可以访问private
属性
要解决此问题,请执行以下操作:
$i = $this;
$publics_only = function() use ($i) {
return get_object_vars($i);
};
return $publics_only();
谢谢,我错过了这个。如果OP试图在@AlanChavez的某个地方存储这样的属性,我会添加serialize,这与任何数组都是一样的。这取决于OP以必要的方式处理数组。Tbh当我在$this
上使用它时,似乎我也用私有字段序列化了它。。。我想我无法在方法内部使用。嘿,谢谢你的anwser Ryan。我现在无法检查,但我相信您的答案是针对PHP5.4+。我知道你的想法,我想我会在5.2中做到;-)