Ankündigung

Einklappen
Keine Ankündigung bisher.

Abfrage: Klasse bereits includiert?

Einklappen

Neue Werbung 2019

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

  • #16
    Zitat von axo
    das ist bereits zu spät. 'compile time' vs. 'runtime'.
    Mit welcher Version arbeitest Du?

    Kommentar


    • #17
      Zitat von Saraneus
      Wen interessiert der Unterschied in PHP?
      solang du das projekt zu 100% testen kannst, niemanden.
      ich bin grad (seit einem jahr) an einem projekt mit 175.000+ codezeilen dran, und da kann ich dir sagen, dass es wichtig ist, garantieren zu können, das zumindest ein lint check funktioniert, bevor man etwas an den kunden ausliefert.

      Kommentar


      • #18
        Aber daran ändert sich doch nichts, wenn man statt include_once require_once verwendet ...jedenfalls seit etlichen Versionen schon nicht mehr.

        Kommentar


        • #19
          Schon seit über 5 Jahren, wenn ich nicht irre.

          Basti

          Kommentar


          • #20
            Und im Changelog steht, dass mit dieser Version überhaupt erst include/require_once hinzukam. Also bei den beiden gab es wohl nie einen Unterschied in diesem Bezug

            Kommentar


            • #21
              ach, das meine ich doch gar nicht.

              mal als beispiel:

              PHP-Code:
              <?php
              require_once('class.A.php'); 
              require_once(
              'HTML/QuickForm.php');  // erste variante
              class extends A{

                function 
              getForm() {
                   require_once(
              'HTML/QuickForm.php');  // zweite variante
                   
              $form = new HTML_QuickForm(); 
                   ....
                }

                function 
              doSomething() {
                   return 
              rand(1,100);
                }


              }

              ?>
              während man bei der ersten require_once() - variante (direkt im
              header-bereich der klassendatei) ein fehlendes (oder falsch
              geschriebendes ) require hat, bekommt man den 'fatal error'
              bereits, sobald man ein include von B macht, und nicht erst,
              wenn man $b -> getForm() ausführt.

              die zweite variante ist natürlich besser - ein nicht benötigtes
              require_once() weniger und damit weniger overhead.
              das gilt aber nur solange man ganz sicher weiß (und garantieren
              kann), dass $b -> getForm() auch durch einen testfall aufgerufen
              wird. weiß man das nicht, halte ich die erste methode für 'besser',
              weil ein fehlendes oder falsch geschriebenes include mit höherer
              wahrscheinlichkeit beim testen auffällt. darüberhinaus würden
              auch parse errors in den benutzten klassen im zweiten fall erst
              beim aufruf auffallen.

              das meine ich mit 'compile time' vs. 'runtime' ...

              Kommentar


              • #22
                ah so, ist aber beides runtime

                Kommentar


                • #23
                  ja, natürlich. nennen wir es dann also interpreter-time vs. execution-time ... oder was auch immer.

                  Kommentar


                  • #24
                    Zitat von DerDesian
                    Gerade für 'größere' Projekte braucht man eine derartige Zentralisierung, wenn man nicht SpagettiCode haben will.
                    Indem man mit __autoload() arbeitet ersparst du dir aber die explizite Einbindung der Dateien.

                    Du erstellst eine Instanz einer Klasse und bindest dann in der __autoload()-Funktion die entsprechende datei ein.

                    Mein auto_prepend_file wäre "leicht" lang, wenn ich alle Dateien, die ich benötige einbinden würde.
                    Und warum sollte ich die Klasse vB_News einbinden, wenn ich sie gar nicht brauche?

                    Ich bin da lieber flexibel.

                    Grüße Ben.
                    privater Blog

                    Kommentar


                    • #25
                      Zitat von Bruchpilot
                      Und im Changelog steht, dass mit dieser Version
                      überhaupt erst include/require_once hinzukam. Also bei den beiden gab es
                      wohl nie einen Unterschied in diesem Bezug
                      Doch, aber nur kurz:
                      4.0 RC1 27-Mar-2000 require-once() und include_once()
                      4.0 22-May-2000
                      4.0.2 29-Aug-2000 gleiches Verhalten

                      Zitat von axo
                      die zweite variante ist natürlich besser - ein nicht benötigtes
                      require_once() weniger und damit weniger overhead.
                      das gilt aber nur solange man ganz sicher weiß (und garantieren
                      kann), dass $b -> getForm() auch durch einen testfall aufgerufen
                      wird. weiß man das nicht, halte ich die erste methode für 'besser',
                      weil ein fehlendes oder falsch geschriebenes include mit höherer
                      wahrscheinlichkeit beim testen auffällt.
                      Es ist ein wenig sinnlos, das hier auszuführen. Wenn du Software auslieferst, die Methoden enthält die nicht getestet wurden (und hier geht es ja nur um einen einfachen Aufruf - nichtmal um das Verhalten der Methode), dann kannst du auch allen Code in eine einzige Datei packen, am besten in eine einzige Zeile oder so...

                      Ich bevorzuge übrigends auch __autoload(). Ist einfach eine feine Sache, die Sorge, das der Code auch geladen wird einer Maschine zu überlassen. Für sowas sind diese Dinger doch da, oder?

                      Basti

                      Kommentar

                      Lädt...
                      X