Jürgen: globale class?

Hallo

ich habe eine php class in einer eigenen Datei ausgelagert.
In meiner Anwendung includiere ich diese Datei dann einmal. Wenn ich nun Funktionen aus weiteren Dateien aufrufe, übergebe ich der Funktion das Objekt dann immer als Parameter. Natürlich könnte ich die class auch in jeder Datei includen, hätte dann aber immer eine neue instanz vom Objekt.(?)
Kann man das Objekt auch global setzten damit man dann in jeder Datei darauf zugreifen kann?

Jürgen Kohlhase

  1. Hi!

    Kann man das Objekt auch global setzten damit man dann in jeder Datei darauf zugreifen kann?

    Ein Objekt ist eine Variable wie jede andere auch. Mit dem Schlüsselwort global kann man globale Variablen in Funktionen bekanntgeben.

    Besser ist es aber, auf die Möglichkeiten der OOP zurückzugreifen, beispielsweise das Singleton-Pattern.

    Lo!

    1. Besser ist es aber, auf die Möglichkeiten der OOP zurückzugreifen, beispielsweise das Singleton-Pattern.

      Aber dann ist das Objekt doch nicht automatisch in allen Dateien benutzbar, oder? Das wollte ich eigentlich.
      Sorry für meine Inkompetenz :-)

      1. Hi!

        Besser ist es aber, auf die Möglichkeiten der OOP zurückzugreifen, beispielsweise das Singleton-Pattern.
        Aber dann ist das Objekt doch nicht automatisch in allen Dateien benutzbar, oder? Das wollte ich eigentlich.

        Dann brauchst du das __autoload()-Feature. Allerdings muss das dann "in allen Dateien" verfügbar sein. auto_prepend_file wäre eine Konfigurationsmöglichkeit, um vor dem Scriptstart generell eine PHP-Datei einzubinden. Doch das ist nicht überall verwendbar. Jedenfalls wäre es dann egal, ob du darin die Klasse deklarierst oder die __autoload()-Funktion.

        Lo!

        1. Jedenfalls wäre es dann egal, ob du darin die Klasse deklarierst oder die __autoload()-Funktion.

          Wäre es denn "besser" wenn ich das Objekt in den Parametern des Funktionsaufrufes mitgebe: abc($myObj);
          Oder wenn ich innerhalb der Funktion das Objekt mit global hole: global $myObj;? (Funktion ist in separater php-Datei)

          1. Hi!

            Jedenfalls wäre es dann egal, ob du darin die Klasse deklarierst oder die __autoload()-Funktion.

            Wäre es denn "besser" wenn ich das Objekt in den Parametern des Funktionsaufrufes mitgebe: abc($myObj);
            Oder wenn ich innerhalb der Funktion das Objekt mit global hole: global $myObj;? (Funktion ist in separater php-Datei)

            Es kommt immer darauf an, was man konkret vorhat. Mal ist das eine besser, mal das andere. Jedenfalls würde ich auf das global verzichten und stattdessen das Singleton-Pattern verwenden. Ob es sinnvoller ist, eine Objektinstanz in einer globalen Variable rumliegen zu haben, die jeder (aus Versehen oder mit Absicht) überschreiben kann, oder aber einen Zugriffsmechanismus à la Singleton zu implementieren, musst du selbst entscheiden.

            Lo!