Einzelnen Beitrag anzeigen
  #2 (permalink)  
Alt 05-05-2010, 12:55
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

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
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten