Laravel 5.4 中不允许使用 namespace() 启动路由分组吗? [复制]

2024-04-25

使用 Laravel 5.4,确实在有关路由分组的文档中,并且给出了一个示例命名空间 https://laravel.com/docs/5.4/routing#route-group-namespaces:

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
});

Yet, 这是 Laravel 中的错误还是我不怀疑是我的代码中的问题?.

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

更新:正如@Adweb建议的,可以使用group(['namespace' => 'Admin'])...但我真的仍然热衷于根据我得到的错误可能是什么问题.

这是我的 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

简而言之,这是一个 PHP 问题,并且是 Laravel 的一个没有详细记录的东西(这只能在 PHP 7 中工作,但不能在 5.x 中工作)。你这边不是问题,放心吧~


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

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

以下关键字现已保留,不得在 函数、类等名称。

  • goto
  • 名称空间

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

(至于为什么Route::prefix('')->namespace('Admin')有效,这可能是 PHP 解析器的问题,但一般来说 PHP 5.x 被设计为不支持这种方法命名)


该代码实际上从 PHP 7 开始就运行良好。根据http://php.net/manual/en/reserved.keywords.php http://php.net/manual/en/reserved.keywords.php:

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

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

命名空间就是这些关键字之一。从 PHP 7 开始,它们可以用作方法名称。所以如果你真的想使用Laravel的这种方法,你需要升级到PHP 7。

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

希望这能解决您的担忧。 ^_^

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 5.4 中不允许使用 namespace() 启动路由分组吗? [复制] 的相关文章

  • Codeigniter 中的 HTML 格式的电子邮件

    如何在 codeigniter 中发送格式化的电子邮件 我有这段代码 可以很好地发送电子邮件 但它没有按应有的方式格式化它 您可以看到显示收到电子邮件的图片 function email sender this gt load gt hel
  • 为什么 getcwd() 在 __destruct() 中返回 / ?

    我刚刚注意到 如果在 destruct 魔术函数中调用 getcwd 返回 而在任何其他方法中它返回预期路径 你对此有解释吗 这是一种 SAPI 行为 脚本关闭期间调用的析构函数已发送 HTTP 标头 脚本关闭阶段的工作目录可能与某些 SA
  • 在php中声明一个对象数组

    如何将 php 中的对象列表声明为私有实例变量 在 Java 中 声明看起来像这样private ArrayList ls构造函数会有这个ls new ArrayList Thanks PHP 动态分配内存 而且它并不关心您在数组中存储什么
  • 如何在WAMPServer中启用或安装PHP的mysql_xdevapi扩展来安装数据表?

    我想在 laravel 中安装 DataTable 我使用了 WAMPServer 和我的 PHP version is 7 3 5 Mysql version 5 7 26 我按照互联网上的许多步骤操作 例如从 pecl php net
  • 如何在MySQL中使用数字字符串的比较运算符?

    我有一个员工表 有类似领域的经验VARCHAR类型 此字段结合了用短划线 分隔的总年份和总月份 因此我必须按年份过滤具有 3 年以上经验的经验 我的表结构 所以现在我必须获得3年以上经验的id 我尝试如下 SELECT FROM emplo
  • 如何更新 mongodb PHP 中的所有文档

    我正在设置一个 cronjob 来更新该字段views 15关于集合中的所有文档query 这就是我所拥有的 应该有效 update array set gt array views 15 gt 0 db gt queries gt upd
  • 从中间部分匹配完成建议elasticsearch

    我有一个名为搜索建议具有以下 search suggest type completion analyzer simple payloads true preserve separators false preserve position
  • 在不运行控制台命令的情况下清理缓存的最佳方法是什么?

    在我的项目的管理面板中 我编写了更改要使用的数据库名称的功能 我把新的数据库名称写在parameters ini 之后必须清理缓存才能加载新配置 在不运行控制台命令的情况下清理缓存的最佳方法是什么 或者是否有另一种最佳实践如何更改当前数据库
  • 使用 PHP 将图像中的一种颜色替换为另一种颜色

    有人可以帮我编写一个简单的脚本 使用 PHP 将图像中的特定颜色替换为另一种颜色吗 这是一个示例 颜色从绿色变为黄色 如果你的意思是在 PHP 中使用 GD 库 你应该检查一下图像过滤器 http php net manual en fun
  • 推进并离开加入

    在教义中我可以 q Doctrine Query create gt from One o gt where t text aaa gt andWhere h text bbb gt leftJoin o Two t gt leftJoin
  • 如何在 PHP 中复制此 C# 哈希? (toByteArray()、ComputeHash())

    我正在尝试复制以下代码PHP 这是我必须与之交互的 API 的示例代码 API 和示例代码位于C 我的应用程序在PHP 5 3 我不是 C 开发人员 因此在执行此操作时遇到困难 C Code I am trying to replicate
  • PHP 设计模式

    好的 我想首先让您注意到我一直在寻找 php mvc 设计模式 所以我还没有真正找到我想要的东西 现在 在写我的问题时 我找不到我要问的任何相关且具体的问题 但我知道我可能是错的 无论如何考虑这个问题和一个可能有用的问题包 Question
  • Lucene外来字符问题

    我在使用 Zend Lucene 和 等外来字符时遇到了一些严重的问题 这些问题在创建索引和查询索引时都会出现 我已经尝试过 iso 8859 1 和 utf 8 ISO 8859 1 不起作用的查询看起来像 area sk ne 使用 Z
  • 如何安装 php 5.3.14 ubuntu 12.10

    我必须在我的 ubuntu 12 10 上安装这个特定版本才能与提供商保持兼容 我可以使用 synaptic 轻松安装 php 5 3 10 但无法升级到 5 3 14 我怎样才能做到这一点 apt get 不起作用 我在网上看到了几个教程
  • 解析日期字符串

    我在 post 变量中有这个字符串 03 21 2011 我需要通过php解析它并将其转换成这种格式 2011 03 21 我正在使用 php 我需要这种格式 以便我可以运行此查询 SELECT prospect as Prospect c
  • PHP/Web 脚本保护

    我想用 PHP 和 javascript 编写一个脚本 并以某种方式保护我的源代码 以便我可以出售我的脚本 我正在寻找如何保护我的脚本的想法 如果我将其出售给某人 我如何阻止该人将其作为他们的产品重新分发 我知道有ZEND和ionCube
  • 在单个测试中断言多个条件,还是分成多个测试? [复制]

    这个问题在这里已经有答案了 如果您正在测试如下所示的计数函数 那么在一个函数中测试该函数的多项内容与为每个测试使用一个测试函数相比 是否被认为是 正确 或 错误 function testGetKeywordCount tester thi
  • PHP 中的 is_callable 和 function_exists 到底有什么区别?

    我正在开发一个项目 在该项目中我使用了旧版本中已弃用的函数 但不希望我的脚本在旧版本中使用时停止 所以我检查该函数是否存在 如果不存在则创建它 有什么区别function exists and is callablePHP 中哪个更好用 i
  • Jquery UI:日期选择器。如何通过 $_GET 在日期选择器中设置日期

    我找不到如何设置 GET 变量来手动设置日期选择器中的日期 http jqueryui com demos datepicker http jqueryui com demos datepicker 例子 那可能吗 Thanks 在此使用
  • mysql 查询从给定的表结构创建 SEO 友好的 url

    我正在尝试使用下表创建 SEO 友好的 URL 类别表 http sqlfiddle com 2 c474a 4 页表 http sqlfiddle com 2 c474a 5 我正在尝试编写一个 mysql 查询 该查询将使用产生以下输出

随机推荐