当前位置: 首页 > 知识库问答 >
问题:

Laravel 5.4中不允许使用名称空间()开始路由分组吗?[重复]

田德运
2023-03-14

使用Laravel 5.4,实际上在关于路由分组的文档中,给出了一个关于命名空间的例子:

Route::namespace('Admin')->group(function () {
   // Controllers Within The "App\Http\Controllers\Admin" Namespace
});

根据文档,这是可以的,但是在安装Laravel 5.4.30之后,我发现执行上述操作会引发以下错误:

PHP Parse error:  syntax error, unexpected 'namespace' (T_NAMESPACE) in /Applications/MAMP/htdocs/my_app/routes/web.php on line

尽管我在使用其他路由方法之前做了一个变通方法,例如:

Route::prefix('')->namespace('Admin')->group(function () {
   // Controllers Within The "App\Http\Controllers\Admin" Namespace
});

然而,这是 Laravel 中的错误还是我没有怀疑是我的代码中的问题?

如果有需要提供更多解释,我很乐意这样做。

更新:正如@Adweb所建议的,可以使用group(['namesspace'=

这是我的PHP版本:

PHP 5.6.30 (cli) (built: Mar 11 2017 09:56:27) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

共有3个答案

邰宇
2023-03-14
Route::group([ 'prefix' => 'admin','namespace' => 'Admin','middleware' =>'admin'], function () {
// Controllers Within The "App\Http\Controllers\Admin" Namespace
});
方航
2023-03-14

我想你可以试试这个:

Route::group(['namespace' => 'Admin', 'prefix' => 'admin', 'middleware' => 'admin'], function () {

});

希望这对你有用!!!

裴育
2023-03-14

简而言之,就是PHP的问题,也是Laravel一个没有很好记录的东西(这个只能在PHP 7中工作,不能在5.x中工作)。你那边不是问题,放松~

从PHP 5.3开始,添加了命名空间,因此不能用作函数名称。

根据http://docs.php.net/manual/en/migration53.incompatible.php:

以下关键字现已保留,不能用于函数、类等名称中。

  • 转到
  • 命名空间

有关PHP中命名空间关键字的更多信息,请查看http://php.net/manual/en/language.namespaces.nsconstants.php.

(至于为什么路由::p refix('')-

该代码实际上自PHP7以来运行良好http://php.net/manual/en/reserved.keywords.php:

这些词在PHP中有特殊的含义。它们中的一些代表看起来像函数的东西,一些看起来像常量,等等——但它们实际上不是:它们是语言结构。您不能使用以下任何单词作为常量、类名、函数或方法名称。使用它们作为变量名通常是可以的,但可能会导致混淆。

从PHP 7.0.0开始,这些关键字被允许作为类、接口和特征的属性、常量和方法名,只是类不能用作常量名。

命名空间是其中一个关键字。从PHP7开始,它们可以用作方法名。所以如果你真的想使用Laravel的这种方法,你需要升级到PHP7。

或者,您可以使用其他方式来使用此功能,而无需使用命名空间方法,如您的问题和其他答案中所述。

希望这能解决你的顾虑。^_^

 类似资料:
  • 问题内容: 我正在看http://docs.jquery.com/Plugins/Authoring#Defaults_and_Options为jQuery创建一个简单的插件。在有关选项和设置的部分之后,我执行了以下操作,该操作不起作用(脚本遇到设置后退出)。 一旦我从背景色中删除了破折号,一切就可以正常工作。 我是否缺少某些内容,或者jQuery文档是否错误? 问题答案: 没有。解析器会将其解释

  • 问题内容: 我有下面的代码,单击一个元素以弹出一个屏幕并在其中复制文本 但是,当我尝试单击该弹出窗口中的按钮时, 它产生一条错误消息: 这是我要单击的HTML 。该按钮。 我应该怎么写才能单击关闭按钮? 问题答案: Leon的评论提出了正确的信息,即不再支持复合类名称。相反,您可以尝试使用CSS选择器。就您而言,以下代码行应帮助您获取所需的元素: 它在class属性中找到具有所有三个类(actio

  • 我有下面的代码,点击一个元素弹出一个屏幕并复制其中的文本 我应该如何编写以便单击关闭按钮?

  • 我在 Openshift Online v3 入门计划上部署了一个应用程序,该应用程序(过去)运行良好,直到昨天。昨天我不得不发布我的应用程序的新版本。显然,该平台在重新部署它时遇到了一些问题,我不得不取消一些似乎锁定或不断重启的进程。最后,我设法让我的 pod 使用新版本运行,日志看起来很好。 现在的问题是我的应用程序不再暴露。当点击分配给我的URL时,我得到了臭名昭著的“不可用”OO页面: 我

  • 我试图获取具有特定类名的所有元素: 然而我得到的错误是: 我知道类名中不允许有空格,但是我该怎么办呢? 谢啦

  • 我只是用MVVM轻型工具包编写一些培训窗口项目。当MVVM Light引用添加到项目中时,下面的资源被自动添加到app.xml中 不幸的是,它不起作用,即由于以下错误,无法构建/编译项目: 我找到了几种针对此问题的常见解决方案(例如:更改解决方案平台、清理、重建、重新启动Visual Studio等),但它们并没有改变什么。创建一个新项目也没有帮助。 有没有其他办法让它起作用?我使用Visual