【问题标题】:PHP How to instance an inner classPHP如何实例化一个内部类
【发布时间】:2014-01-03 07:43:26
【问题描述】:

我有一个名为 Pages 的类用作命名空间,如下所示:

<?php

static class Pages
{
    class Page
    {
        public $Name;
        public $Title;

        public function __construct($Name, $Title)
        {
            $this->Name = $Name;
            $this->Title = $Title;
        }
    }
}

?>

其他地方:

<?php

$g_Pages = new Pages::Page("My Name", "My Title");

?>

很遗憾,我收到了 Parse 错误:语法错误,意外的“页面”(T_STRING),期望变量(T_VARIABLE)或“$”

我做错了什么?

【问题讨论】:

  • 错误消息似乎与您发布的代码无关。
  • 是的,对不起,我试图匿名化这个例子。原来的类名有不同的名字。我刚刚对其进行了编辑以修复。

标签: php namespaces nested-class


【解决方案1】:

如果您尝试将内部类用作命名空间,只需使用命名空间即可。例如:

<?php
namespace Pages;
class Page { }

然后你可以通过以下方式访问该类:

$g_Pages = new \Pages\Page("My Name", "My Title");

http://php.net/namespaces

【讨论】:

  • 完美!正是我想做的。
【解决方案2】:

不幸的是,嵌套类不是 PHP 的语言特性。

下面的 SO 页面详细解释了这一点。

Nested or Inner Class in PHP

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 2017-06-09
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    相关资源
    最近更新 更多