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、获取控制器名称和方法名称的代码

 <?php

 namespace App\Model;

 use Illuminate\Database\Eloquent\Model;

 class ControllerAndFunction extends Model
{
//
/**
* @return array
* 获取控制器和方法名
*/
public static function getControllerAndFunction()
{
$action = \Route::current()->getActionName();
list($class, $method) = explode('@', $action);
$class = substr(strrchr($class,'\\'),1);
return ['controller' => $class, 'method' => $method];
} /**
* 将控制器和方法用点拼接
* @return string
*/
public static function jointControllerAndFunction(){
$action = \Route::current()->getActionName();
list($class, $method) = explode('@', $action);
$class = substr(strrchr($class,'\\'),1);
return $class.'.'.$method;
} }
$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()函数,它查找字符串中首次出现指定字符以及其后面的字符。

 

legend3---laravel中获取控制器名称和方法名称的更多相关文章

  1. asp.net mvc 在视图中获取控制器与动作的名称

    获取 controller 名称: ViewContext.RouteData.Values["controller"].ToString(); 获取 action 名称: Vie ...

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

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

  3. IndexOf、LastIndexOf、Substring的用法及C# foreach 中获取索引index的方法

     String.IndexOf String.IndexOf 方法 (Char, Int32, Int32)报告指定字符在此实例中的第一个匹配项的索引.搜索从指定字符位置开始,并检查指定数量的字符位置 ...

  4. android中获取root权限的方法以及原理(转)

    一. 概述 本文介绍了android中获取root权限的方法以及原理,让大家对android 玩家中常说的“越狱”有一个更深层次的认识. 二. Root 的介绍 1. Root 的目的 可以让我们拥有 ...

  5. Sql中获取表结构(字段名称,类型,长度,说明)

    Sql中获取表结构(字段名称,类型,长度,说明) SELECT TableName = OBJECT_NAME(c.object_id), ColumnsName = c.name, Descript ...

  6. Android中获取文件路径的方法总结及对照

    最近在写文件存贮,Android中获取文件路径的方法比较多,所以自己也很混乱.找了好几篇博客,发现了以下的路径归纳,记录一下,以备不时之需 Environment.getDataDirectory() ...

  7. LoadRunner中获取当前系统时间方法

    LoadRunner中获取当前系统时间方法 发表于:2017-6-02 11:41  作者:人生_0809   来源:51Testing软件测试网采编 字体:大 中 小 | 上一篇 | 下一篇 | 打 ...

  8. Java编程中获取键盘输入实现方法及注意事项

    Java编程中获取键盘输入实现方法及注意事项 1. 键盘输入一个数组 package com.wen201807.sort; import java.util.Scanner; public clas ...

  9. Laravel中利用队列发送邮件的方法示例

    https://www.jb51.net/article/121647.htm 本文主要给大家介绍了关于Laravel中队列发送邮件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的 ...

随机推荐

  1. linux下vim常用命令 (更新中...)

    1.注释多行 1). 首先按esc进入命令行模式下,按下Ctrl + v,进入VISUAL BLOCK模式; 2). 在行首使用上下键选择需要注释的多行; 3). 按下键盘(大写)“I”键,进入插入模 ...

  2. 前端点击下载excel表格数据

    <el-button type="primary" @click="downloadChartData" size="mini"> ...

  3. mongodb的简单操作记录

    由于项目上需要对mongodb进行监控,所以需要先熟悉下什么是mongobd以及mongodb的简单操作 mongodb的安装: curl -O https://fastdl.mongodb.org/ ...

  4. jar包混淆和防反编译工具proguard使用简介

    平时都是用java语言做开发,特殊情况下,需要对编译出的jar包混淆,防止被轻易的反编译出来看到源码,用的proguard工具,下面简单记录一下工具使用过程. 1.下载程序包,可以去https://w ...

  5. jQuery获取当前按钮的id

    function test(e) { $(e.target).attr('id') } // 记得带上点击事件

  6. 洛谷P3370 && 字符串哈希讲解

    字符串哈希 寻找长度为n的主串s中的的匹配串T(长度为m)出现的位置或者次数问题属于字符串匹配问题. 朴素(一般)的想法就是从一个字符串的头开始for循环查找,当查找的一个字符与匹配串首字符相同时,往 ...

  7. tarjan算法比较详细的讲解&&tarjan常见疑难解答&&洛谷P2002 消息扩散题解

    因为有大佬写的比我更长更具体,所以我也就写写总结一下了 引入: 众所周知,很多图中有个东西名叫环. 对于这个东西很多算法都很头疼.(suchas 迪杰斯特拉) 更深层:环属于强联通分量(strongl ...

  8. JDK8之Stream新特性

    https://www.cnblogs.com/cbxBlog/p/9123106.html /** *JDK8 Stream特性 * Created by chengbx on 2018/5/27. ...

  9. 【转载】浅析python日志重复输出问题

    出处:https://www.cnblogs.com/huang-yc/p/9209096.html 问题起源: ​ 在学习了python的函数式编程后,又接触到了logging这样一个强大的日志模块 ...

  10. zabbix监控Nginx模板

    前提条件: nginx模块安装了http_stub_status_module和nginx_upstream_check_module: 在nginx的配置文件中配置上: location /stat ...