関数が依存している場合は$_SESSION['some_var']
、ヘッダーがコメントアウトしてそれを明確にします。どうしますか?テキストと同じように、または何ですか?
それとも@param
?
@usesを使用してスーパーグローバルを文書化できます
@globalには、グローバル変数の定義を示すためと、メソッドでのグローバルの使用法を強調するための2つの使用法があります。この2番目の使用法は、ユースケースに適合します。
ただし、そのメソッドで$ _SESSION ['some_var']を直接参照していて、「global」キーワードで指定しないとすると、メソッドの解析時にphpDocumentorの@globalタグがそれを見つけられない可能性があります。そのため、@ usesは、メソッドがそのスーパーグローバルに依存していることを強調する手段として、おそらく最良の代替手段です。
[1] -http://manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_tags.global.pkg.html
うわー、私もそれについて考えたことはありません。私もそのようなことを文書化しません。私はそれをメソッドの詳細で次のように述べるだけです
/**
* Takes the some_var session variable and uses it to solve world hunger
* @return food
*/
私にとって最も理にかなっています。
@globalがありますが、これはグローバル変数の作成を示しているようです。@paramは、メソッドに渡されたメソッドパラメーターのみを参照する必要があると思います。私が知っている@noteはありません。
コードが機能するためにグローバルまたは外部の何かに依存している場合(たとえば、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変数を使用して何かを実行していることを知る必要はありません。
コードが少し大きくなるとすぐに、この種のコードの保守、共有、デバッグ、および拡張は悪夢になります...