こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

functionに括弧を使用するとエラー

Parse error: parse error, expecting `')'' in C:\XXX.php on line XX

というエラーが発生します。
クラスのfunctionの引数に他のクラスを呼び出すとエラーになります。

class XXX
{
function XXX_XXX( $dmy = YYY:YYY_YYY() )  //ここがエラー発生行
{
・・・・・
}
}


class YYY
{
function YYY_YYY()
{
return 1;
}
}

この方法は無理でしょうか?
どうにかクラスを呼び出す方法が御座いましたらご教授願います。

投稿日時 - 2009-07-30 20:40:09

QNo.5168824

すぐに回答ほしいです

質問者が選んだベストアンサー

http://jp2.php.net/manual/ja/functions.arguments.php#functions.arguments.default
マニュアルに明記されていますが、関数の引数は定数式でなければならないとあります。
つまり例示された書式は通りません。

あと、横レスで申し訳ありませんが、、
>出来ればを増やしたくないなと思いまして。
ここ、何を増やしたくなかったんでしょう、行(処理)ですかね?

投稿日時 - 2009-07-31 12:08:19

補足

ご回答ありがとう御座います。
マニュアルからすると無理っぽいですね^^;

>ここ、何を増やしたくなかったんでしょう、行(処理)ですかね?
出来れば処理を増やしたくないです。
なぜか単語がなくなっちゃってますね。
申し訳ないですm(_ _)m

投稿日時 - 2009-07-31 12:22:58

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

条件分岐がダメなのであれば、実質できません。

やるとしたら

function XXX_XXX($dmy){

}

function XXX_XXX_auto(){
return $this->XXX_XXX(YYY::YYY_YYY());
}

とでもして別のメソッドを用意するしかないです。

投稿日時 - 2009-08-01 11:03:17

ANo.3

>他に方法ありましたらご教授願います。

他に方法ありましたらもなにも・・・
質問者さんの希望するやり方はできないことですし、
他の提示をしたら「なんとなくやりたくない」といわれてしまうと
どんな形式なら満足するという例示がないかぎり
何を提示していいのかわかりません。

投稿日時 - 2009-07-31 12:12:28

補足

ご回答ありがとうございます。
if文(分岐)を使用せずに記述が出来ればと思っております。

投稿日時 - 2009-07-31 13:25:22

ANo.1

こんな感じでよいのでは?

<?
class XXX{
function XXX_XXX($dmy = NULL ){
if(func_num_args()==0) $dmy=YYY::YYY_YYY();
print $dmy;
}
}
class YYY{
function YYY_YYY(){
return 1;
}
}

XXX::XXX_XXX();
XXX::XXX_XXX(2);
?>

投稿日時 - 2009-07-30 22:30:58

補足

ご回答ありがとう御座います。
その方法も考えたんですが、
出来ればを増やしたくないなと思いまして。
他に方法ありましたらご教授願います。

投稿日時 - 2009-07-31 11:41:07