Eine Klasse in jeder Klasse verfügbar machen

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

  • Eine Klasse in jeder Klasse verfügbar machen

    Hi.

    Ich habe eine Klasse für Fehleranzeige entworfen.
    Wenn nun z.B. eine andere Klasse diese Fehleranzeigeklasse benutzen will,
    muss ich sie neu instanzieren
    PHP-Code:
    $noticeError = new FW_Notice("error"); 
    Kann ich diese deklaration irgendwie in jeder Datei verfügbar machen ohne Sie überall reinschreiben oder verlinken zu müssen?

    Danke

    EDIT:
    Vll. Global erreichbar machen ?
    Zuletzt geändert von phpMorpheus2; 21.10.2009, 19:51.

  • #2
    Redest du jetzt von der Deklaration der Klasse an sich, oder von der konkreten Instanz?


    Wenn du ersteres meinst, dann könnte autoloading dir weiterhelfen, und wenn du letzteres meinst, solltest du dich mit dem Singleton-Pattern beschäftigen.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Zitat von wahsaga Beitrag anzeigen
      Redest du jetzt von der Deklaration der Klasse an sich, oder von der konkreten Instanz?


      Wenn du ersteres meinst, dann könnte autoloading dir weiterhelfen, und wenn du letzteres meinst, solltest du dich mit dem Singleton-Pattern beschäftigen.
      Von der Instanz.
      Denn jeder Fehler wird in dieser Instanz gespeichert und gemeinsam ausgegeben.
      Es wäre so, als wenn ich in der index.php die Klasse instanziere und alle includeten Dateien könnten diese "gemeinsam" nutzen.

      Kann ich auf die Übergeordnete Ebene (auf die Index.php) und Ihrer instazierung zugreifen?

      Kommentar


      • #4
        Du suchst das Singleton-Pattern. Oder das Registry Pattern (das im Grunde auch nur ein Singleton Pattern ist). Oder du packst sowas in eine statische Klasse. Aber das müsstest du eigentlich alles schon längst wissen.
        [FONT="Helvetica"]twitter.com/unset[/FONT]

        Shitstorm Podcast – Wöchentliches Auskotzen

        Kommentar


        • #5
          Ich schaue mir das zendframework immer an bevor ich etwas größeres angehe.
          Jedoch haben zend das immer nur über die exceptions laufen welche zwar sowieso immer seperat für jede Klasse erstellt werden, aber nicht mein Problem lösen.

          Eine übergeordnete statische Klasse kann ich genausowenig ansteuern wie eine instanzierte Klasse, wenn man eine übergeordnete instanzierte Klasse ebend nicht ansteuern kann.

          EDIT:
          Und klar, ich könnte erben, aber dann müsste ich wieder coden.
          Ich dachte nur, vielleicht gibt es eine andere Lösung.

          Kommentar


          • #6
            Zitat von phpMorpheus2 Beitrag anzeigen
            Ich schaue mir das zendframework immer an bevor ich etwas größeres angehe.
            Jedoch haben zend das immer nur über die exceptions laufen welche zwar sowieso immer seperat für jede Klasse erstellt werden, aber nicht mein Problem lösen.

            Eine übergeordnete statische Klasse kann ich genausowenig ansteuern wie eine instanzierte Klasse, wenn man eine übergeordnete instanzierte Klasse ebend nicht ansteuern kann.
            Was hat das ZF über Exceptions laufen? Und was meinst du mit "übergeordnet"? Und warum solltest du etwas nicht "ansteuern" können? Eine statische Klasse –*wenn deklariert –*kannst du von überall ansprechen. Und die ist für solche Zwecke ideal …*oder eben Singleton –*wie schon erwähnt.
            [FONT="Helvetica"]twitter.com/unset[/FONT]

            Shitstorm Podcast – Wöchentliches Auskotzen

            Kommentar


            • #7
              Zitat von unset Beitrag anzeigen
              Was hat das ZF über Exceptions laufen?
              Eben die Fehleranzeige.
              Ich habe im zend keine seperate anzeigemöglichkeit gefunden welche versch. notizen empfangen kann und gemeinsam ausgibt.

              Zitat von unset Beitrag anzeigen
              Und was meinst du mit "übergeordnet"?
              Die index.php ist eine Ebene über den zu includenden Dateien.

              Zitat von unset Beitrag anzeigen
              Und warum solltest du etwas nicht "ansteuern" können? Eine statische Klasse –*wenn deklariert –*kannst du von überall ansprechen. Und die ist für solche Zwecke ideal …*oder eben Singleton –*wie schon erwähnt.
              Da werd ich doch gleich mal schaun.

              Kommentar


              • #8
                Zitat von phpMorpheus2 Beitrag anzeigen
                Eben die Fehleranzeige.
                Ich habe im zend keine seperate anzeigemöglichkeit gefunden welche versch. notizen empfangen kann und gemeinsam ausgibt.
                Es gibt zum Beispiel den Form Errors View Helper. Wenn der dir nicht reicht, könntest du dir auch einen View Helper mit weniger Handgriffen selbst bauen, der das was du machen willst, erledigt.

                Was du über Exceptions und FehlerMELDUNGEN erzählst ist natürlich Blödsinn. Das Handling von kaputten Daten, gescheiterten Transaktionen und sonstigen nicht erwünschten Effekten läuft –*und das macht man halt so –*über Exceptions. Dass die im Super-Ultra-Basic-Beispiel komplett als "Fehlermeldung" ausgegeben werden, ist nur eine erleichterung für den Entwickler. Auf Live-Systemen gibt man sowas natürlich nicht mehr aus.
                Zuletzt geändert von unset; 21.10.2009, 20:23.
                [FONT="Helvetica"]twitter.com/unset[/FONT]

                Shitstorm Podcast – Wöchentliches Auskotzen

                Kommentar


                • #9
                  Aha.
                  Ich kann aber doch nicht in einer statischen Klasse eine dynamische Variable speisen.
                  Oder?

                  Also ich meine, wenn ich eine klasse habe und eine statische methode aufrufe und einen wert übergebe, kann die klasse ja nicht die übergebenen Werte z.B. in eine Array speichern und per statischem methodenaufruf die mitlerweile gefüllte Array ausgeben.

                  Kommentar


                  • #10
                    Doch. Und eigentlich gilt auch: Versuch macht kluch –*Lieber ausprobieren statt anzunehmen und dann doof zu Fragen.
                    [FONT="Helvetica"]twitter.com/unset[/FONT]

                    Shitstorm Podcast – Wöchentliches Auskotzen

                    Kommentar


                    • #11
                      Natürlich probiere ich es auch aus bevor ich es behaupte.
                      Vll. mache ich etwas falsch

                      PHP-Code:
                      class FW_Notice
                      {
                          public 
                      $bla = array();

                          public static function 
                      add($key)
                          {
                              
                      self::$bla[] = $key;
                          }

                          public static function 
                      show()
                          {
                              
                      print_r($this->bla);
                          }


                      Kommentar


                      • #12
                        Na, dann lies mal die Fehlermeldungen, die dir um die Ohren gehauen werden!
                        [FONT="Helvetica"]twitter.com/unset[/FONT]

                        Shitstorm Podcast – Wöchentliches Auskotzen

                        Kommentar


                        • #13
                          Wenn ich das schon höre: Singleton und "statische Dinger".....
                          So wie ich das sehe soll ja "nur" irgendwas geloggt werden.

                          Da ist doch eigentlich sowas wie das "Observer Design Pattern" angesagt. Und typischer Weise werden dem Subject die Observer per Setter überreicht.
                          Wir werden alle sterben

                          Kommentar


                          • #14
                            Für den Verwendungszweck ja, für den Betreff nicht. Und mehr lese ich beim TO auch nicht mehr wirklich

                            Ich bin auch kein großartiger Freund des Singletons, aber ist immer noch wesentlich einfacher zu implementieren als eine (halbwegs saubere) Observer-Struktur –*vor allem bei dem Kenntnisstand …
                            [FONT="Helvetica"]twitter.com/unset[/FONT]

                            Shitstorm Podcast – Wöchentliches Auskotzen

                            Kommentar


                            • #15
                              Observer sehe ich hier nicht. Er will in seiner Applikation an jeder Stelle im Code einen Errorlogger füttern können. Wer soll da wen observieren?

                              Kommentar

                              Lädt...
                              X