PHP Namespace?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Namespace?

    Hi!

    Hab hier zwei Klassen <foo> und <bar>. beide klassen nutzen ihrerseits je eine Klasse mit dem Namen DB.class.php. <foo> bindet die DB-Klasse mit require_once("foo/DB.class.php") ein, <bar> mit require_once("bar/DB.class.php"). foo benötigt jedoch auch ein bar-Objekt, weshalb DB.class.php scheinbar doppelt eingebunden wird, zumindest erhalt ich folgende Meldung:
    Fatal error: Cannot redeclare class db in [snip]bar\DB.class.php on line 3
    Die Ordner-Struktur schaut wie folgt aus:
    + foo
    - foo.class.php
    - DB.class.php

    + bar
    - bar.class.php
    - DB.class.php

    Die beiden DB Klassen sind inhaltlich nicht ident, sondern haben nur den selben Namen. Sie liegen jedoch in unterschiedlichen Orndern, was beim require_once()-Befehl auch berücksichtigt wurde.

    foo braucht bar und ihre DB, bar braucht nur DB. Und irgendwie überschneiden sich diese Deklarationen.

    Kann mir bitte wer helfen?

  • #2
    Die beiden DB Klassen sind inhaltlich nicht ident, sondern haben nur den selben Namen.
    warum denn das? Wenns nicht die gleich sind, gehören auch unterschiedliche Namen!!!

    PHP interessiert es NULL, woher die Daten kommen. Sobald die Requires durchgeführt wurden, sieht es für den inerpreter as, als wäre es einen datei.

    Kommentar


    • #3
      warum denn das? Wenns nicht die gleich sind, gehören auch unterschiedliche Namen!!!
      weil ich einen einheitlichen stil möchte. der persistenzlayer jedes bausteins meines projektes hat nun mal den namen DB.class.php bzw. ich möchte den namen so haben.

      die klassen befinden sich in unterschiedlichen ordnern. wenn ich den pfad angebe, möchte man annehmen, dass das objekt mit der klasse im angegebenen pfad erzeugt wird und nicht eine andere klasse genommen wird, die irgendwo im include-path herumgeistert.

      gibts denn da gar nichts?

      Kommentar


      • #4
        der dateiname interessiert einen sch*ß. hast du schonmal versucht zwei funktionen "testfunction" zu definieren? Geht auch nicht!

        Es gibt nunmal sachen, die müssen Eindeutig sein! Woher sollte deine Klasse bitte wissen, welche DB-Class du ansprichst?

        die klassen befinden sich in unterschiedlichen ordnern. wenn ich den pfad angebe, möchte man annehmen, dass das objekt mit der klasse im angegebenen pfad erzeugt wird und nicht eine andere klasse genommen wird, die irgendwo im include-path herumgeistert
        Jetzt sag bitte nicht, dass du diesen Schates mit deinem logischen denken vereinbaren kannst!

        Kommentar


        • #5
          wenn wir die fäkalausdrücke und sonstige entgleisungen mal beiseitelegen könnten, bitte...

          gibt es eine möglichkeit interfaces zu erzeugen, wie z.b. in java?

          Kommentar


          • #6
            so, ich habs. danke für den hinweis (bin etwas java-geschädigt zugegeben).

            Kommentar

            Lädt...
            X