如何获取cakephp3中控制器中所有方法的列表

时间:2018-06-27 18:21:45

标签: php cakephp cakephp-3.0

在CakePhp2中,我们可以通过以下方式获取控制器中的方法列表:

App::import('Controller', 'TagsController');
$classMethods = get_class_methods('TagsController');

但是在CakePhp3 App :: import中不起作用。那么,如何在CakePHP3中获取该控制器的方法列表呢?

谢谢

2 个答案:

答案 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

希望它会对您有所帮助。