首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel 底层原理:门面(Facades)

Laravel 的所有门面都定义在 Illuminate\Support\Facades 命名空间下。...但是,因为 Facades 使用动态方法来代理从服务容器解析的对象的方法调用,我们可以像测试注入的类实例一样来测试 Facades。...::get('key'); }) 我们可以这样编写测试来验证 Cache::get 方法以我们期望的方式被调用: use Illuminate\Support\Facades\Cache; /** *...因此,尽管我们使用的是辅助函数,我们依然可以编写以下测试来验证该方法是否使用我们预期的参数来调用: use Illuminate\Support\Facades\Cache; /** * 一个基础功能的测试用例...不管是 Laravel 自带的 Facades,还是用户自定义的 Facades ,都继承自 Illuminate\Support\Facades\Facade 类。

1.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    3分钟短文 | Laravel 灵活地获取当前请求的路由地址

    的版本升级, 以及框架的改良,实现同一功能的方法也越来越灵活。...首先我们仍然可以通过 Route 对象的方法访问,代码写起来像下面这样: Route::getCurrentRoute()->getPath(); 因为Route对象属于请求阶段,而框架将其关联到了 Request...对象上,所以也可以下面这样链式调用: Request::route()->getName(); 在 Laravel 5.1 内这样写: use Illuminate\Support\Facades\Route...;$currentPath= Route::getFacadeRoot()->current()->uri(); Laravel 5.2 使用门面实现: use Illuminate\Support\Facades...->path(); 如果仅仅是 uri 的字符串,则使用 $url = $request->url(); 如果要筛选特定字符串匹配的路由地址,可以使用 is 方法进行匹配验证: if ($request

    1.4K20

    Laravel 底层原理:门面(Facades)

    Laravel 的所有门面都定义在 Illuminate\Support\Facades 命名空间下。...但是,因为 Facades 使用动态方法来代理从服务容器解析的对象的方法调用,我们可以像测试注入的类实例一样来测试 Facades。...::get('key'); }) 我们可以这样编写测试来验证 Cache::get 方法以我们期望的方式被调用: use Illuminate\Support\Facades\Cache; /** *...因此,尽管我们使用的是辅助函数,我们依然可以编写以下测试来验证该方法是否使用我们预期的参数来调用: use Illuminate\Support\Facades\Cache; /** * 一个基础功能的测试用例...不管是 Laravel 自带的 Facades,还是用户自定义的 Facades ,都继承自 Illuminate\Support\Facades\Facade 类。

    1.1K20

    PHP-Laravel控制器使用(C)

    4、控制器路由(项目以该方式为主) 即,如何使用路由规则调用控制器下的方法,而不再走回调函数。...5、接收用户输入【重点】 接收用户输入的类:Illuminate\Support\Facades\Input Facades:“门面”的思想。门面是介于一个类的实例化与没有实例化中间的一个状态。...其实是类的一个接口实现。在这个状态下可以不实例化类但是可以调用类中的方法。说白了就是静态方法的调用。...在laravel中如果需要使用facades的话,但是又不想写那么长的引入操作: Use Illuminate\Support\Facades\Input 则可以在config/app.php中定义长串的别名...在Laravel中除了Input类可以获取用户的输入,Request也可以获取用户输入。

    1.4K10

    Laravel核心概念:服务容器(ServiceContainer),服务提供者(Service Provider),门面(Facade),契约(Contracts)

    ,register会在laravel启动时调用,因此我们要在register中注册各种服务,boot方法会在所有服务提供者的register方法都走完时执行,因此可以在boot方法中实现类的依赖注入。...\Illuminate\Contracts\Support\DeferrableProvider 接口并设置provides 方法。...,而传统的方式我们调用一个类需要先引入一个长长的类名 在new在进行调用,比较麻烦而门面则相当于静态方法直接使用即可,这些能够直接使用的类称之为门面类,但是门面类不易使用过多这个手册上有明确说明。...\Connections\Connection redis.connection Request Illuminate\Http\Request request Response Illuminate\...我们可以在use类前加Facades 这样我们就可以像使用Facades类那样调用各种类方法不用实例化。

    2.8K31

    Laravel8的迁移压缩、任务批处理、速率限制优化 | 文末抽奖

    当然,批处理主要是和回调结合使用的。所以,你可能需要使用 then,catch,finally 方法来定义完整的回调。...这三种回调任意一个被调用时都会接收到一个 Illuminate\Bus\Batch 实例: use App\Jobs\ProcessPodcast; use App\Podcast; use Illuminate...\Bus\Batch; use Illuminate\Support\Facades\Batch; use Throwable; $batch = Bus::batch([ new ProcessPodcast...使用 RateLimiter facade 的 for 方法来定义一个速率限制器。for 方法第一个参数是速率限制器名称,第二个参数是一个闭包函数,该闭包函数返回速率限制器的配置。...use Illuminate\Cache\RateLimiting\Limit; use Illuminate\Support\Facades\RateLimiter; RateLimiter::for

    1.9K21
    领券