对Laravel的Doxygen评论

时间:2016-09-27 07:15:33

标签: php laravel-5 doxygen

我有第三方软件包,其范围分辨率/外观类型cron函数如下所示

 \Cron::add('job-expired', '* * * * *', 

/**
 * @fn job-expired()
 * @brief Cron for job expired.
 *
 * Cron for job expired.
 * @returns Response
 */
function() 
{
    $jobs = Job::whereRaw("expiry_date < '".date('Y-m-d',strtotime("-1 days"))."'")->get();
    $queries = DB::getQueryLog();
$last_query = end($queries);
    //print_r($jobs);
    foreach($jobs as $job)
    {
        $job->status = 2;
        $job->save();
    //$job->expiry_date.' ' .$job->id.'<br>';
    }
});

以下评论不适用于此类功能。

/** @brief find certain url in array values
 *
 *  find certain url in array values
 *
 *  @param array values
 *  @param url specific url to search 
 *  @return Response
 */

我知道类或函数标签注释,除了上面的类型函数注释外,它们工作正常。

有人可以帮助我评论这种类型的功能吗?

1 个答案:

答案 0 :(得分:1)

我还没试过这个:

我认为Doxygen不会占用你的代码,因为它在doc块之后找不到预期的关键字。

所以如果你用这种方式写它可能会有效:

\Cron::add('job-expired', '* * * * *', 
/**
 * Documentation here
 */
function() 
{
    ...
});

如果这也不起作用,您可能必须使用过滤器使代码看起来与doxygen略有不同,因此function()应该变为function name()

您可以在GitHub repository上获得一些过滤器示例。

更新: 我使用这个可以用作过滤器的正则表达式

$regexp = '#(\/\*\*[\s\S]*?\*\/\s*)?(\\\\?Cron\s*::\s*add\()(\'|")([^,\']+)(\'|")(\s*,\s*[^,]+\s*,\s*)(\/\*\*[\s\S]*?\*\/\s*)?function\s*\(\s*\)#';
$replace = '$1$7public function $4()';
$source = preg_replace($regexp, $replace, $source);

它做了两件事:

  1. 将您的文档评论移至正确的位置
  2. 它为匿名函数提供了名称和访问修饰符
  3. 所以两者

    /**
     * Docs
     */
    \Cron::add('job-expired', '* * * * *', function()
    {
        ...
    });
    

    \Cron::add('job-expired', '* * * * *',
    /**
     * Docs
     */    
    function()
    {
        ...
    });
    

    成为

    /**
     * Docs
     */    
    public function job-expired()
    {
        ...
    });
    

    您可以尝试一下,我会将其添加到git存储库。