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

JJ jj @ sann.ne.jp
2003年 10月 27日 (月) 11:11:51 JST


JJです。

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

(※)$funcsのfunc*を関数、argv*を関数の引数とする。


-----------------------------------------------------
<?php
  $funcs = "func1,argv1,func2,func3,argv2,func4";
  $arr   = split(",", $data);

  $data[0]($data[1]);  // func1(argv1);
  $data[2]();          // func2();
  $data[3]($data[4]);  // func3(argv2);
  $data[5]();          // func4();

  function func1($argv){}
  function func2(){}
  function func3($argv){}
  function func4(){}
?>
-----------------------------------------------------


>2ch の pear スレで話題になっていたので調べていたのですが,
>PHP_Parser という PEAR モジュールがあり,
>まさに JJ さんのやりたいことが出来そうな感じです.
>
>コレ → http://pear.php.net/package/PHP_Parser
>
>% php -q /usr/local/lib/php/docs/PHP_Parser/examples/test.php {ソース}
>
>とやってみると,classes 〜 methods 〜 params のところに,
>まさに欲しい情報が入っていそうです.
>
>わざわざモジュールをインストールしてまで引数有無判定をしたいかどうか,
>それは JJ さんの判断次第ですが.

すばらしい!確かにこれを使うといけそうです。
使用するかは検討したいと思いますが、
有用な情報有難うございました。




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