重複の可能性:
クラス プロパティを持つデフォルトのメソッド引数?
私は再帰関数を書いていますが、使いやすさのために、関数の最初の呼び出しでデフォルトの引数を受け入れたいと思っています。この値は、オブジェクト メンバー変数のアドレスである必要があります。以下の完全なコードを参照してください。
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
私はいくつかのことを試してきましたが、成功しませんでした。これを達成する方法はありますか?