Ich versuche Namespaces zu verwenden. Ich möchte eine Klasse in einem anderen Namespace erweitern. Der Name der Klasse ist derselbe. Beispiel:
Elternteil:
namespace Base;
class Section extends Skeleton {
protected $id;
protected $title;
protected $stylesheet;
}
Kind:
namespace Base2;
use \Base\Section;
class Section
extends \Base\Section {
}
Es ist eine Anwendung, die Doctrine 2 und Zend Framework verwendet. Die von Base/Section verwendete Skeleton-Klasse ist nur eine abstrakte Klasse, die die magischen Methoden (__get, _set usw.) enthält.
Wenn ich versuche, eine \Base2\Section-Klasse zu instanziieren, wird ein Fehler ausgegeben:
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
Irgendwelche Ideen?
Ist es nicht ein bisschen verwirrend, ein solches Namensschema zu haben?
– Vladislav Rastrusny
10. August 2010 um 13:56 Uhr
Ja, das ist es, aber es ist nicht das eigentliche Namensschema. Nur der Section-Teil ist real. Die Namensräume sind nur zufällig.
– René Terstegen
11. August 2010 um 6:53 Uhr
@Rene: Bist du sicher, dass sie es nicht sind? willkürlich?
– Leichtigkeitsrennen im Orbit
6. Juli 2011 um 8:50 Uhr