laravel语法'::'查看函数含义

laravel syntax '::' at view function meaning

<?php
namespace Laravel\Horizon\Http\Controllers;

class HomeController extends Controller
{
      /**
      * Single page application catch-all route.
      * @return \Illuminate\Http\Response
      */
      public function index()
      {
         return view('horizon::app'); // what's the meaning of this 'horizon::app'
      }
}

我在 Laravel-Horizo​​n Controller 中找到了这个语法,谁能解释一下:

view('horizon::app');

'horizon::app'是什么意思?

:: 是作用域(命名空间)运算符。意思是 apphorizon 内声明。

示例(来自 php.net):

<?php
class MyClass {
    const CONST_VALUE = 'Un valor constante';
}

$classname = 'MyClass';
echo $classname::CONST_VALUE; // A partir de PHP 5.3.0

echo MyClass::CONST_VALUE;
?>

此语法表示名为 app 的视图属于 horizon 包。将其视为 package::view.path.

More info in Laravel's Package Development documentation.

To register your package's views with Laravel, you need to tell Laravel where the views are located.

Package views are referenced using the package::view syntax convention. So, once your view path is registered in a service provider, you may load the admin view from the courier package like so:

Route::get('admin', function () {
    return view('courier::admin');
});

此功能过去称为视图命名空间,如果您已经看到该术语或想要搜索其他内容。 :)

如其他答案所述,即 view namespaces。它不限于包的视图,但您也可以在您的项目中使用它。

例如,您可能有管理和客户模块,并希望通过它们自己的文件夹名称来区分它们的视图,此时您可以使用命名空间声明。例如,您可能具有以下文件夹结构:

|- resources
   |- views
      |- admin
         |- index.blade.php 
      |- customer
         |- index.blade.php  

然后您可以在 AppServiceProvider.php:

中注册指向该特定文件夹路径的您自己的命名空间
app('view')->addNamespace('admin', base_path() . '/resources/views/admin');

// or

app('view')->addNamespace('customer', base_path() . '/resources/views/customer');

稍后,在控制器的方法中,您可以使用以下方式引用它:

return view("admin::index"); 

// or

return view("customer::index");