在CakePhp2中,我们可以通过以下方式获取控制器中的方法列表:
App::import('Controller', 'TagsController');
$classMethods = get_class_methods('TagsController');
但是在CakePhp3 App :: import中不起作用。那么,如何在CakePHP3中获取该控制器的方法列表呢?
谢谢
答案 0 :(得分:1)
请注意此链接。我认为App::import()
更改为App::classname()
https://book.cakephp.org/3.0/en/core-libraries/app.html
您可以使用此部分。
// Names with \ in them will be returned unaltered.
App::classname('App\Cache\ComboCache');
// Returns App\Cache\ComboCache
get_class_methods('App\Cache\ComboCache')
答案 1 :(得分:0)
您可以使用php use ReflectionMethod;
public function getActions($controllerName) {
$className = 'App\\Controller\\' . $controllerName . 'Controller';
$class = new ReflectionClass($className);
$actions = $class->getMethods(ReflectionMethod::IS_PUBLIC);
$controllerName = str_replace("\\", "/", $controllerName);
$results = [$controllerName => []];
$ignoreList = ['beforeFilter', 'afterFilter', 'initialize', 'beforeRender'];
foreach ($actions as $action) {
if ($action->class == $className
&& !in_array($action->name, $ignoreList)
) {
array_push($results[$controllerName], $action->name);
}
}
return $results;
}
类在控制器中获取所有方法
Users
如果要获取$this->getActions('Users')
控制器方法列表。然后打电话
Named accessors
希望它会对您有所帮助。