gpt4 book ai didi

php - 如何在 cakephp 中获取 Controller 内所有函数的列表

转载 作者:可可西里 更新时间:2023-10-31 22:13:11 26 4
gpt4 key购买 nike

我需要在 CakePHP 2.4 中选择一个 Controller 并显示其中编写的所有功能。我在 Stack Overflow 上找到了如何从这个问答线程中列出 Controller 但我现在需要的是一个特定的 Controller ,我需要获取它包含的所有功能的列表。

这是我所做的

public function getControllerList() {

$controllerClasses = App::objects('controller');
pr($controllerClasses);
foreach($controllerClasses as $controller) {

$actions = get_class_methods($controller);
echo '<br/>';echo '<br/>';
pr($actions);

}
}

pr($controllerClasses);给我如下的 Controller 列表

Array
(
[0] => AppController
[1] => BoardsController
[2] => TeamsController
[3] => TypesController
[4] => UsersController
)

但是 pr($actions);什么都没有...:(

这里是我需要的最终工作片段

http://www.cleverweb.nl/cakephp/list-all-controllers-in-cakephp-2/

public function getControllerList() {

$controllerClasses = App::objects('controller');
foreach ($controllerClasses as $controller) {
if ($controller != 'AppController') {
// Load the controller
App::import('Controller', str_replace('Controller', '', $controller));
// Load its methods / actions
$actionMethods = get_class_methods($controller);
foreach ($actionMethods as $key => $method) {

if ($method{0} == '_') {
unset($actionMethods[$key]);
}
}
// Load the ApplicationController (if there is one)
App::import('Controller', 'AppController');
$parentActions = get_class_methods('AppController');
$controllers[$controller] = array_diff($actionMethods, $parentActions);
}
}
return $controllers;
}

最佳答案

像这样的东西应该可以解决问题: https://github.com/dereuromark/cakephp-sandbox/blob/master/Plugin/Sandbox/Controller/SandboxAppController.php#L12

它基本上使用了一个非常基本的 PHP 函数:

$actions = get_class_methods($Controller);

然后获取父方法:

$parentMethods = get_class_methods(get_parent_class($Controller));

最后,使用 array_diff 您可以在该 Controller 中获得实际操作:

$actions = array_diff($actions, $parentMethods);

然后您仍然可以过滤掉不需要的操作。

关于php - 如何在 cakephp 中获取 Controller 内所有函数的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20963786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com