legend3---laravel中获取控制器名称和方法名称

一、总结

一句话总结:

\Route::current()->getActionName();会有完整的当前控制器名和方法名
public static function getControllerAndFunction()
{$action = \Route::current()->getActionName();list($class, $method) = explode('@', $action);$class = substr(strrchr($class,'\\'),1);return ['controller' => $class, 'method' => $method];
}

1、list($class, $method) = explode('@', $action);中的list($class, $method)的作用是什么?

让list中的$class和$method分别对应explode出来的数组的两个元素

2、strrchr($class,'\\')的作用是什么?

strrchr() 函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。
App\Http\Controllers\Admin\MyController中查找\返回的结果是:\MyController

3、substr函数的作用是什么?

Return part of a string
echo substr('abcdef', 1);     // bcdef

二、laravel中获取控制器名称和方法名称

1、示例

2、控制器中调用代码:

class MyController extends Controller
{//修改密码的界面public function changePasswordForm(){dd(\App\Model\ControllerAndFunction::getControllerAndFunction());return view('admin.my.change_pass');}

3、获取控制器名称和方法名称的代码

 1 <?php
 2
 3 namespace App\Model;
 4
 5 use Illuminate\Database\Eloquent\Model;
 6
 7 class ControllerAndFunction extends Model
 8 {
 9     //
10     /**
11      * @return array
12      * 获取控制器和方法名
13      */
14     public static function getControllerAndFunction()
15     {
16         $action = \Route::current()->getActionName();
17         list($class, $method) = explode('@', $action);
18         $class = substr(strrchr($class,'\\'),1);
19         return ['controller' => $class, 'method' => $method];
20     }
21
22
23     /**
24      * 将控制器和方法用点拼接
25      * @return string
26      */
27     public static function jointControllerAndFunction(){
28         $action = \Route::current()->getActionName();
29         list($class, $method) = explode('@', $action);
30         $class = substr(strrchr($class,'\\'),1);
31         return $class.'.'.$method;
32     }
33
34 }

$action = \Route::current()->getActionName();的结果为:

list($class, $method) = explode('@', $action);的结果为:

这一步得到方法名changePasswordForm

$class = substr(strrchr($class,'\\'),1);的结果为:

这一步得到控制器名MyController

strrchr($class,'\\')的结果为:

所以还需要substr从1的位置开始截取才的到控制器名称myController

4、相关补充

strrchr() 函数(在php中)查找字符在指定字符串中从右面开始的第一次出现的位置,如果成功,返回该字符以及其后面的字符,如果失败,则返回 NULL。与之相对应的是strchr()函数,它查找字符串中首次出现指定字符以及其后面的字符。

转载于:https://www.cnblogs.com/Renyi-Fan/p/11525328.html

legend3---laravel中获取控制器名称和方法名称相关推荐

  1. Codeigniter 获取当前的控制器名称和方法名称

    在Codeigniter 可以通过下面两个方法获取当前的控制器名称和方法名称 $this->router->fetch_class(); $this->router->fetc ...

  2. 视图中获取控制器中数据的方式

    在视图中获取控制器中数据的方式有两种: 一种是在控制器的操作中渲染视图时候分配模板数据,这种方式叫推送. 另外一种是在视图中手动获取控制器中的数据,包括控制器中的属性和方法及控制器id,通过$this ...

  3. android开发获取imei码,Android中获取IMEI码的方法

    我们在开发项目的时候,通常要获取手机的IMEI码,这是开发的必备需求,接下来,爱站技术频道小编就告诉大家Android中获取IMEI码的方法,希望本文的介绍能提高大家的水平. 核心代码:Imei = ...

  4. android代码 IMEI,Android_Android中获取IMEI码的方法,核心代码:Imei = ((TelephonyManager) - phpStudy...

    Android中获取IMEI码的方法 核心代码:Imei = ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)) .getDeviceId ...

  5. 【转】Java中获取文件大小的正确方法

    [转]Java中获取文件大小的正确方法 本文出处:http://blog.csdn.net/chaijunkun/article/details/22387305,转载请注明.由于本人不定期会整理相关 ...

  6. php 什么函数获取ip,在PHP中获取ip地址的方法有哪些

    在PHP中获取ip地址的方法有哪些 发布时间:2021-02-15 18:37:36 来源:亿速云 阅读:97 作者:Leah 这篇文章给大家介绍在PHP中获取ip地址的方法有哪些,内容非常详细,感兴 ...

  7. php 获取array的长度_php中获取数组长度的方法

    php中获取数组长度的方法 php获取数组长度的方法,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度,还有获取二维数组的方法,在php中获取数组长度方 ...

  8. iphone中获取屏幕分辨率的方法

    iphone中获取屏幕分辨率的方法 CGRect rect = [[UIScreen mainScreen] bounds]; CGSize size = rect.size; CGFloat wid ...

  9. php怎么取随机3位数字,php 从指定数字中获取随机组合的方法

    本篇文章主要介绍php 从指定数字中获取随机组合的方法,感兴趣的朋友参考下,希望对大家有所帮助. 例如:给定数字100,需要随机获取3个组成这个数字的组合,例如70,20,10 代码如下: /** * ...

最新文章

  1. 敏捷开发实践总结(二):关于测试
  2. #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  3. iOS32位唯一标识符
  4. BXNA在调试显示新闻的JS?
  5. GCC中SIMD指令的应用方法
  6. OGNL、EL表达式——Struts
  7. python 日志输出变量_python中记录打印的log模块logging的用法实例
  8. 剑指Offer55-II题解-平衡二叉树
  9. OpenShift 4 之 Image Registry、Image 和 ImageStream 概念和相关操作
  10. Struts2中的国际化
  11. [数据库]oracle导出数据库
  12. 埋点用例管理_API管理平台之系统设计篇
  13. JVM系列一:JVM内存组成及分配
  14. python复制文件到指定文件夹并重命名_python文件、文件夹的移动、复制、删除、重命名...
  15. 多个网站被挂菠菜黑链
  16. 微信小程序实战十三:狗狗小程序云搭建
  17. Python 程序员过中秋Python+pygame 制作拼图小游戏(附源码:5源码)
  18. python之数据库-表操作
  19. JavaScript指定长度和进制的UUID
  20. Java社招最全面试题,成功收获美团,小米offer

热门文章

  1. Android之自定义标题
  2. 第一篇随笔,通常都是内容空洞的。
  3. yaml 文件格式简介
  4. 使用OpenGL Shader实现放大镜效果
  5. 【bzoj1029】【JSOI2007】建筑抢修
  6. java 程序架构知识
  7. 如何理解Generator
  8. bootstrap回顾
  9. 生产环境elasticsearch5.0.1和6.3.2集群的部署配置详解
  10. 【NetApp】安装Cmode模拟器时,应使用带交换机的模式