2016-06-02 12 views
1

私はキャメルケースの名前のユーザー定義関数で構成されたファイルがあります:PHP:関数リストのドキュメント

// some useful comments 
function functionOne(){ 
    return false; 
} 

// some other useful comment 
function addTwoNumbers($x,$y) 
{ 
    return 5; 
} 
... 

を私は、これらの機能は、これまでのところ

addTwoNumbers($x,$y) 
2 parameters 
Comment: some other useful comment 

functionOne() 
0 parameters 
Comment: some useful comments 

のような名でソート出力したいです私はこのような関数名のリストを得ます:

include '../includes/functions.php'; 

$allFunctions = get_defined_functions(); 

$userFunctions = $allFunctions['user']; 
sort($userFunctions); 

foreach ($userFunctions as $functionName) { 
    echo $functionName. "<br>"; 
} 

私の主な問題は、各関数のパラメータ数とパラメータ変数名。

さらに(しかし私はそれと一緒に暮らすことができました)関数名は小文字でしか表示されないので、私はCamelCaseでそれらを読むことができません。

最後にコメントは表示されません。私はそれらを配列$comments['functionOne']="some useful comments"に書き込むことを考えていました。

私の主な問題は、どのようにパラメータの変数名と番号を取得するのかです。

+0

ですので、関数名をラクダにしないでください。 PHPはJavaではありません。 – Raptor

+0

まず、[反映API](https://secure.php.net/manual/book.reflection.php)を確認します。しかし、なぜあなたはこれをしたいですか?単に[phpDocumentor](https://phpdoc.org/)を使うことができます。 – Yoshi

+0

@Raptor私はそれがキャメルケースを使わないのに十分な理由だとは思わない。 Zend Framework 2やSymfony 2のような現代のフレームワークやライブラリの多くは、メソッド名にcamelCaseを使用しています。私は個人的にそれが好きです。 – Adam

答えて

3

のparamater番号と名前を取得するには、PHPでReflectionを使用することができます。

function getFunctionArgumentNames($functionName) { 
    $reflection = new ReflectionFunction($functionName); 
    $argumentNames= array(); 
    foreach ($reflection ->getParameters() as $parameter) { 
     $argumentNames[] = $parameter->name; 
    } 
    return $argumentNames; 
} 

その後、あなたはパラメータ名を持っているだろう、と返された配列の長さがありますどのように多くのあなたを与えるだろう。


詳しい情報はそれについて見つけることができます:

  • ReflectionClass
  • ReflectionObject
  • What is Reflection in PHP ?

    反射のもう一つの一般的な使用は、ドキュメントを作成するためです。大規模なフレームワークやアプリケーションのあらゆるクラスのあらゆるメソッドについてのドキュメントを書くことは、非常に労力を要します。代わりに、Reflectionが自動的にドキュメントを生成します。これは、それぞれのメソッド、コンストラクター、クラスを調べて、何が入り、何が出てくるのかを判断することによって行います。

0

使用ReflectionFunctionクラス

例えば:

$refFunc = new ReflectionFunction('preg_replace'); 
foreach($refFunc->getParameters() as $param){ 
    print $param; 
} 

ReflectionFunctionクラスは、関数についての情報をレポートします。 もっと見るhttp://php.net/manual/en/class.reflectionfunction.php

関連する問題