Php 记录隐式输入参数,例如$\u会话

Php 记录隐式输入参数,例如$\u会话,php,phpdoc,Php,Phpdoc,如果函数依赖于$\u SESSION['some\u var'],则标题将注释掉以明确说明这一点。你是怎么做到的?就像文本一样,还是什么 甚至是@param?哇,我从没想过。我甚至都不记录这样的事情。我会说,只需在方法中详细说明 /** * Takes the some_var session variable and uses it to solve world hunger * @return food */ 对我来说最有意义 有@global,但这似乎表明创建了一个全局变量。我认为

如果函数依赖于
$\u SESSION['some\u var']
,则标题将注释掉以明确说明这一点。你是怎么做到的?就像文本一样,还是什么


甚至是
@param

哇,我从没想过。我甚至都不记录这样的事情。我会说,只需在方法中详细说明

/**
 * Takes the some_var session variable and uses it to solve world hunger
 * @return food
 */
对我来说最有意义


有@global,但这似乎表明创建了一个全局变量。我认为@param应该只引用传递给该方法的方法参数。据我所知,没有@note。

你可以用来记录超全局变量。

@global有两种用法:表示全局变量的定义,以及强调全局变量在方法中的用法。第二种用法适合您的用例

但是,假设您在该方法中直接引用$\u SESSION['some_var'],并且从不通过“global”关键字表示它,则在解析该方法时,phpDocumentor的@global标记可能找不到它。因此,@使用可能是突出该方法对超全局的依赖性的最佳替代方法


[1] --

如果您的代码依赖于全局或外部的东西才能工作(例如,它需要安装sqlite),则可以使用@use as

但是…

一般来说,我认为让函数填充或使用全局变量(或使用超全局变量)是一种不好的做法,因为它破坏了函数的封装,并在函数内部和外部的代码之间创建了强烈的依赖关系

如果函数外部的任何代码都应该创建或访问这些全局变量,那么这些值应该作为参数传递给函数

例如,代替

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()正在使用$\u会话变量执行某些操作

只要代码稍微增长一点,维护、共享、调试和扩展此类代码就变成了一场噩梦


+1像那样提及它很好——只要有人提及就行。否则,潜在用户将不知道他可能需要设置它。(是的,在PhpDoc中没有@note;我想的是DoxyGen,对不起)但是如果fn()返回一个$\u会话变量呢?但是如果fn()返回一个$\u会话变量呢?在这种情况下,我不会做任何不同的事情-只返回变量的类型(混合、字符串、数组、int、bool等)不用担心变量名或者它是否是超全局变量!if“返回”多个$\u会话变量?但是如果fn()“返回”一个$\u会话变量呢?那么@return应该表示:*@return mixed返回$\u会话['some\u var']superglobalfurther的当前值,如果您确切知道可能返回的多个$\u会话变量,您可以将它们列出,用管道分隔,不要只说“混合”:@return$_SESSION['var1']|$_SESSION['var2']|$_SESSION['var3']这些SESSION全局变量之一:var1、var2或var3