Ankündigung

Einklappen
Keine Ankündigung bisher.

Kindklasse und dessen Name

Einklappen

Neue Werbung 2019

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

  • Kindklasse und dessen Name

    Morgen,

    einen passenderen Titel habe ich nicht gefunden.
    Ich suche eine möglichkeit bei einer Vererbung den Klassennamen der originalen Klasse zu übernehmen aber in einer geerbten Methode von der Elternklasse.

    Da das relativ unverständlich ist einfach ein Beispiel:

    PHP-Code:
    class BaseObject
    {
         private static 
    $instance NULL;
         public static function 
    getinstance()
         {
              
    self::$instance = new $this;
              return 
    self::$instance;
         }

    PHP-Code:
    class BaseApplication extends BaseObject
    {
          ...
    some code

    index.php
    PHP-Code:
    include ...
    $foo BaseApplication::getinstance(); 
    Lieg ich in der Annahme richtig das dies nicht möglich ist oder suche ich einfach nur falsch

    Vielen Dank schon mal

  • #2
    Was meinst du mit Klassenname der Basisklasse übernehmen?

    Das Beispiel ist übrigens relativ sinnfrei, was soll es darstellen?
    Du bekommst immer ein neues Objekt vom Typ BaseObject...
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Genau das isset ich möchte ein Grundgerüst für miene Klassen haben.

      Das Problem ist der Singelton. Ich möchte sozusagen die Instanz von BaseApplication. Aber dafür müsste in BaseObject der Name der erbenden Klasse auftauchen.

      Hoffe ist nicht mehr so Sinnfrei

      Kommentar


      • #4
        Das nennt sich abstraktes SIngleton und ist erst ab PHP 5.3 möglich.
        [COLOR="#F5F5FF"]--[/COLOR]
        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
        [COLOR="#F5F5FF"]
        --[/COLOR]

        Kommentar


        • #5
          @nikosch: Super das habe ich gesucht vielen Dank hast mir sehr weitergeholfen.

          Aber wenn die Frage erlaubt ist, kennt ihr einen anderen Weg es auch für ältere PHP Versionen zu realisieren?

          Kommentar


          • #6
            Nur mit eval. Kannst mal die Boardsuche anschmeißen, da gibts irgendwo nen Thread von mir über SIngleton und Paraaadktylon..
            [COLOR="#F5F5FF"]--[/COLOR]
            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
            [COLOR="#F5F5FF"]
            --[/COLOR]

            Kommentar


            • #7
              Is aber schon 'was älter: http://www.php.de/php-fortgeschritte...tml#post343082
              [COLOR="#F5F5FF"]--[/COLOR]
              [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
              [COLOR="#F5F5FF"]
              --[/COLOR]

              Kommentar


              • #8
                Dein Beispiel am Ende von diesem Thread ist häftig ^^

                Auch die Disskussion dort finde ich sehr interessant. Kannst du mir das erklären was dr.e. genau damit meinte als du dein Singelton vorgestellt hattest?

                Hallo nikosch77,

                Initialisierungen von singleton instanziierten Klassen sollte man tunlichst von der Erzeugung trennen, da es sonst kein echtes abstract Singleton ist. Zudem musst du bei deiner Klasse unterscheiden zwischen "create class" und "get reference", was die Implementierung umständlicher macht.

                Das Thema Initialisierung habe ich in meinem Framework in das "coreObject" eingebaut. Mit der Methode "createAndInitServiceObject()" kann man sich eine Applikations-Schicht oder eine Klasse singleton instanziieren und gleichzeitig initialisieren lassen, sofern die Klasse eine init()-Methode hat. So ist transparent, dass dort eine Singlton-Instanz zurückkommt egal ob ich eine erzeugt habe oder nur eine Referenz zurückgebe inkl. Initialisierung.
                Aso und vielen Dank für den Link zum Thread

                Kommentar


                • #9
                  Abstract Singleton - php bar
                  [IMG]http://media.ubuntuusers.de/portal/files/ubuntu.png[/IMG][IMG]http://sqlmanager.net/i/ico/mysql.gif[/IMG][SIGPIC][/SIGPIC]

                  Kommentar


                  • #10
                    Das ist die PHP 5.3 Variante. Für frühere Versionen bedeuten alle Workarounds IMHO mehr Aufwand als es die paar eingesparten Zeilen rechtfertigen würde
                    [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
                    [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

                    Kommentar


                    • #11
                      Initialisierungen von singleton instanziierten Klassen sollte man tunlichst von der Erzeugung trennen, da es sonst kein echtes abstract Singleton ist. Zudem musst du bei deiner Klasse unterscheiden zwischen "create class" und "get reference", was die Implementierung umständlicher macht.
                      Instanziierung ist die Erzeugung, eben new oder createInstance beim ST.
                      Initialisierung ist die Vorbelegung mit Werten (bspw. im Konstruktor oder über eine Init-Funktion).

                      Mittlerweile sehe ich das ähnlich wie der Doc und benutze auch eigentlich kein Singleton mehr. Jedenfalls: Wenn Du an zwei Stellen oder mehr eine Instanz holst/erzeugst, läufst Du in das Problem, wenn Du das mit Parametern machst, dass Du nicht genau weißt, welchen Zustand das Objekt gerade hat. Bzw. brauchst Du überall diese Parameter, obwohl sich der ST-Aufruf da in verschiedensten Programmkomponenten (und damit Variablenräumen) befinden kann.

                      Eine Alternative kann ein DI-Container sein. Oder das Objekt ist so flexibel, dass man es immer wieder neu konfigurieren kann. Oder Du hinterlegst die Konfiguration in einer Registry o.ä.
                      [COLOR="#F5F5FF"]--[/COLOR]
                      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                      [COLOR="#F5F5FF"]
                      --[/COLOR]

                      Kommentar

                      Lädt...
                      X