Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] PHP-Zukunft auf prozeduraler Ebene

Einklappen

Neue Werbung 2019

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

  • [Erledigt] PHP-Zukunft auf prozeduraler Ebene

    Hallöchen,

    ich bin gerade dabei, ein großes Arsenal an kleinen Helferlein (in PHP) zu schreiben, die mir in zukünftigen PHP-Projekten viel Zeit ersparen werden. Das geschieht auf prozeduraler Ebene, ich bin von OOP abgeneigt. Nun frage ich mich natürlich auch aufgrund der verbesserten OOP-Unterstützung durch die Version 5, ob meine Tools auch in zukünftigen Versionen noch bestehen können.

    Meine Angst ist, dass PHP zu einer reinen OO-Sprache mutiert, wie zB Java, und ich von vorne anfangen kann. Weiß jemand mehr darüber?


  • #2
    Also PHP5 sollte grundsätzlich abwärtskompatibel sein. Natürlich kommts da auch auf die "Sauberkeit" des programmierten Codes (~ welche Funktionen ich benutze) und die php.ini Einstellungen an.

    Dass PHP zu einer reinen OO-Sprache mutiert halte ich für sehr unwahrscheinlich bis garnicht möglich. Zumindest nicht in Version 5 Und ich habe auch noch nen Haufen Helferlein-Funktionen. Es spricht eigentlich auch garnichts dagegen, diese nicht zu behalten oder dafür, sie in eine Klasse zu packen. Deine Angst ist also wohl unbegründet.

    Aber beschäftige dich doch mal mit OOP und sieh selbst wie mächtig das ist Es lohnt sich, sich damit zu beschäftigen, gerade als Programmierer sollte man mit der Zeit gehen!

    Kommentar


    • #3
      Danke für deinen Beitrag.

      OOP kann auch nur dort eingesetzt werden, wo es sinnvoll ist OOP ist kein Neuland für mich, aus der Anwendung mit Java besteht meine 40-h-Woche. Dennoch liebe ich C und seine Pointer, so gehe ich auch mit PHP um.

      Klar lassen sich Funktionen einfach in Klassen kapseln. Aber der Aufwand bestünde darin, das OOP-Konzept richtig einfließen zu lassen. Es sind nicht lediglich ein paar Funktionen, sondern mehr ein ganzes Framework für PHP-Projekte. Da müsste einiges nochmal separiert, abstrahiert und richtig verknüpft werden. Davor hab ich Angst, nur vor dem zeitlichen Aufwand

      An der Macht der OOP verglichen mit der prozeduralen Version zweifle ich stark. Das Argument der Benutzerfreundlichkeit für die Programmierer zieht bei mir zB gar nicht. Wer mit seinem Code richtig umgeht, braucht keine strikten Verhaltensregeln

      Kommentar


      • #4
        Achso, ich hatte es so verstanden, dass du das Framework und die Helfer-Tools erst jetzt erstellen willst. Wenn es die natürlich schon gibt, macht es wohl selten Sinn, das komplett umzumodeln, obwohl ein Framework ja gerade effektiv programmiert sein sollte. Musst du dir eine Kosten/Nutzen-Rechnung überlegen. Aber die scheinst du ja auch schon gedanklich gemacht zu haben, mit dem Ergebnis für prozedurale Programmierung.

        Aber du hast Recht, alles OO zu machen ist übertrieben, umgekehrt allerdings genauso! Ich werd zum Beispiel weiterhin meine generatePassword($length), highlightString($string) und meine debug_print($mixed) prozedural lassen, da wäre ein Klassenkonstrukt wirklich zu aufgebläht. Wenn ich mir allerdings überlege, ich hätte mein Projekt mit der Behandlung von Filmen, Schauspielern etc prozedural geschrieben. OK es wär wohl schneller fertig gewesen, aber ob ich den Code jemals wieder hätte ändern oder weiterverwenden können, puh ich bezweifels doch stark. Sicher kann man auch sauber und guten proz. Code schreiben.

        Die entscheidende Frage ist doch dann aber: was spricht für dich gegen OOP? Der Mix machts

        Kommentar


        • #5
          Wiederverwendbarkeit ist prozedural genauso gegeben.

          Für mich spricht gegen OOP der ganze Codierungs- und Planungsoverhead. Außerdem wird OO-Code langsamer abgearbeitet als prozeduraler.

          Kommentar


          • #6
            Nurnoch minimal langsamer.

            Meine Meinung ist, dass Klassenkonstrukte mehr Zeit in der Planung und Erstellung brauchen und man hier viel Vermurgsen kann. Dafür ist die Anwendung eben ungemein komfortabler. Umgekehrt ist es bei der prozeduralen Programmierung.

            Klar, OOP bei PHP4 und prozedurale Programmierung geben sich nicht wirklich viel. Aber OOP bei PHP5 ist doch schon viel weiter entwickelt. Ich versteh grad auch nicht so genau was du eigentlich willst? Denn wenn du Java schon kennst, solltest du doch die Vorteile von OOP kennen und erkannt haben?!

            Kommentar


            • #7
              Zitat von Zergling
              Denn wenn du Java schon kennst, solltest du doch die Vorteile von OOP kennen und erkannt haben?
              Ich hatte noch keine Nachteile durch nicht-oo.

              Kommentar


              • #8
                Um mal ein Beispiel zu machen:
                Ich habe ne Klasse MovieManager, die ist static, holt Daten aus der
                Datenbank und gibt die angeforderten Movie-Objekte zurück. Aufruf


                movie/edit.php
                PHP-Code:
                if (isset($_GET['id'])) { // open
                  
                $movie MovieManager::get($_GET['id']);
                } else if (
                $_POST['id'])) { neuer Movie hat ID 0
                  $movie 
                MovieManager::saveForm($_POST);
                } else {
                  
                $movie = new Movie();
                }
                // html 
                Wie kann man das prozedural noch einfacher machen? Einfach
                Methodenaufrufe durch Funktionen zu ersetzen ist zwar genauso einfach
                (bei statischen Sachen auch funktionell eigentlich gleich), aber da fehlt
                doch dann der Zusammenhang! Was zusammengehört sollte auch
                zusammen gebracht werden. Zeig doch mal ein Beispiel deines
                prozeduralen Codes, von dem du glaubst, jemand anders hätte ihn in eine
                Klasse gepackt. Dann können wir gern weiterdiskutieren

                Kommentar


                • #9
                  Wie hast du es nur geschafft, die Breite dieser Seite so auszudehnen?

                  Wieso sind deine beiden Methoden (get und saveForm) statisch?

                  Du willst ein Beispiel? Hier:

                  Nehmen wir mal an, ich schreib einen Request-Container, also ein Skript, das den Request zur Verfügung stellt (request.php):

                  PHP-Code:
                  <?php

                  class SRequest {
                      var 
                  $args = array(); // Argumentnamen
                      
                  var $argv = array(); // Argumentwerte
                      
                  var $argc 0// Anzahl der Argumente
                  }

                  function &
                  request_create()
                  {
                      
                  $req = new SRequest();

                      
                  // hier füll ich die Argumente von $_POST/$_GET in diese Instanz

                      
                  return $req;
                  }

                  function 
                  request_delete($request)
                  {
                      unset(
                  $request); // nur der förmlichkeit halber, funktioniert natürlich nicht
                  }

                  function 
                  request_get_arg($request$argname)
                  {
                      
                  // Schleife, die den Argumentnamen sucht und den Wert zurückgibt
                  }


                  function 
                  request_set_arg($request$argname$argvalue)
                  {
                      
                  // Schleife, die den Argumentnamen sucht und den Wert ändert, bzw den Argumentnamen neu anlegt
                  }

                  // usw.
                  ?>
                  Angewandt wird das dann folgendermaßen:

                  PHP-Code:
                  <?php

                  include_once("request.php");

                  $req = &request_create();
                  $seite request_get_arg(&$req"seite");
                  request_delete(&$req);

                  ?>

                  Kommentar


                  • #10
                    Zitat von Saraneus
                    Wieso sind deine beiden Methoden (get und saveForm) statisch?
                    Weil die Klasse MovieManager (die die Filme aus der DB holt bzw. reinspeichert, natürlich mit Validierung) keinen Zustand hat, welcher sollte der auch sein?

                    Ganz ehrlich, ne kleine Newbie-Frage: was ist ein Request, bzw. ein RequestContainer?? Hab damit noch nie arbeiten müssen, da ich auch nicht weiß was es ist.

                    Kommentar


                    • #11
                      Na eventuell hat der MovieManager Konfigurationsmöglichkeiten.

                      Mit Request ist hier eine Browseranfrage gemeint. Mit dem Container könnte man zB für die eigenen Bedürfnisse standardisieren, welche Werte er für leere oder nicht übergebene Argumente zurückgibt, die man sich mit req_get_arg holt, oder wie sie gecastet werden.

                      Kommentar


                      • #12
                        Achso ok das. Find ich ehrlich gesagt nicht nötig sowas zu bauen.
                        Der MovieManager hat seine Konfigurationsmöglichkeiten, in dem man ihm Argumente übergibt. Falls es interessiert: http://nopaste.php-q.net/173173

                        Ich find Klassen zumindest gut Wie kommts dass du Java und PHP machst?

                        Kommentar


                        • #13
                          Weil ich Job und Freizeit trenne

                          Ich bin grundsätzlich offen für alles, womit ich bisher wenig zu tun hatte. Jetzt hab ich einen tiefen Einblick in Java und werd irgendwann wieder was anderes machen. Vielleicht C++? Oder Assembler?

                          Kommentar

                          Lädt...
                          X