phpDocumentor 标签与 JavaDoc 很相似。只有位于文本块(DocBlock)新行开头的标签才会被解析,并且在单行范围内,@ character后面的文本可以保持任意长度。例如:
<?php
/**
* tags demonstration
* @author this tag is parsed, but this @version tag is ignored
* @version 1.0 this version tag is parsed
*/
?>
任何 phpDocumentor 无法辨识的标签将不会被解析,但会将其以文本形式作为文本块的一部分进行输出。以下是 phpDocumentor 支持的标签列表
此以上常规标签(regular tags)外,phpDocumentor 中还有一种行内标签(inline tags)。与常规标签不同,行内标签不要求出现在新行的开头,而可以出现在文本流中。以下几个常用的行内标签:
@access 控制 phpDocumentor 对元素的文档化操作
如果 @access 被设置为 private,只有在命令行下使用 --parseprivate 参数时才会对应用此标签属性的元素进行文档化
<?php
/**
* funciton func1, public access is assumed
*/
function func1()
{
}
/**
* function func2, access is private, will not be documented
* @access private
*/
function func2()
{
}
/**
* This is possible, but redundant. An element has @access public by default
* @access public
*/
class class1
{
/**
* all text in this DocBlock will be ignored, unless command-line switch or
* setting in a user INI file enable documenting of private elments
* @access private
*/
var $private_var;
/**
* Protected is allowed, but does absolutely nothing. Use it to inform users
* that an element should only be referenced by this and child classes,
* and not directly
* @access protected
*/
/**
* This funciton is documented
*/
function publicmethod()
{
}
}
?>
参考:http://pear.php.net/package/PhpDocumentor/docs/1.4.3/phpDocumentor/tutorial_tags.access.pkg.html
abstract 有“抽象”的意思,使用 @abstract 声明函数或者类(class),或者是必须经由子类重写才有效的抽象类
@abstract 标签只在有 abstract 关键词的 PHP4 和 PHP5 中有效
代码示例
<?php
/**
* Example of basic @abstract usage in a class
* Use this if every single element of the class is abstract
* @abstract
*/
class myabstractclass
{
function function1($baz)
{
//...
}
function function2()
{
//...
}
}
?>
@author 标签可以应用于一些可拥有“作者”属性的元素,如全局变量(global variable)、引用(include)、常量(constant)、函数(function)、定义(define)、类(class)、变量(variable)、方法(method)、页面(page)。phpDocumentor 还会尝试解析尖括号中的文本,如果解析成email成功,则会在生成的文档中生成一个 mailto 链接。
v1.2 新特性:@author 属性可以从父类直接遗传到子类,详情请参考 inline {inheritdoc}
<?php
/**
* Page-Level DocBlock example.
* displays as Gregory Beaver<u>cellog@php.net</u>
* , where underlined text is a "mailto:cellog@php.net"
* @author Gregory Beaver <cellog@php.net>
*/
/**
* funciton datafunction
* another contributor authored this function
* @author Joe Shmoe
*/
fucntion dataFunction()
{
}
?>
参考:http://pear.php.net/package/PhpDocumentor/docs/1.4.3/phpDocumentor/tutorial_tags.author.pkg.html
@category 标签用户将多个包(packages)组织归类。这里定义的分类可以被 XML:DocBook/peardoc2 转换器直接调用,且可以被其它转换器使用。其它使用 phpDocumentor 打包的转换器会忽略这个分类,但这一情况在将来的版本里可能会有所改变。
在命令行下,可以使用 -dc, --defaultcategoryname 选项动态地指定分类
@category 应用示例:
<?php
/**
* Page-Level DocBlock
* @package MyPackage
* @category mycategory
*/
/**
* @global array used for stuff
*/
function mine()
{
global $baz;
//...
}
?>
参考:http://pear.php.net/package/PhpDocumentor/docs/1.4.3/phpDocumentor/tutorial_tags.category.pkg.html
@copyright 可以应用于任何可以使用版权声明的元素,如全局变量(global variable)、引用(include)、常量(constant)、函数(function)、定义(define)、类(class)、变量(variable)、方法(method)、页面(page)。phpDocumentor 将会直接显示 @copyright 后台定义的文本串。
v1.2 新特性:@copyright 属性可以从父类直接遗传到子类,详情请参考 inline {inheritdoc}
@copyright 应用示例:
<?php
/**
* Page-Level DocBlock example.
* @author Gregory Beaver <cellog@php.net>
* @copyright Copyright (c) 2002, Gregory Beaver
*/
/**
* function datafunciton
*/
function datafunction()
{
}
?>
参考:http://pear.php.net/package/PhpDocumentor/docs/1.4.3/phpDocumentor/tutorial_tags.copyright.pkg.html
@deprecate 标签可以应用于那些已经废弃的版本或声明一些相关信息的元素,除了页面之外,@deprecated 可应用于全局变量(global variable)、引用(include)、常量(constant)、函数(function)、定义(define)、类(class)、变量 (variable)、方法(method)。phpDocumentor 将直接显示 @deprecated 标签后面的文本串
使用 @deprecated 标签,来告知用户那些不再被使用的元素。
@deprecated 应用示例:
<?php
/**
* @deprecated deprecated since version 2.0
*/
funciton uselessfunction()
{
}
/**
* alse legal
* @deprecated
*/
class stupidclass
{
}
?>
参考:http://pear.php.net/package/PhpDocumentor/docs/1.4.3/phpDocumentor/tutorial_tags.deprecated.pkg.html
@filesource 标签只可作为文档级文本块(DocBlock)的应用,在其它地方使用此标签都将被忽略。phpDocumentor 解析当前文件的源代码,将其源代码进行语法高亮、添加行号,并且在生成的文档中添加它的链接。
@example 标签的意图与其相似,区别在于 @example 用于解析和创建链接到外部文件。
注意:@filesource 标签只在 PHP 4.3.0 中使用。
应用示例:
<?php
/**
* Contains serveral example classes that I want to parse but I
* also want to show the full source
* @package mypackage
* @subpackage example
* @filesource
*/
/**
* This class does things
* @package mypackage
* @subpackage example
*/
class oneofmany extends mainclass
{
//...
}
?>
参考:http://pear.php.net/package/PhpDocumentor/docs/1.4.3/phpDocumentor/tutorial_tags.filesource.pkg.html
@final 用于通告一个方法不能被子类覆写
@final 标签只能在使用 final 关键词的PHP4和PHP5中使用
应用示例:
<?php
/**
* example of basic @final usage in a class
*/
class myclass
{
/**
* function should never be overridden
* @final
*/
function function1 ($baz)
{
//...
}
function function2()
{
//..
}
}
?>
参考:http://pear.php.net/package/PhpDocumentor/docs/1.4.3/phpDocumentor/tutorial_tags.final.pkg.html
phpDocumentor 通过在文本块中使用 @global 标签来执行全局变量的声明。为了支持以前的 @global 用法,有两种方法使用 @global 标签,即变量定义和函数说明。
phpDocument 不会自动解析任何 @global 标签,且每个文本块中只能使用一个 @global 标签。一个全局变量文本块必须在其它任何元素或文本块这前,否则则会出现错误。
datetype 可以是任意有效的PHP类型或者 "mixed"。
$varname 必须是与源文件中声明的全局变量一致(使用 @name 标签可以改变名称在文档中的显示)。
未完...
应用示例:
<?php
/**
* example of incorrect @global declaration #1
* @global bool $GLOBALS['baz']
* @author blahblah
* @version -6
*/
include("file.ext");
// error - element encountered before global variable declaration, docblock will apply to this include!
$GLOBALS['baz'] = array('foo', 'bar');
/**
* example of incorrect @global declaration #2
* @global parserElement $_Element
*/
/**
* error - this DocBlock occurs before the global variable definition and will apply to the function,
* ignoring the global variable completely
*/
$_Element = new parserElement;
function oopsie()
{
//...
}
/**
* example of correct @global declaration,
* even with many irrelevant things in between
* @global mixed $_GLOBALS["myvar"]
*/
// this is OK
if ($pre)
{
$thisstuff = 'is fine too';
}
$_GLOBALS["myvar"] = array("this" => 'works just fine');
/**
* example of using @name with @global
* the @name tag *must* have a $ in the name, or an error will be raised
* @global array $GLOBALS['neato']
* @name $neato
*/
$GLOBALS['neato'] = 'This variable\'s name is documented as $neato, and not as $GLOBALS[\'neato\'];
?>
Here's an example of documenting the use of a global variable in a function/method
<?php
/**
* Used to showcase linking feature of function @global
*/
class test
{
}
/**
* @global test $GLOBALS['baz']
* @name $bar
*/
$GLOBALS['bar'] = new test
/**
* example of basic @global usage in a function
* assume global variables "$foo" and "$bar" are already documented
* @global bool used to control the weather
* @global test used to calculate the division tables
* @param bool $baz
* @return mixed
*/
function function1($baz)
{
global $foo,$bar;
// note that this also works as:
// global $foo;
// global $bar;
if ($baz)
{
$a = 5;
} else
{
$a = array(1,4);
}
return $a;
}
?>
参考:http://pear.php.net/package/PhpDocumentor/docs/1.4.3/phpDocumentor/tutorial_tags.global.pkg.html