通过方法访问私有属性

时间:2013-05-03 15:50:55

标签: php

我有一个这样的课程:

class myclass {

  private $a;
  private $b;

  public function dosomething($a,$b) {
    $this->a = $a;
    $this->b = $b;
  }

}

我想返回属性a和b,因此只能通过

访问它们
myclass->dosomething->a

如果我将属性设置为public,可以通过myclass-> a访问它们,但是在调用dosomething()之前它们将是空的,因此不需要调用它们。有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:1)

修改函数以将值作为数组返回(如注释中所述)

public function dosomething($a = null,$b = null) {
  if (!is_null($a)) $this->a = $a;
  if (!is_null($b)) $this->b = $b;
  return array('a' => $a, 'b' => $b);
}

然后取决于您使用的PHP版本

//=> 5.4 - which allows object method array dereferencing
$class->doSomething()['a']; 

//< 5.4 - which does not
$array = $class->doSomething();
$a = $array['a'];

我已将null选项添加到您的方法参数中,并在方法中处理它,以便在您只想要返回值时调用doSomething而不使用参数

答案 1 :(得分:0)

让你的函数返回一个对象。

public function dosomething($a,$b) {
    $this->a = $a;
    $this->b = $b;

    return (object)array(
        'a' => $this->a,
        'b' => $this->$b
    );
}

然后您可以按照以下方式访问它:

echo $obj->dosomething(1, 2)->a;