クラスだけじゃなくて関数もあるよなとか
現状クラスだけが対象になってるけど、
関数もあることがあったりなかったり。
ま、推奨されはしないけど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; }