legend3---laravel中获取控制器名称和方法名称
生活随笔
收集整理的這篇文章主要介紹了
legend3---laravel中获取控制器名称和方法名称
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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中获取控制器名称和方法名称的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows terminal 笔记
- 下一篇: 【python】关于控制台的中文输出出现