Daniel: PHP Objektorientiert - mehrere Konstruktoren

Hallo zusammen

Ist's irgendwie möglich mehrere Konstruktoren in einer PHP Klasse (wie in Java) zu definieren (Überladen)?

Habe eine Klasse Database, welche eine Verbindung erstellen soll. Je nachdem ob Passwort, Username usw. bei der Instanzierung mitgegeben werden, soll ein anderer Konstruktor aufgerufen werden. Falls Werte mitgegeben werden soll eine Connection mit diesen, andernfalls mit den Standardwerten erstellt werden...

class Database {

function Database($name, $passwd) {}

function Database() {}

}

Gruss Daniel

  1. Hello,

    Ist's irgendwie möglich mehrere Konstruktoren in einer PHP Klasse (wie in Java) zu definieren (Überladen)?

    Es lohnt das Weiterreden erst, wenn Du sagst, für welche PHP-Version.

    Ab 5.0 ändert sich da alles und es wird sinnvoll, sich damit zu beschäftigen. Bei PHP 4.x hat OOP noch mehr Verdruss gemacht, als genützt.

    Und Überladen ging da auch nicht, genauso wie Prototyping, Private Methods oder gar Sub-Classes, usw

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    1. ...PHP4:-( Wann kommt PHP5 eigentlich offiziell raus? Lohnt sichs wenn ich jetzt mit der Entwicklung beginne bereits umzusteigen? Wann kann man damit rechnen, dass PHP 5 auf den meisten Webservern implementiert wird? Was denkt ihr so?

      1. Hello,

        ...PHP4:-( Wann kommt PHP5 eigentlich offiziell raus? Lohnt sichs wenn ich jetzt mit der Entwicklung beginne bereits umzusteigen? Wann kann man damit rechnen, dass PHP 5 auf den meisten Webservern implementiert wird? Was denkt ihr so?

        Kommt immer darauf an, was Du unter Entwicklung so verstehst. Wenn man ein Projekt beginnt, hat man doch erst mal eine ganze Weile mit externer Sicht und konzeptioneller Planung zu tun, bevor es dann an das Coden geht. Pflichtenhefte schreiben sich auch nicht von alleine.

        Die 5.0 alpha ist wohl schon recht stabil, sodass mann die grundlegenden Dinge schon mal planen und "testen" könnte. Seiteneffekte sind jedoch nicht auszuschließen.

        Mit 4.x werde ich kein OOP mehr beginnen. Dann lieber strenge Disziplin bei der Namensvergabe von Funktionen, Konatanten und Variablen.

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      2. ...PHP4:-( Wann kommt PHP5 eigentlich offiziell raus? Lohnt sichs wenn ich jetzt mit der Entwicklung beginne bereits umzusteigen? Wann kann man damit rechnen, dass PHP 5 auf den meisten Webservern implementiert wird? Was denkt ihr so?

        man kanns sich schon mal anschaun, aber entwicklen sollte man noch nicht.. zumal offiziel immer noch klar gesagt wird, jede funktion, fktname, ablauf, ... kann sich noch immer frei ändern.. so könnten projekte später was ganz anderes machen, als gewünscht war/ist. *theoretisch*

        mfg Scar

        1. Hallo!

          man kanns sich schon mal anschaun, aber entwicklen sollte man noch nicht.. zumal offiziel immer noch klar gesagt wird, jede funktion, fktname, ablauf, ... kann sich noch immer frei ändern.. so könnten projekte später was ganz anderes machen, als gewünscht war/ist. *theoretisch*

          Naja, so viel wird sich nicht mehr ändern (theoretisch gar nichts mehr, für die letze Beta(3) galt AFAIK Feature-Freeze, was so viel bedeutet dasss ab dem Release nur noch Bugs gefixt werden - theoretisch, siehe auch: http://news.php.net/article.php?group=php.announce&article=44), und selbst wenn muss man davon erstmal selbst betroffen sein. Nur bei simplexml wäre ich vielleicht noch etwas vorsichtig :)
          Und wenn man betroffen ist - naja, meist ändern sich ja keine Sachen wo man dann das Programm komplett nochmal schreiben darf.

          IMHO kommt es auf das Projekt an. Welche Größe, welcher Zeitplan, eigener Server oder ist man drauf angewiesen dass der Provider updated (was sicher erheblich länger dauern wird)...

          Bei einem entsprechend großen Projekt macht es IMHO auch mit PHP4 durchaus Sinn objektorientiert zu programmieren, wobei ich PHP5 für ein langfristiges Projekt was eh noch einige Monate entwickelt wird bevorzugen würde.

          Und überladen kann man - wenn man es denn braucht - auch sehr einfach nachprogrammieren. Analysiere in der "offiziell" aufgerufenen Methode einfach selber die übergebenen Parameter und rufe dann jeweils eine entsprechende Methode auf.

          Vielleicht hilft Dir:

          http://de3.php.net/manual/de/function.func-get-args.php
          für PHP5: http://de3.php.net/zend-engine-2.php, da findest Du unter anderem "Overloadable Method calls and Property accesses"

          Grüße
          Andreas