はい、あります:あなたがすでに知っているようにReflection APIを使用していますが、すべてのコメントを出力する関数を作成することでもう少しかかります。 しかし、このアプローチでは、クラス内の静的メソッドを静的に作成するだけで静的に呼び出すことができます。別の方法は、引数(クラスの名前)を取る1つの静的メソッドで簡単なヘルパークラスを作成することです。したがって
<?php
abstract class ProjectVars {
/**
* Defines whether a user is logged in as ...
*/
protected $loggedIn;
/**
* Determines whether the user is registered or not
* @var bool;
*/
protected $register;
/**
* Holds information about user's surfing/visit history
* @var string;
*/
protected $records;
public static function getClassComments(){
$refClass = new ReflectionClass(self::class);
$comments = array();
foreach ($refClass->getProperties() as &$refProperty) {
$comments[$refProperty->getName()] = trim(preg_replace("#((\/)?(\*{1,2})(\/)?)#si", "", $refProperty->getDocComment()));
}
return $comments;
}
}
var_dump(ProjectVars::getClassComments());
// PRODUCES:
array (size=3)
'loggedIn' => string 'Defines whether a user is logged in as ...' (length=42)
'register' => string 'Determines whether the user is registered or not
@var bool;' (length=63)
'records' => string 'Holds information about user's surfingvisit history
@var string;' (length=68)
財産に関するすべてのコメントをアクセスするために言う:loggedIn
またはregister
またはrecords
、あなたがしなければならないことすべては、このようなものです:
ProjectVars::getClassComments()['loggedIn'];
ProjectVars::getClassComments()['register'];
ProjectVars::getClassComments()['records'];
次のコードは、両方のアプローチを示しています2ND APPROACH:SIMPLEを使用して、ヘルパークラス
<?php
class CommentAnalyser{
public static function getClassCommentsFor($fullyQualifiedClassName){
$refClass = new ReflectionClass($fullyQualifiedClassName);
$comments = array();
foreach ($refClass->getProperties() as &$refProperty) {
$comments[$refProperty->getName()] = trim(preg_replace("#((\/)?(\*{1,2})(\/)?)#si", "", $refProperty->getDocComment()));
}
return $comments;
}
}
var_dump(CommentAnalyser::getClassCommentsFor('ProjectVars'));
// PRODUCES:
array (size=3)
'loggedIn' => string 'Defines whether a user is logged in as ...' (length=42)
'register' => string 'Determines whether the user is registered or not
@var bool;' (length=63)
'records' => string 'Holds information about user's surfingvisit history
@var string;' (length=68)
モックアップHERE。
乾杯とグッドラック...
ほんの少しの注意:交換する正規表現は、「サーフィン/訪問」でスラッシュをとりこに。 –
@RuslanBesおかげでメイト....あなたは正しいです...それを一瞬で見てください...しかしあなたはアイデアを得る... ;-) – Poiz