您当前的位置: 首页 >  ar

知其黑、受其白

暂无认证

  • 3浏览

    0关注

    1250博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Laravel静态接口使用遇到的两种写法分析

知其黑、受其白 发布时间:2021-11-19 18:44:17 ,浏览量:3

阅读目录
  • 场景
  • 两种写法的区别

场景

use Illuminate\Support\Facades\Log;

第一种写法

public function xf()
{
    $data = User::get();
    foreach ($data as $item)
    {
        Log::channel('info')->info('user_id:'.$item['id']);
    }
}

第二种写法

public function xf()
{
    $data = User::get();
    $log = new Log();
    
    foreach ($data as $item)
    {
        $log::channel('info')->info('user_id:'.$item['id']);
    }
}
两种写法的区别

第一种写法 在auto_load的时候,只会加载一次类,不管怎么写,都是引用原来加载的内存。 所以第二种写法在foreach的时候不会每次都实例化。

laravel 绑定一个单例对象的时候则用下面的方式:

$app->singleton('test', \System\test::class);

facades 为应用程序的服务容器(service conatiner)中的基础类(service provider)提供了一个静态接口,它作为ioc容器(服务容器)中基础类的代理。

在Laravel中的应用 在laravel bootstrap/app.php文件中,可以看到几行类似如下的代码。 这就是在laravel的容器中注册了几个核心类的单例。 当然你也可以自己在 app/Providers 中写一个单例的服务。

$app->singleton(
    Illuminate\Contracts\Http\Kernel::class,
    App\Http\Kernel::class
);

第二种写法的好处 类赋值给了变量,当修改了类名后只需在一处修改无需处处修改。

关注
打赏
1665558895
查看更多评论
立即登录/注册

微信扫码登录

0.1552s