Hallo,
ohne Namespaces wird ein Skript, wenn es mit (include|require)(_once)? geladen wird, abgearbeitet und alle enthaltenen Definitionen (Klassen, Interfaces, Konstanten, ...) werden in den aktuellen Scope (meist der globale) importiert. Namenskollisionen werden dabei von PHP mit einer Fehlermeldung quittiert. Es gibt also alles nur einmal und daher weiß PHP auch, welches Interface du meinst, denn beim Versuch ein gleichnamiges zu laden, würde PHP meckern, also gibt es auch nur eins mit diesem Namen.
Mit Namespaces ist es im Prinzip das gleiche. Jeder qualifizierende Name darf nur höchstens einmal verwendet werden, da er aber aus mehreren Teilen aufgebaut ist, können einzelne davon gleich sein, wenn andere verschieden sind:
PHP-Code:
foo|bar|Example
foo|xyz|Example
(| steht für \)
Für PHP ist das intern nichts anderes als das, was man vor der v. 5.3 gemacht hat:
PHP-Code:
foo_bar_Example
foo_xyz_Example
Gruß,
Amica