在自己的文件中读取/解析Docblock

时间:2013-12-18 05:36:06

标签: php parsing docblocks

假设我有一个像这样的docblock:

 * @since       0.0.1  
 * @subpackage  my-package
 * @todo        too much
 * @var        int $myvar
 * @version    0.0.99

或:

 * Name: my app name
 * URI: http://www.someurl.com
 * Description: A Simple description.
 * Version: 0.0.99
 * Author: Obmerk99
 * Author URI: http://www.someuri.com
 * Text Domain: for get_text
 * Domain Path: /lang
 *

如何解析docblock以在同一个文件上使用这些字符串?

我的目标是每次更改文档时,只需使用docblock中的@version号码,而无需添加其他$version = 'myversion'

我知道有docblock解析器类,但我找不到如何读取自己的文件。 (我自己的question - 很久以前,提供了一些解决方案,但仅适用于外部文件,无论如何都不理想,因为它涉及每次打开和写入文件)

此外,在梨示例页面中,看起来它们以某种方式使用(据我的理解)版本号作为变量 - 但我无法理解如何...

示例Version I

* @version    SVN: $Id$

示例Version II

* @version    CVS: <?php
$
?> Id:$

(我不知道为什么两个示例页面不同(网址enzh) - 也许它只是一个小网页。)但无论如何我不明白如何申请它。

关键在于:如何在文件本身中使用docblock作为字符串 - 或者在docblock中反转逻辑并使用文档中的变量,因此我将始终需要声明版本号(以及可能的其他变量) )只有ONCE

1 个答案:

答案 0 :(得分:0)

我认为您唯一能做的就是使用解析器,或执行搜索/替换(使用正则表达式)

另一种方法是使用Reflection实现它:http://www.phpriot.com/articles/reflection-api 在我看来,如果您有PHP5可用,那将是最佳选择:)