hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - PHP框架 - Laravel - 正文 请牢记本站网址www.sosophp.cn

laravel门面与效劳提供者区分【laravel框架】

2019-11-27Laravel搜搜PHP网57°c
A+ A-

laravel门面情势与效劳供应者区分

以 Laravel 自带的文件体系为例,在 config/app.php 的配置文件的 providers 数组中,注册了一个效劳供应者:

Illuminate\Filesystem\FilesystemServiceProvider::class,

在 alias 数组中定义了一个门面:

‘File’ => Illuminate\Support\Facades\File::class,

经由过程这两个步骤,我们就可以异常轻易的运用 Laravel 供应的文件体系相干的操纵,而且挪用情势很简约,如:

File::exist ($path),推断文件是不是存在。
File::get ($path, $lock = false),猎取一个文件的内容。
File::append ($path, $data),把内容追加到一个文件末端。
File::files ($directory),猎取一个目录下一切文件。

那末这是怎样做到的呢?下面分别讲一讲 Laravel 的效劳供应者和门面情势。

效劳供应者

先看看定义:

效劳供应者是一切 Laravel 应用程序启动的中间地点。包含你本身的应用程序,以及一切的 Laravel 中心效劳,都是经由过程效劳供应者启动的。

在文件体系这个效劳供应者中,位置 /vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemServiceProvider.php,register 要领可以看到绑定了一个单例:

protected function registerNativeFilesystem()
{
    $this->app->singleton('files', function () {
        return new Filesystem;
    });
}

这个单例是 Filesystem 这个类的单例情势。固然,这个效劳供应者中也可以绑定其他的单例,或做更多的事变。我们这里只研讨 File::exist () 这类挪用体式格局的道理。

那末如许一来就有个 files 的单例,现实上是 Filesystem 这个类的实例。

此时,假如没有 Facade,也是可以挪用到 Filesystem 这个实例的要领的,那就是如许挪用:

app(‘files’)->exist($path)

好了,如今最先讲 Facade.

Facade 门面情势

先看下简介:

Facades /fəˈsäd/ 为应用程序的效劳容器中可用的类供应了一个「静态」接口。Laravel 自带了很多的 facades,可以用来接见其险些一切的效劳。Laravel facades 就是效劳容器里那些基类的「静态代办」,比拟于传统的静态要领挪用,facades 在供应更简约且雄厚的语法的同时,另有更好的可测试性和扩展性。

本文一最先讲到 alias 数组定义了一个 File,细致的类是

Illuminate\Support\Facades\File::class,

它的内容是:

class File extends Facade
{
    /**
     * Get the registered name of the component.
     *
     * @return string
     */
    protected static function getFacadeAccessor()
    {
        return 'files';
    }
}

它现实上返回了一个称号,注重这个称号 files,不就是方才绑定的单例情势的称号吗?没错。

如许一来,就可以运用 File 这个别号或者说门面,来挪用这个 Filesystem 实例中的要领了。

经由过程本文,愿望人人可以相识效劳供应者,Facade,和现实挪用的类的实例之间的关联。

更多Laravel相干技术文章,请接见Laravel框架入门教程栏目举行进修!

以上就是laravel门面与效劳供应者区分的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
laravel门面与效劳提供者区分【laravel框架】

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签: