Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将对象转换为仅PHP数组的公共字段_Php_Oop_Object - Fatal编程技术网

将对象转换为仅PHP数组的公共字段

将对象转换为仅PHP数组的公共字段,php,oop,object,Php,Oop,Object,我想在PHP中将一个对象转换为数组,但只转换为它的公共字段。我已经找到了一些关于在PHP中将对象强制转换为数组的答案,但它们都转换了所有字段(也是私有的)。但我只需要公共字段-如何实现这一点?使用 例如: $object_to_arr = get_object_vars($obj); get\u object\u vars()将只返回对象的可访问和非静态属性 编辑: 如果您直接在$this上运行此命令,则它将返回私有属性。这是因为类本身甚至可以访问private属性 要解决此问题,请执行以下操

我想在PHP中将一个对象转换为数组,但只转换为它的公共字段。我已经找到了一些关于在PHP中将对象强制转换为数组的答案,但它们都转换了所有字段(也是私有的)。但我只需要公共字段-如何实现这一点?

使用

例如:

$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中做到;-)