PHP Как создать экземпляр внутреннего класса

У меня есть класс под названием 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) или "$"

Что я делаю неправильно?


person Lakey    schedule 16.12.2013    source источник
comment
Сообщение об ошибке не относится к коду, который вы разместили.   -  person    schedule 16.12.2013
comment
Да, извините, я пытался анонимизировать пример. Первоначальные имена классов имели другое имя. Я просто отредактировал это, чтобы исправить.   -  person Lakey    schedule 16.12.2013


Ответы (2)


Если вы пытаетесь использовать внутренний класс в качестве пространства имен, просто используйте пространства имен. Бывший:

<?php
namespace Pages;
class Page { }

Затем вы можете получить доступ к классу через:

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

http://php.net/namespaces

person Devon    schedule 16.12.2013
comment
Идеально! Как раз то, что я хочу сделать. - person Lakey; 16.12.2013

К сожалению, вложенные классы не являются языковой функцией PHP.

На приведенной ниже странице SO это подробно объясняется.

Вложенный или внутренний класс в PHP

person robbmj    schedule 16.12.2013