Ankündigung

Einklappen
Keine Ankündigung bisher.

Funktionen auslagern

Einklappen

Neue Werbung 2019

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

  • Funktionen auslagern

    ich habe mir folgendes gedacht,das ich einige Funktionen in eine extra Datei auslagern kann. Jedoch scheine ich da nen Denkfehler zu haben. auf jedenfall bekomm ich nen Pharse Error.

    also ich hole die Datei function.inc.php wie folgt in die index.php

    PHP-Code:
    include './include/function.inc.php'
    Inhalt der Datei:

    PHP-Code:
    <?php 
    // Include Funktionen
    function header()
    {
    include 
    './templates/'.$template.'/header.php';
    {

    function 
    sidebar()
    {
    include 
    './templates/'.$template.'/sidebar.php';
    {
     
    function 
    content()
    {
    include 
    './templates/'.$template.'/content.php';
    {
     
    function 
    footer()
    {
    include 
    './templates/'.$template.'/footer.php';
    {
    ?>
    Fehler:
    Parse error: syntax error, unexpected $end in /opt/lampp/htdocs/dev-web/portal/include/function.inc.php on line 22

    Line 22 entspricht ?>

    Bestimmt wieder nen Anfängerfehler.

    Dank euch schon mal!

    Mafra


  • #2
    Ich sag's mal so: Es gibt nicht nur die öffnende Klammer "{" sondern auch die schließende "}"...
    [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

    Kommentar


    • #3
      Stimmt du hast recht, *aufdemkopfschlag* man soll sich halt nicht ablenken lassen. Ähm ist es überhaupt sinnvoll das so zu machen oder gibt es da elegantere Lösungen?

      *gut das es euch gibt*

      Danke

      Kommentar


      • #4
        So wie du es machst wird es nicht funktionieren:
        $template ist nicht definiert. Du müsstest es entweder per global $template in der Funktion bekannt machen oder als Parameter übergeben....
        Wobei letzteres klar zu bevorzugen ist.

        Ich find's jetzt nicht sonderlich sinnvoll das so zu machen... Aber im Grunde spricht auch nichts dagegen. Wordpress handelt das glaube ich in ihren Templates ganz ähnlich....
        [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

        Kommentar


        • #5
          RE

          So jetzt bekomm ich netterweise wieder nen Fehler. Also ich habe meinen äußerst dummen Fehler behoben. Leider ohne Erfolg.

          Fatal error: Cannot redeclare header() in /opt/lampp/htdocs/dev-web/portal/include/function.inc.php on line 6

          I
          ch danke euch schon mal für euer Geduld.

          MfG
          Mafra

          Kommentar


          • #6
            Zitat von mafra Beitrag anzeigen
            So jetzt bekomm ich netterweise wieder nen Fehler. Also ich habe meinen äußerst dummen Fehler behoben. Leider ohne Erfolg.

            Fatal error: Cannot redeclare header() in /opt/lampp/htdocs/dev-web/portal/include/function.inc.php on line 6
            Das hab ich vorher wohl übersehen....

            header() ist schon eine PHP-interne Funktion und existiert damit schon. Du kannst also keine Funktion erstellen die header() heißt.
            [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

            Kommentar


            • #7
              Zitat von agrajag Beitrag anzeigen
              Ich find's jetzt nicht sonderlich sinnvoll das so zu machen... Aber im Grunde spricht auch nichts dagegen. Wordpress handelt das glaube ich in ihren Templates ganz ähnlich....
              Nen Profi *lol* Ja genau. Ich baue Templates für Wordpress und mir gefällt die Template Engine von Wordpress ganz gut.

              Die Variable Template wird in der config.inc.php definiert und eine Zeile vorher includet.

              Also die index.php sieht so aus.

              PHP-Code:
              <?php

              // Konfigurations Datei
              include './include/config.inc.php';

              // Verbindung zur Datenbank
              include './include/dbConnect.inc.php';

              // Funktionen 
              include './include/function.inc.php';

              // Template Integration
              include './templates/'.$template.'/index.php';

              ?>

              Kommentar


              • #8
                Zitat von mafra Beitrag anzeigen
                Nen Profi *lol*
                Was willst du mir jetzt damit sagen?

                Ja genau. Ich baue Templates für Wordpress und mir gefällt die Template Engine von Wordpress ganz gut.
                Ich hab bisher erst 2 mal mit Wordpress-Templates zu tun gehabt, aber stimmt: Es ist eigentlich ganz angenehm handhabbar bei wordpress.

                Die Variable Template wird in der config.inc.php definiert und eine Zeile vorher includet.
                Das wird trotzdem nicht funktionieren wenn du die Funktionenen so wie oben verwendest.

                Schalte mal error_reproting auf E_ALL (einfach error_reporting(E_ALL); ganz oben ins Script) und du wirst sehen, dass du einen Hinweis bekommst: $template ist nicht definiert.

                Du musst sie wie gesagt entweder per global in den Scope der Funktion übernehmen (globale Variable) oder einfach als Parameter übergeben....
                [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

                Kommentar


                • #9
                  Zitat von agrajag Beitrag anzeigen
                  Was willst du mir jetzt damit sagen?.
                  So wie es da steht. Du hast mich überrascht das du es auf Anhieb gesehen hast was ich mir als Vorbild nehme. Zeugt von Kompetenz. Ein Lob sozusagen.

                  Zitat von agrajag Beitrag anzeigen
                  Schalte mal error_reproting auf E_ALL (einfach error_reporting(E_ALL); ganz oben ins Script) und du wirst sehen, dass du einen Hinweis bekommst: $template ist nicht definiert.
                  Stimmt habe ich schon gemerkt, da ich die Variable durch den Template Ordner Ersetzt habe. Und siehe das das Template war zu sehen.

                  Zitat von agrajag Beitrag anzeigen
                  Du musst sie wie gesagt entweder per global in den Scope der Funktion übernehmen (globale Variable) oder einfach als Parameter übergeben....
                  Wie muss ich das genau machen?


                  Danke dir!

                  Kommentar


                  • #10
                    Als Parameter:
                    Code:
                    function foo($bar){
                    echo $bar;
                    }
                    foo('Hello World');
                    globale Variable: PHP: Geltungsbereich von Variablen - Manual
                    [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

                    Kommentar


                    • #11
                      RE

                      Zitat von agrajag Beitrag anzeigen
                      Als Parameter:
                      Code:
                      function foo($bar){
                      echo $bar;
                      }
                      foo('Hello World');
                      globale Variable: PHP: Geltungsbereich von Variablen - Manual
                      Danke dir erst mal ich habe das mit

                      PHP-Code:
                      global $template
                      gelöstö. Obwohl ich beide Varianten recht unflexibel finde. Aber ich kann mir vorstellen das dass Sicherheitsrelevate Gründe hat das meine "System"Variablen in Funktionen nicht funktionieren (welch ein Wortspiel)

                      Danke dir auf jeden Fall erst mal! Läuft super!

                      MfG
                      Mafra

                      Kommentar

                      Lädt...
                      X