从PHP对象获取值

时间:2015-07-28 13:21:08

标签: php

我有一个返回如下的对象。

print_r($all->getInfo());
//returns the following on browser.
User Object ( [_name:User:private] => Kanye, West [_email:User:private] => kanye@hotmail.com)

我想阅读名称和电子邮件,并将其设置为两个单独的变量,如下所示。

$email = $all->getInfo()._email;
$name= $all->getInfo()._name;

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

你可以做这样的事情来获得对私人专家的访问。

class sampleClass {

private $property1 = 'name';
private $prooerty2 = 'email';

public function getProperty1(){
return $this->property1;
}

public function getProperty2(){
return $this->property2;
}

public function setProperty1($name){
}
$this->property1 = $name;
}

public function setProperty2($email){
$this->property2 = $email;
}

}

获取属性:

$classy = new sampleClass();

echo $classy->getProperty1;
echo $classy->getProperty2;

设置属性:

$classy->setProperty1('name1');
$classy->setProperty2('email2');

您还可以为__get和__set,more info使用魔术方法。

答案 1 :(得分:0)

如果您想要访问这些值,可以将其设置为public(根据您尝试的操作,这可能不是最佳解决方案),或创建__get()魔法方法

class foo
{
    private $value = "foo";
    private $value2 = "foo2";

    public function __get($name)
    {
        switch ($name)
        {
            case "value";
            return $this->$name;

            default:
            return null;
        }

    }
}

class bar
{
    private $value = "bar"; 
}

$f = new foo;
$b = new bar;

echo "Result:" . $f->value . "<br/>";
echo "Result:" . $f->value2 . "<br/>";
echo "Result:" . $b->value . "<br/>";

这个yeilds

Result:foo
Result:
E_ERROR : type 1 -- Cannot access private property bar::$value -- at line 31

当然,您也可以创建get_name()之类的功能,但是您必须为要访问的每个private属性执行此操作。

如果要控制__get()方法无法访问的内容和内容,可以添加一些逻辑。通过这种方式,您知道如果您尝试访问属性,则使用__get()方法,而不必尝试确定方法名称是什么。