Подтвердить что ты не робот

Расширение класса с другим пространством имен с тем же классом

Я пытаюсь использовать пространства имен. Я хочу расширить класс внутри другого пространства имен. Имя класса одинаково. Пример:

Родитель:

namespace Base;

class Section extends Skeleton {

protected $id;

protected $title;

protected $stylesheet;
}

Ребенок:

namespace Base2;
use \Base\Section;

class Section 
    extends \Base\Section {

}

Это приложение, которое использует Doctrine 2 и Zend Framework. Класс Skeleton, используемый базой/разделом, является абстрактным классом, который содержит магические методы (__get, _set и т.д.).

Когда я пытаюсь создать экземпляр класса \Base2\Section, он выдает ошибку:

Fatal error: Cannot declare class Base2\Section because the name is 
already in use in /var/www/test/application/Models/Base2/Section.php 
on line 7

Любая идея?

4b9b3361

Ответ 1

Просто используйте полное имя

namespace Base2;

class Section 
    extends \Base\Section {
}

Или сглаживание

namespace Base2;
use \Base\Section as BSection;

class Section 
    extends BSection {
}

Ответ 2

когда вы скажете

use \Base\Section

вы вытягиваете класс раздела в свою текущую область действия, вызывая конфликт, когда вы хотите создать новый класс под названием Section. просто опустите оператор использования.