我有一个这样的课程:
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()之前它们将是空的,因此不需要调用它们。有没有办法实现这个目标?
答案 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;