【问题标题】:Get id from object从对象中获取 id
【发布时间】:2013-05-10 15:11:02
【问题描述】:

我正在使用一个 api,它返回这些值:

CultuurNet\Auth\User Object ( [id:protected] => c23e4336-8f84-4501-9253-8b2faage5291 [tokenCredentials:protected] => CultuurNet\Auth\TokenCredentials Object ( [token:protected] => 7f0be1ffab3a456a8a8aa5efeea86c1f [secret:protected] => ab3c927180d7854de0e8e5842a21bc92f ) )

我怎样才能在 php 中重新获取 [id:protected]?

【问题讨论】:

标签: php api codeigniter object


【解决方案1】:

我假设您测试了 getter 方法?类似的东西

$object->getId();

如果getter不存在,可以使用反射,见Maxim Khan-Magomedov的回答。

【讨论】:

    【解决方案2】:

    使用您自己的类扩展 CultuurNet\Auth\User,然后提供返回受保护变量的 get_id() 函数。

    class MyUser extends CultuurNet\Auth\User {
      function get_id() {
        return $this->id;
      }
    }
    

    【讨论】:

    • 他说返回了对象,你不能扩展对象,只能扩展类。所以这行不通。
    【解决方案3】:

    使用reflections

    $reflection = new ReflectionClass($user);
    $property = $reflection->getProperty('id');
    $property->setAccessible(true);
    
    $id = $property->getValue($user);
    

    但真正的方法是使用 getter/setter。

    【讨论】:

    • 返回警告 ReflectionProperty::getValue() 只需要 1 个参数,给定 0
    • @Miaw 到底是什么警告? $user 当然是CultuurNet\Auth\User 的实例。查看更新(它正在等待实例)。
    • 我忘记将$user 传递给getValue()
    猜你喜欢
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    相关资源
    最近更新 更多