了
解
紅
點
最
新
動
態(tài)
和
行
業(yè)
資
訊
關(guān)于php函數(shù)的注釋獲取,在之前了解到python有__doc__獲取函數(shù)的描述,進而探索發(fā)現(xiàn)php也提供獲取函數(shù)注釋的函數(shù);
使用如下:
首先你的注釋要符合標準,才能使用php函數(shù)來獲??;
用到的php的反射函數(shù);
ReflectionMethod($class,$func): 此函數(shù)傳入兩個參數(shù);
$class和$func代表某個類的某個函數(shù);
注釋規(guī)范:
/**
* 描述 description
*/
使用函數(shù)獲取為:
$func = new ReflectionMethod($class,$func);
來個具體的代碼吧,可以copy運行看看效果:
/**
* 獲得指定類的注釋 用戶權(quán)限設(shè)置
* @param $model 模塊名稱 例如 admin shop
* @param $action 控制器名稱 由于用的是 模塊里面的函數(shù)調(diào)用所有將參數(shù)的方向替換 因為模板第一個是默認參數(shù)
* 類的注釋必須卸載定義Class 關(guān)鍵字的前面
*/
function get_class_annotation($action,$model){
// return $model ."-".$action;
// appadmincontrollerPower
$class = "app\".strtolower($model)."controller\".strtolower($action);
// return class_exists($class);
if(class_exists($class)) {
// ReflectionClass
$class = new ReflectionClass($class);
$tmp = $class->getDocComment();
// dump($reflect);
$flag = preg_match_all('/@name(.*?)n/',$tmp,$tmp);
$tmp = trim($tmp[1][0]);
return $tmp = $tmp !='' ? $tmp:'沒有設(shè)置';
}
}
/**
* 獲得指定類里面指定方法的注釋 用于權(quán)限設(shè)置
* @param $model 模塊名稱 例如 admin shop
* @param $action 控制器名稱
* @param $function 方法名稱
* @return string 返回注釋
* @throws ReflectionException
* 格式: /**
* @name 增加權(quán)限
*/
function get_annotation($model,$action,$function){
return $class = "app\".strtolower($model)."controller\".strtolower($action);
if(class_exists($class)) {
$reflect = new ReflectionMethod($class, $function);
$tmp = $reflect->getDocComment();
$flag = preg_match_all('/@name(.*?)n/', $tmp, $tmp);
$tmp = trim($tmp[1][0]);
return $tmp = $tmp != '' ? $tmp : '沒有設(shè)置';
}
}
大攻防