【问题标题】:Dynamically discover/process PHP object动态发现/处理 PHP 对象
【发布时间】:2012-01-08 15:59:50
【问题描述】:

是否可以动态发现 PHP 对象的属性?我有一个对象,我想剥离它并将其作为完全填充的 stdClass 对象返回,因此我需要删除输入中使用的一些子级别 - 内部 - 对象类型。

我的猜测是我需要它是递归的,因为源对象中对象的属性可以包含对象,等等。

任何建议,我有点卡住了?我试过摆弄反射类 get_object_vars 并将对象转换为数组。老实说,一切都没有成功..

【问题讨论】:

    标签: php


    【解决方案1】:

    经过测试,这似乎有效:

    <?php
    
    class myobj {private $privatevar = 'private'; public $hello = 'hellooo';}
    
    $obj = (object)array('one' => 1, 'two' => (object)array('sub' => (object)(array('three' => 3, 'obj' => new myobj))));
    
    var_dump($obj);
    
    echo "\n", json_encode($obj), "\n";
    
    $recursive_public_vars = json_decode(json_encode($obj));
    
    var_dump($recursive_public_vars);
    

    【讨论】:

    【解决方案2】:

    您可以使用foreach 浏览对象的(公共)属性:

    foreach ($object as $property => $value)
     ... // do stuff
    

    如果你在那里遇到另一个物体 (if (is_object($value))),你将不得不重复同样的事情。理想情况下,这将发生在递归函数中。

    【讨论】:

    猜你喜欢
    • 2017-11-24
    • 1970-01-01
    • 2018-02-08
    • 2010-09-20
    • 2011-07-05
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多