laravel5获取控制器方法

在 Laravel 5 中,获取控制器方法是一个非常基本而又常用的操作。在某些场景下,我们可能需要获取当前控制器执行的方法名称。那么,在 Laravel 5 中,怎样获取控制器方法呢?接下来,让我们一起来了解一下。

1、$route 对象

在 Laravel 5 中,$route 对象保存了当前正在执行控制器的路由信息。这个对象包含了请求的 URI、请求方法以及路由参数等。如果要获取当前控制器的方法名,可以通过 $route 对象的 “getActionName” 方法来获取。

/**
获取当前控制器方法名称
**/
public function getCurrentMethodName() {
$route = Route::getCurrentRoute();

$action = $route->
getActionName();

$fragments = explode('@', $action);

$method = end($fragments);

return $method;

}

在以上代码中,我们首先通过 Route::getCurrentRoute() 方法获取当前的路由对象,然后使用 $route 对象的 “getActionName” 方法来获取当前控制器方法的完整路径,例如 “AppHttpControllersTestController@index”。接着,我们使用 explode() 函数截取出方法名称部分,并使用 end() 函数获取数组的最后一个元素,即控制器的方法名。最后,将方法名返回即可。

2、反射

Laravel5如何获取控制器方法

除了使用 $route 对象外,我们还可以通过 PHP 反射机制来获取控制器方法。PHP 反射机制提供了一个类 ReflectionClass,可用于获取类的相关信息,包括方法、属性、常量等。通过 ReflectionClass,我们可以获取当前控制器的方法名称。

/**
获取当前控制器方法名称
**/
public function getCurrentMethodName() {
$controller = Route::current()->
getController();

$reflection = new ReflectionClass($controller);

$method = $reflection->
getMethod(Route::currentRouteAction());

return $method->
name;

}

在以上代码中,我们首先获取当前控制器的实例对象,然后使用 ReflectionClass 类获取该实例对象的反射信息。接着,通过反射实例的 getMethod() 方法获取当前执行的方法。最后,使用反射方法的 name 属性获取方法名称并返回即可。

总结

Laravel是一个功能强大的PHP框架,使用Laravel可以快速、轻松地构建高质量的Web应用程序。在Laravel应用程序中,获取控制器方法是非常常见的需求。本文将介绍Laravel5如何获取控制器方法。
一、利用反射获取控制器方法名
在Laravel5中,可以通过PHP反射机制获取控制器方法名。首先,在控制器中定义一个public方法,在该方法中获取该控制器的所有public方法和其对应的路由名称。接下来,利用PHP反射机制获取该控制器的方法名。
二、通过Router类获取控制器方法名
在Laravel5中,还可以通过Router类获取控制器方法名。在通过Router类注册路由时,可以使用Router::controller()方法注册控制器,以便Laravel可以自动将请求映射到对应的控制器方法。使用Router类的currentRouteAction()方法可以获取当前正在执行的控制器方法。
三、使用$request对象获取控制器方法名
$request对象是Laravel中一个非常有用的对象,它包含了当前请求的所有信息。可以通过$request对象获取当前请求的控制器方法名。使用$request对象的route()方法可以获取该请求被路由到的控制器方法名称。
总结
在Laravel5中,获取控制器方法名是非常简单的。可以利用反射机制、Router类以及$request对象来获取控制器方法名。使用以上方法都可以快速、简单地获取控制器方法名,从而更好地进行开发。