<?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-Horizon Controller中找到了这种语法,任何人都可以解释一下:
视图(&#39;地平线::应用&#39);
'horizon::app'
是什么意思?
答案 0 :(得分:3)
与所说的其他答案一样,这被称为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");
答案 1 :(得分:2)
::
是范围(命名空间)运算符。含义app
在horizon
内声明。
示例(来自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;
?>
答案 2 :(得分:2)
此语法表示名为app
的视图属于horizon
包。可以将其视为package::view.path
。
More info in Laravel's Package Development documentation.
要使用Laravel注册您的包的视图,您需要告诉Laravel视图所在的位置。
使用package :: view语法约定引用包视图。因此,一旦您的视图路径在服务提供商中注册,您就可以从快递包加载管理视图,如下所示:
Route::get('admin', function () {
return view('courier::admin');
});
如果您已经看过该术语或想要搜索其他内容,则此功能以前称为视图命名空间。 :)