可能重复:
具有类属性的默认方法参数?
我正在编写一个递归函数,只是为了便于使用,我希望函数的第一次调用接受默认参数。该值必须是对象成员变量的地址。请参阅下面的完整代码:
class Test{
public $hierarchy = array( );
public function addPath( $path, &$hierarchy ){
$dirs = explode( '/', $path );
if( count( $dirs ) == 1 ){
if( is_dir( $path ) )
$hierarchy[ $dirs[ 0 ] ] = '';
else
$hierarchy[ $path ] = '';
return $hierarchy;
}
$pop = array_shift( $dirs );
$hierarchy[ $pop ] = $this->addPath(
implode( '/', $dirs ), $hirearchy[ $pop ] );
return $hierarchy;
}
}
$t = new Test( );
$t->addPath( '_inc/test/sgsg', $t->hierarchy );
print_r( $t->hierarchy );
现在,我想在这里理想地做的是添加一个默认值:
public function addPath( $path, &$hierarchy = $this->hierarchy ){
所以我可以这样称呼它:
$t->addPath( '_inc/test/sgsg' );
但这给了我以下错误:
Parse error: syntax error, unexpected '$this' (T_VARIABLE) in tst.php on line 9
我一直在尝试一些没有成功的事情。有什么办法可以做到这一点?