Я просто создаю простую библиотеку Codeigniter для получения списка всех классов и методов в структуре HMVC, я вызвал функцию на MY_Controller
, но здесь что-то не так, чтобы получить методы, и когда я var_dump
, он получил такой результат
результат var_dump
и вот мой код
public static function get_class_and_methods()
{
$classes = get_declared_classes();
$appdir = APPPATH."modules";
$appdirScan = array_diff(scandir($appdir), array('.', '..'));
echo "<pre>";
$arrAllModules = [];
foreach ($appdirScan as $keyParent => $module) {
$scanperModule = array_diff(preg_grep('~\.(php|phtml)$~', scandir($appdir."/".$module."/controllers")), array('.', '..'));
$arrAllModules[] = $scanperModule;
foreach ($scanperModule as $keyFChild => $value) {
// $a = file_get_contents($appdir."/".$module."/controllers/".$value);
$classes = self::getClassNameFromFile($appdir."/".$module."/controllers/".$value);
$class = new ReflectionClass($classes);
$methods = $class->getMethods();
foreach ($methods as $keySChild => $method) {
var_dump ($method);
}
}
}
$flatten = array_flatten(array_merge($arrAllModules));
die();
}
private static function getClassNameFromFile($filePathName)
{
$php_code = file_get_contents($filePathName);
$classes = array();
$tokens = token_get_all($php_code);
$count = count($tokens);
for ($i = 2; $i < $count; $i++) {
if ($tokens[$i - 2][0] == T_CLASS
&& $tokens[$i - 1][0] == T_WHITESPACE
&& $tokens[$i][0] == T_STRING
) {
$class_name = $tokens[$i][1];
$classes[] = $class_name;
}
}
return $classes[0];
}
function array_flatten($array) {
if (!is_array($array)) {
return FALSE;
}
$result = array();
foreach ($array as $key => $value) {
if (is_array($value)) {
$result = array_merge($result, array_flatten($value));
}
else {
$result[$key] = $value;
}
}
return $result;
}
что-то не так с моим кодом и каким-либо решением, пожалуйста?
Спасибо