【问题标题】:Using the word "array" in a "use" statement in PHP在 PHP 的“use”语句中使用单词“array”
【发布时间】:2016-02-10 18:58:31
【问题描述】:

我有以下几点:

use Twig\Loader\Array as Twig_Loader_Array;

我希望在我的自定义框架中使用 TWIG,而我的自动加载器还不够聪明,无法加载树枝的东西,所以我必须帮助它。

唯一的问题是,上面的行吐了出来:

Parse error: syntax error, unexpected 'Array' (T_ARRAY), expecting identifier (T_STRING) in... 

呃……什么?

是不是真的以为...\Array位是在尝试创建数组???

我该如何解决这个问题?我不能更改文件夹名称,因为如果我这样做,我会折断树枝。

【问题讨论】:

  • 为什么不呢?数组的关键字:php.net/manual/en/reserved.keywords.php 如果将其命名为“Echo”或“For”,您将获得相同的效果。
  • 在那个列表中,array() 是一个关键字,而不是 Array……我想你是对的……我放弃了!
  • 你可以使用不同的别名吗?
  • 正如我所说,实际文件夹称为“Array”,我的自动加载器使用它来查找类...
  • From: kornel.ski/phpns '命名空间名称不是 PHP 解析器中的记号(\ 是分隔记号),这意味着使用保留字作为命名空间“路径”的任何部分都是解析错误。'

标签: php arrays symfony


【解决方案1】:

您不能将保留关键字用作命名空间的一部分。

另外,arrayArray 没有区别。 PHP 的关键字不区分大小写(条件、方法名、类名等)。

PHP reserved words as namespaces and class names

另外,Twig_Loader_Array 没有任何命名空间。
你唯一需要做的就是像new \Twig_Loader_Array(/* ... */)一样使用它

欲了解更多信息,请参阅Twig API

要解决此问题,只需使用 composer 管理您的供应商并在您的 composer.jsonautoload 部分注册您的应用程序。

例子:

// composer.json

// ...

"autoload": {
    "psr-0": {
        "YourNamespace\\YourLib": "src/"
    }
},

// ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多