Laravel:View :: share()和View :: composer()之间的区别

enc*_*nce 8 php view laravel

关于传递默认变量进行查看的问题,要传递所有视图中可用的变量,使用以下内容之间是否存在技术或功能差异View::composer():

View::composer('*', function($view) {
    $thundercats = 'Woooooohh!!';
    $view->with('thundercats', $thundercats);
})
Run Code Online (Sandbox Code Playgroud)

filters.php文件或使用View::share()BaseController.php文件:

public function __construct {
    $thundercats = 'Woooooohh!!';
    View::share('thundercats', $thundercats);
}
Run Code Online (Sandbox Code Playgroud)

View::share()虽然我已经开始在另一个项目中使用前者,但我最近才知道并发现它非常有侵略性.

编辑:

我的第一个假设是前者是一个文件(filters.php),而后者是一个类(BaseController.php).考虑到这一点,我猜一个班级好多了?虽然,我现在还不太清楚为什么.:)

tpl*_*ner 18

从技术上讲,它们完全没有相似之处.View::share只是设置一个变量,View::composer而是一个回调函数.

让我更详细地解释一下:

View::share 非常简单,它设置了一个可以在任何视图中使用的变量,将其视为全局变量.

View::composer注册在呈现视图时调用的事件,不要将它与View::creator实例化视图时触发的事件混淆.

View::composer/ View::creator可以用作一个记录良好的类.

虽然这些使您能够将其他数据传递给视图,但它们还使您能够执行许多其他操作,例如,他们可以:

  • 帮助调试视图
  • 记录有关视图的信息
  • 用于创建自定义缓存(可能不是一个好主意,但可能)

这些只是什么一些例子可以是可能的使用View::composerView::creator.