我知道这段代码:
$this->router->fetch_class(); // get current controller name
$this->router->fetch_method(); // get current method name
我想要做的是获得当前控制器或特定控制器中的所有方法。有没有人有同样的经历?谢谢。
解
我创建帮助器列出特定控制器中的所有方法
function list_this_controllers_method_except($controller, $except = array())
{
$methods = array();
foreach(get_class_methods($controller) as $method)
{
if (!in_array($method, $except))
{
$methods[] = $method;
}
}
return $methods;
}
答案 0 :(得分:4)
您可以使用本机php获取类方法
get_class_methods($this);
$ this是被称为控制器的
仅限样品
class user extends CI_Controller {
public function __construct() {
#-------------------------------
# constructor
#-------------------------------
parent::__construct();
var_dump(get_class_methods($this));
}
}
阅读文档
答案 1 :(得分:1)
-Oli Soproni B。(https://stackoverflow.com/users/1944946/oli-soproni-b)
谢谢我这样使用它:
class user extends CI_Controller {
public function __construct() {
#-------------------------------
# constructor
#-------------------------------
parent::__construct();
$methodList = get_class_methods($this);
foreach ($methodList as $key => $value) {
if($value!="__construct"&&$value!="get_instance"&&$value!="index") {
echo "$value"."\n";
}
}
}
}
答案 2 :(得分:0)
在控制器中尝试此测试功能
public function test()
{
$this->load->helper('file');
$controllers = get_filenames( APPPATH . 'controllers/' );
foreach( $controllers as $k => $v )
{
if( strpos( $v, '.php' ) === FALSE)
{
unset( $controllers[$k] );
}
}
echo '<ul>';
foreach( $controllers as $controller )
{
echo '<li>' . $controller . '<ul>';
include_once APPPATH . 'controllers/' . $controller;
$methods = get_class_methods( str_replace( '.php', '', $controller ) );
foreach( $methods as $method )
{
echo '<li>' . $method . '</li>';
}
echo '</ul></li>';
}
echo '</ul>';
}