クラスだけじゃなくて関数もあるよなとか

現状クラスだけが対象になってるけど、
関数もあることがあったりなかったり。
ま、推奨されはしないけどCakePHP にもグローバル関数はあるわけで。。。
かなり泥臭いけど、ファイル内のクラス名と関数名を取得して
それからそれぞれをリフレクション使ってDocCommentsを取得とかでごにょごにょ。

function getClassAndFunc($file)
{
    $result = array(
        'class' => array(),
        'function' => array(),
    );
    if (!file_exists($file)) {
        return $result;
    }
    
    $isCaptureClass = false;
    $isCaptureFunc = false;
    $depth = 0;
    $tokens = token_get_all(file_get_contents($file));
    foreach ($tokens as $token) {
        if (is_array($token)) {
            list($type, $str, ) = $token;
            switch ($type) {
            case T_CLASS:
                $isCaptureClass = true;
                break;

            case T_FUNCTION:
                if ($depth < 1) {
                    $isCaptureFunc = true;
                }
                break;

            case T_STRING:
                if ($isCaptureClass) {
                    $isCaptureClass = false;
                    $result['class'][] = $str;
                } else if ($isCaptureFunc) {
                    $isCaptureFunc = false;
                    $result['function'][] = $str;
                }
                break;
            }

        } else if (is_string($token)) {
            if ($token == '{') {
                $depth++;
            } else if ($token == '}') {
                $depth--;
            }
        }
    }
    return $result;
}