Require, gleich im index.php oder auch bei includeten Dateien bei bedarf ?

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

  • Require, gleich im index.php oder auch bei includeten Dateien bei bedarf ?

    Hallo, habe mal wieder eine eher theoretische frage an euch!

    Ich habe mir da 3 INC-Dateien erstellt von welchen ich 2 auf jeden Fall bei jedem Seitenaufruf benötige!

    Jetzt habe ich das so gemacht das ich in den PHP-Dateien die includet werden diese einbinde falls sie an dieser Stelle benötigt werden und zwar per require_once ("...");

    Da stellt sich bei mir die Frage ob es nicht besser wäre diese gleich irgendwann mal kurz nach dem Header requiren (also ohne 'once') und ich muss mich im späteren Verlauf darum nicht mehr kümmern!


    Nur, wie sieht das aus mit der Gültigkeit der Funktionen ? bis zum nächsten ?> (also ende eines PHP-Blocks) oder gelten diese bis an das Ende des Ladens der Seite (also auch alle nachfolgenden PHP-Blöcke in eventuell includeten Dateien) ?

    Kann ich also die INC-Dateien am Anfang der Seite requiren und auf diese dann bis zum Ende zugreifen ohne neu zu requiren unabhängig ob sie sich noch im gleichen PHP-Block befinden oder in einem späteren (also PHP-Block beendet->bissl HTML-Code->ein neuer PHP-Block->usw... und das die requireten INC-Dateien aus dem ersten PHP-Block auch noch in den folgenden gültig sind) ?

    Hoffe das ich die Frage einigermaßen verständlich gestellt habe.....

  • #2
    die funktionen sind die ganze zeit gültig.

    die frage ist: bindest du sonst in jede datei diese 2 dateien aufs neue ein? das wäre unsinnig, wenn du es 1x schreiben kannst dann schreib es 1x... mehrfach das gleiche ist contraproduktiv wenn du dann mal die dateien - aus welchem grund auch immer - umbenennst / verschiebst / ..
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      @Shurkai

      Ja, habe ich mir so auch gedacht.

      Aber da ich mich durch das Thema bissl gelesen habe las ich irgendwo das das alles nur bis zum ENDE von PHP gültig ist! Ich konnte leider nirgends lesen was dieses ENDE nun wirklich bedeutet. Ende eines PHP-Blockes oder eben das ganze Ende eines Seitenaufrufs (also mit unzähligen weiteren PHP-Blöcken) und somit habe ich es eben vorsichtshalber überall dort eingebunden wo ich es benötige!

      Wenn ich das nun am Anfang alles einbinde was ich auf jeden Fall immer benötige dann doch wohl ohne require_once sondern nur require, oder ?
      Oder ist das im Prinzip egal weil es sowieso nur einmal eingebunden wird ?

      Stellt sich aber dann die Frage: Wer benutzt dann überhaupt nur require wenn beide das selbe bedeuten nur das eben require fehlermeldungen produziert wenn es nochmals eingebunden wird ?

      Kommentar


      • #4
        Da haben die PHP-Entwickler einen Streich mit den Progger spielen wollen; sie möchten bestimmt testen, ob die Progger wirklich ihr Handwerk verstehen . Im Grunde genommen braucht man nur include, wenn man ganz sauber programmiert. Der Rest von dieser Möglichkeiten sind für schlampige Progger gedacht

        Also nochmals für ganz Faule:

        - include produziert Warnings, Script läuft weiter
        - require produziert Fatal Error, Script wird sofort angehalten
        - include_once/require_once merkt was sie schonmal eingebunden haben und tut's nicht nochmals.

        Kommentar


        • #5
          Original geschrieben von asp2php
          Da haben die PHP-Entwickler einen Streich mit den Progger spielen wollen; sie möchten bestimmt testen, ob die Progger wirklich ihr Handwerk verstehen . Im Grunde genommen braucht man nur include, wenn man ganz sauber programmiert. Der Rest von dieser Möglichkeiten sind für schlampige Progger gedacht

          Also nochmals für ganz Faule:

          - include produziert Warnings, Script läuft weiter
          - require produziert Fatal Error, Script wird sofort angehalten
          - include_once/require_once merkt was sie schonmal eingebunden haben und tut's nicht nochmals.
          hm..nein, require_once ist auch für Klassen includieren praktisch. Beispiel:
          Man hat zwei Klassen, die sich im Konstruktor ein Datenbank-Objekt anlegen, das wäre ein Fall für require_once.
          Wobei include fast immer die falsche Wahl ist, denn meißten required man die Files und läd die ja nicht nur zum Spaß

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            Nicht daß ich es irgendwo gelesen hätte, aber weil es mir einfach sinnvoll erscheint, verwende ich include zum Einbinden statischer Seiten- (HTML-Stücke) und unwichtiger Codeteile und require für wichtigen Code.

            Falls ein HTML-Teil wie footer.inc oder ein unwesentliches Codestück wie shoutbox.inc.php mal gelöscht wurde, soll das Script ja trotzdem durchlaufen. Die Seite sieht dann vielleicht blöd aus, aber sie geht immerhin noch.
            Require nehme ich für wichtigen Code, etwa Authentifizierung, Klassen + Funktionen, etc.
            Würde ich die includen, würde ein Script auch weiterlaufen, wenn sie fehlen und entweder ich habe ein Sicherheitsloch oder das Script endet später mit einem Fehler, dem ich dann u.U. lange hinterhersuche. Da lasse ich mir lieber gleich sagen "require: file not found".

            Ob _once oder nicht, mache ich eigentlich nur davon abhängig, was in der Datei steht/passiert. Funktionen möchte man nur einmal, Objekte möchte man nicht überschreiben, DB-Verbindungen braucht man auch nur einmal ... aber Ausgaben wie die Buttons unter jedem Beitrag hier kann man natürlich nicht mit _once laden. Dann hätte schließlich nur der erste Post Buttons ... naja ihr wißt wie ich es meine.

            Jetzt hat mich doch glatt der Schreibwahn gepackt. Eigentlich wollte ich nur mal sagen, dass es sinnvolle, weniger sinnvolle und schlichtweg falsche Verwendungen von include/require gibt, aber fällt doch nicht schwer die jeweils geeignete Methode zu finden.

            Kommentar

            Lädt...
            X