【问题标题】:PHP Arrays, Can I define my own Array class?PHP Arrays,我可以定义自己的 Array 类吗?
【发布时间】:2012-02-27 02:25:48
【问题描述】:

我可以看到在 PHP 5.3.2 中有一个 ArrayObject 类。是否可以声明一个名为 Array 的新对象

扩展了 ArrayObject。但我不确定 'Array' 是否是保留关键字,或者我应该使用自己的前缀,即 XArray()、MyArray 等...

我想要的是

class Array extends ArrayObject {

...my own code

}

【问题讨论】:

标签: php arrays class object


【解决方案1】:

我不确定 'Array' 是否是保留关键字

这很容易检查。 PHP's list of reserved keywords 在前面和中间列出了“array()”。

该页面还列出了以下指南:

您不能使用以下任何单词作为常量、类名、函数或方法名。将它们用作变量名通常是可以的,但可能会导致混淆。

所以不,你不能。您需要将您的类重命名为其他名称,并且您的名称不能仅区分大小写,因为 PHP 类名不区分大小写。

【讨论】:

  • 我知道关键字不区分大小写(因此在这里产生了问题),但是类名也区分大小写吗?
  • @Jasper 没错。有一个change request 要求区分大小写的类名,它的状态是“不会修复”。另见stackoverflow.com/questions/5260168/…
【解决方案2】:

如果它现在可以工作,那么他们将来可能会创建一个Array 类。最好不要使用明显符合语言定义的名称。

edit:正如 Matthew 指出的那样,它不起作用。看到他的回答让我意识到为什么它不起作用:array 是 php 中的关键字(允许您制作数组文字),而关键字在 php 中不区分大小写。

【讨论】:

  • 我认为在 PHP 中,“语言的逻辑”并不总是很明显......
  • 是的,确实如此,我试图查找是否有一个名为 Array 的类,但找不到。不确定为什么类 Array() 不起作用?
  • @KerrekSB 绝对不会总是这样。在这种情况下,我会说这很明显。
  • Kerrick.. 我喜欢 PHP 的可扩展性,但你说得对,一些语言结构非常独特。大声笑
  • @IEnumerable 忍者回答了你的问题。现在这就是我所说的技能:P
【解决方案3】:

您所要做的就是尝试运行:

<?php class Array {}

你会看到:

Parse error: syntax error, unexpected 'Array' 

所以答案是,不,你不能。您需要使用不同的名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 2011-02-20
    • 2012-07-31
    • 2023-02-15
    相关资源
    最近更新 更多