0

我有这样的课:

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() 之前它们将是空的,因此不需要调用它们。有没有办法做到这一点?

4

2 回答 2

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在只需要返回值时无需参数即可调用

于 2013-05-03T16:07:15.417 回答
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;
于 2013-05-03T16:08:37.737 回答