Laravel: 如何从控制器中获取动作名称及其参数作为字符串?
Laravel: How to get the action names from a controller and their params as a string?
我正在寻找一个函数,我将 ControllerName 作为参数,它 returns 该控制器中的函数。例如:
.
.
.
class ExampleController extends Controller {
public static function firstExample($param1 = ' ', $param2 = 0){
.
.
.
}
public static function secondExample($param3){
.
.
.
}
}
如果我调用:$actions = MyController::getActions('ExampleController');
它输出这个结构:
array(
0 => array(
'name' => 'firstExample'
'params' => array(
0 => '$param1',
1 => '$param2',
)
),
1 => array(
'name' => 'secondExample'
'params' => array(
0 => '$param3',
)
)
);
我知道如何编写函数和控制器。我的问题是:如何从不同的控制器获取函数名称及其参数(如果可能,也可能是它们的类型)?
因此,如果我理解正确的话,您想获取任何控制器的方法及其各自的参数。
第 1 步:获取方法名称
使用 PHP 的 get_class_methods
您可以检索特定 class.
的所有方法
function getActions($controllerName){
$class_methods = get_class_methods(controllerName); //getting them
foreach ($class_methods as $method_name) { //looping them
getParams($controllerName,$method_name);
}
}
第 2 步:获取方法参数
使用 PHP 的 ReflectionMethod
class:
function getParams($controllerName,$method_name){
$method = new ReflectionMethod($className, $methodName);
$params = $method->getParameters();
foreach ($params as $param) {
echo $param->getName(); //add to array here
}
}
现在获取类型,不确定 $param->getType()
是否有效,但这只是尝试的问题,无论如何这只是基本的东西,现在您可以操纵函数以满足您的需要。
注意:不确定 Laravel 是否有更好的方法,这是一种普通的 PHP 方法。
此致。
我正在寻找一个函数,我将 ControllerName 作为参数,它 returns 该控制器中的函数。例如:
.
.
.
class ExampleController extends Controller {
public static function firstExample($param1 = ' ', $param2 = 0){
.
.
.
}
public static function secondExample($param3){
.
.
.
}
}
如果我调用:$actions = MyController::getActions('ExampleController');
它输出这个结构:
array(
0 => array(
'name' => 'firstExample'
'params' => array(
0 => '$param1',
1 => '$param2',
)
),
1 => array(
'name' => 'secondExample'
'params' => array(
0 => '$param3',
)
)
);
我知道如何编写函数和控制器。我的问题是:如何从不同的控制器获取函数名称及其参数(如果可能,也可能是它们的类型)?
因此,如果我理解正确的话,您想获取任何控制器的方法及其各自的参数。
第 1 步:获取方法名称
使用 PHP 的 get_class_methods
您可以检索特定 class.
function getActions($controllerName){
$class_methods = get_class_methods(controllerName); //getting them
foreach ($class_methods as $method_name) { //looping them
getParams($controllerName,$method_name);
}
}
第 2 步:获取方法参数
使用 PHP 的 ReflectionMethod
class:
function getParams($controllerName,$method_name){
$method = new ReflectionMethod($className, $methodName);
$params = $method->getParameters();
foreach ($params as $param) {
echo $param->getName(); //add to array here
}
}
现在获取类型,不确定 $param->getType()
是否有效,但这只是尝试的问题,无论如何这只是基本的东西,现在您可以操纵函数以满足您的需要。
注意:不确定 Laravel 是否有更好的方法,这是一种普通的 PHP 方法。
此致。