[PHP-users 18631]Re: 引数有り関数、引数無し関数の見分け方

Horikawa Masahiro horikawa @ secnet.co.jp
2003年 10月 27日 (月) 11:35:26 JST


お世話になっております。堀川です。

説明ありがとうございます。

> うまく動かなくなる問題について説明します。
> 例えば以下の様に、$funcsにカンマ区切りで関数名、関数の引数(※)とランダムで入ってくるとします。
> その値を関数名か関数の引数か判断して関数をコールする場合に、
> 文字列が関数であるか関数でないかという情報がなければ、
> 以下の様に関数をコールする事は出来ません。
> 現状、その様な状況でうまく動かないのです。
> それを解決するためには関数の情報を渡してあげなければならないという事です。
> ここで質問させて頂いた、引数有り関数、引数無し関数の見分け方が出来れば
> 関数の情報を渡さなくても解決出来るという事なんです。
> 
> (※)$funcsのfunc*を関数、argv*を関数の引数とする。

そうですね。この場合、うまく動きませんね。
ただし、PHPの関数の場合、引数を省略可能であるため、引数の数が分かっても、
うまく動かない気がします。
私だったら、

1.$funcsにcsv形式でデータを入れるのを止める。
2.$funcsにcsv形式でデータを入れる場合は、1行1関数にする。
3.関数名にprefixをつけて、引数にはその値を渡さないことにする。
4.引数を必ず引用符で囲むことにする。

等の対応を選びますね。
結局問題は、「関数名,引数データにおいて、関数名と引数の区別が付かないこ
と」なんですから、そちらを直接解決することを考えます。

もちろん、JJさんのフレームワークの仕様は分からない訳ですから、この意見を
押し付けるつもりはありません。
JJさんのフレームワークでは、同じ関数を、引数有りと引数無しで呼び出すこと
が有り得ないのでしたら無用の心配であるわけですし。

////////////////////////////////////////////////////////////
堀川 雅博(Horikawa Masahiro) e-mailto: horikawa @ secnet.co.jp
////////////////////////////////////////////////////////////




PHP-users メーリングリストの案内