Home Articles

你如何找到Laravel门面背后的基础类?

Asked
Viewed 526 times
9

例如 - 此函数使用外观:

File::get('path/to/file.txt');

事实证明,实际供应 File::get 的基础类是 Illuminate\Filesystem\Filesystem

我查看了Laravel 4.2文档 - 这就是我使用的版本 - 以及api参考,但我事先并不知道如何找到"real"类到一个外观 .

这个tutorial on Laravel facades给出了一个涉及的方法

  • 找到了 File

  • 希望看到它扩展类 Facade
    通过 Facade#__callstatic() 方法在代码后面

getFacadeAccessor() 返回字符串 files

  • 跟踪 __callstatic()resolveFacadeInstance() 的行为

  • 等等

  • ...太长/很多步骤要发布

这是对最新情况的一个很好的证明,但我不想经常这样做 .

我的问题是,知道你在你的app中使用的“facaded classes”不一定有相同的名称或一些约定来帮助你搜索文件系统,怎么会有人 - 谁不知道底层的类是什么 - 找到laravel外观的基础类?

2 Answers

  • 7

    看来你可以使用 getFacadeRoot() . 例如,要找出 Mail 幕后的内容:

    get_class(Mail::getFacadeRoot());
    // in my case returns 'Illuminate\Mail\Mailer'
    
  • 2

    这是一个很好的资源:https://laravel.com/docs/facades#facade-class-reference除此之外,请确保为您正在使用的任何编辑器安装某种intellisense插件 . 其中大多数允许您按Ctrl键右键单击类/方法并转到定义 .

Related