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

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

Родитель:

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, используемый Base / Section, является просто абстрактным классом, который содержит магические методы (__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

Любая идея ?

24
задан Lightness Races with Monica 6 July 2011 в 08:50
поделиться

2 ответа

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

namespace Base2;

class Section 
    extends \Base\Section {
}

Или псевдонимы

namespace Base2;
use \Base\Section as BSection;

class Section 
    extends BSection {
}
44
ответ дан 28 November 2019 в 22:59
поделиться

когда вы говорите

use \Base\Section

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

11
ответ дан 28 November 2019 в 22:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: