一個解析php源碼找出類名和所有方法名的函數

function getClassAndMethodFromCode($code = '')
{
    $list = token_get_all($code);
    $count = count($list);
    $data = [];
    $class = '';
    $method = [];
    foreach($list as $k => $v){
        if(is_array($v)){
            $v['name'] = token_name($v[0]);
            $v['content'] = $v[1];
            $v['line'] = $v[2];
            if(in_array($v['name'], ['T_CLASS', 'T_FUNCTION'])){
                $data[] = ['name' => $v['name'], 'index' => $k];
            }
        }
        $list[$k] = $v;
    }
    foreach($data as $v){
        for($i = $v['index'];$i < $count;$i++){
            $item = $list[$i];
            if($item['name'] == 'T_STRING'){
                if($v['name'] == 'T_CLASS'){
                    $class = $item['content'];
                }
                else if($v['name'] == 'T_FUNCTION'){
                    $method[] = $item['content'];
                }
                break;
            }
        }
    }
    return ['class' => $class, 'method' => $method];
}

我用這個來自動掃描源碼,在用戶組權限分配時自動生成權限

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章