【问题标题】:How to define a class with same name as built-in function?如何定义与内置函数同名的类?
【发布时间】:2011-11-30 13:02:11
【问题描述】:

我想像这样定义一个名为“List”的类:

class List
{
}

PHP 在类定义文件中给出以下错误:“Parse error: syntax error, unexpected T_LIST, expecting T_STRING”

显然有一个名为“list()”的 php 内置函数,即使该行以关键字 class

开头,解析器也在此处读取它而不是我的类定义

由于我不在项目中的任何地方使用内置函数,我想“删除/禁用”它,所以我可以使用名为“List”的类。

这在 php 中是否可行?如何实现?

【问题讨论】:

  • 我认为这是不可能的,如果可以的话,我不会覆盖该功能(或其他任何功能)。我敢打赌,由于 list 是一个通用名称,您可以轻松找到更好的名称。 ;)

标签: php php-5.3


【解决方案1】:

list 是保留字,因为它是一种语言结构(实际上不是函数),所以不,您不能禁用它。尝试更具体地使用您的班级名称,例如 ObjectListAbstractList

【讨论】:

  • 不是我希望的答案,但可能是正确的做法。 :) 我将其命名为“Collection”,它具有相同的目的。我追求的是“通用列表”类型的对象。
  • 那为什么不用class GenericList呢?我猜Collection 也有效。
  • 仅供参考:在命名空间中定义类也不起作用,因为它是一个解析的东西。您也不能将您的方法命名为list。幸运的是,您可以将变量命名为 $list =) 我不确定常量...
  • 我遇到了同样的问题。因为保留字是 'list' 而不是 'List' 我希望名称 'List' 是一个有效的类名。
  • @Kwebble 类名(除其他外)在 PHP 中不区分大小写,因此 List 作为类名与 list 相同。
【解决方案2】:

类名可以是任何非 PHP 保留的有效标签 词。

List of PHP reserved wordslist 就是其中之一。

【讨论】:

    猜你喜欢
    • 2017-12-31
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多