3

関数が依存している場合は$_SESSION['some_var']、ヘッダーがコメントアウトしてそれを明確にします。どうしますか?テキストと同じように、または何ですか?

それとも@param

4

4 に答える 4

4

@usesを使用してスーパーグローバルを文書化できます

于 2010-10-10T10:35:19.997 に答える
2

@globalには、グローバル変数の定義を示すためと、メソッドでのグローバルの使用法を強調するための2つの使用法があります。この2番目の使用法は、ユースケースに適合します。

ただし、そのメソッドで$ _SESSION ['some_var']を直接参照していて、「global」キーワードで指定しないとすると、メソッドの解析時にphpDocumentorの@globalタグがそれを見つけられない可能性があります。そのため、@ usesは、メソッドがそのスーパーグローバルに依存していることを強調する手段として、おそらく最良の代替手段です。

[1] -http://manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_tags.global.pkg.html

于 2010-10-11T19:58:38.360 に答える
2

うわー、私もそれについて考えたことはありません。私もそのようなことを文書化しません。私はそれをメソッドの詳細で次のように述べるだけです

/**
 * Takes the some_var session variable and uses it to solve world hunger
 * @return food
 */

私にとって最も理にかなっています。

@globalがありますが、これはグローバル変数の作成を示しているようです。@paramは、メソッドに渡されたメソッドパラメーターのみを参照する必要があると思います。私が知っている@noteはありません。

于 2010-10-10T06:55:32.687 に答える
1

コードが機能するためにグローバルまたは外部の何かに依存している場合(たとえば、sqliteがインストールされている必要があります)、Nevが述べたように@useを使用できます。

でも...

一般に、関数にグローバル変数を設定または使用する(またはスーパーグローバルを使用する)ことは、関数のカプセル化を破り、関数の内部と外部のコード間に強い依存関係を作成するため、悪い習慣だと思います。

関数の外部のコードがそれらのグローバルを作成またはアクセスすることになっている場合は、代わりに値をパラメーターとして関数に渡す必要があります。

たとえば、代わりに

function doMagic(){
    if ($_SESSION['use_black_magic'] == true){ // var coming from the outside
      $_SESSION['magic_results'] = 'dead chicken';
    }else{
      $_SESSION['magic_results'] = 'unicorn';
    }
}

$_SESSION['use_black_magic'] = false;
doMagic();
echo $_SESSION['magic_results']; // (unicorn) variable set within doMagic()

そのはず

function doMagic( $use_black_magic = true ){
    if ($use_black_magic == true){
      return 'dead chicken';
    }else{
      return 'unicorn';
    }
}

$magic_results = doMagic( false );
echo $magic_results; // unicorn

このように、doMagic()は、結果が格納される場所やパラメーター値の場所について何も知る必要がありません。また、外部コードは、関数doMagic()が$_SESSION変数を使用して何かを実行していることを知る必要はありません。

コードが少し大きくなるとすぐに、この種のコードの保守、共有、デバッグ、および拡張は悪夢になります...

于 2011-01-12T18:28:27.567 に答える