Tim: Script teilen

Hi,

mir ist grad etwas seltsam, nachdem ich in einem Script in etwa folgenden Fehler erhalte.

  
<?php  
...  
...  
if ($abc == 'def') {  
echo ("test 1, test2, test3");  
...  
...  
} // end if  
?>  

Dieses Script wollte ich teilen und die entsprechenden Teile dann wieder per include einbinden. Das hat für mich den Vorteil, daß ich eine dritte Datei auf die entstandenen Teilscripte übersichtlicher anwenden kann.

Hauptscript:

  
<?php  
...  
...  
if ($abc == 'def') {  
include ('teilscript1.php');  
include ('teilscript2.php);  
?>  

Teilscript1:

  
<?php  
echo ("test 1, test2, test3");  
...  
?>  

Teilscript2:

  
<?php  
  
...  
} // end if  
?>  

Und ich erhalte einen Syntaxfehler wegen der im Hauptscript nicht geschlossenen geschweiften Klammer (obwohl sie ja in Teilscript2 käme).

Wenn ich ins Hautsript die geschweifte Klammer einsetze, läuft das Hauptscript, aber ich erhalte eine Fehlereldung für das Teilscript2 wegen der geschweiften schließenden Klammer, die dann zuviel ist.

Was mache ich hier falsch?

Tim

  1. Hallo,

    mir ist grad etwas seltsam, nachdem ich in einem Script in etwa folgenden Fehler erhalte.

    ich finde eher dein Vorhaben etwas seltsam. ;-)

    <?php

    ...
    ...
    if ($abc == 'def') {
    echo ("test 1, test2, test3");
    ...
    ...
    } // end if
    ?>

    
    >   
    > Dieses Script wollte ich teilen ...  
      
    Dann gehe ich davon aus, dass das Script in Wirklichkeit viel umfangreicher ist - denn bei einem solchen Dreizeiler ergibt eine Aufteilung ja nun wirklich keinen Sinn.  
      
    
    > Hauptscript:  
    > ~~~php
    
    <?php  
    
    > ...  
    > ...  
    > if ($abc == 'def') {  
    > include ('teilscript1.php');  
    > include ('teilscript2.php);  
    > ?>
    
    

    Teilscript1:

    <?php

    echo ("test 1, test2, test3");
    ...
    ?>

    
    >   
    > Teilscript2:  
    > ~~~php
    
    <?php  
    
    >   
    > ...  
    > } // end if  
    > ?>
    
    

    Dass das so nicht geht, hast du ja schon festgestellt. Ja, es wird immer wieder veranschaulicht, include würde genau so arbeiten, als wäre der includierte Teil direkt in der übergeordneten Datei notiert. Allerdings darf ein include nicht über Klammerebenen hinweg gehen, so wie es bei dir der Fall ist. Du darfst also nicht einen Block im Hauptscript beginnen (öffnende Klammer), und in einem includierten Script beenden (schließende Klammer).

    Jedes Script muss zumindest noch syntaktisch korrekt sein, auch wenn mal eine include-Datei fehlt. Und das geht eben nicht, wenn Blöcke über include-Grenzen gehen.

    Setze die schließende Klammer ins Hauptscript, dann ist die Welt in Ordnung. Und übersichtlicher ist das IMO auch.

    Wenn ich ins Hautsript die geschweifte Klammer einsetze, läuft das Hauptscript, aber ich erhalte eine Fehlereldung für das Teilscript2 wegen der geschweiften schließenden Klammer, die dann zuviel ist.

    Natürlich. Dort muss sie weg, dort hat sich nichts verloren. Ein Block muss in der Scriptdatei geschlossen werden, in der er geöffnet wurde.

    Ciao,
     Martin

    --
    In Ägypten haben früher 150000 Leute 35 Jahre lang an einer Pyramide gearbeitet. Aber bei uns arbeiten doppelt so viele Leute doppelt so lange allein an der Baugenehmigung.
      (Dieter Nuhr, deutscher Kabarettist)
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  2. Lieber Tim,

    es scheint in Deinem Fall eine einfache if-Anweisung "aufgesplittet" zu werden. Dann mach es doch so:

    if (...) {  
        include 'teilscript1.php';  
    } else {  
        include 'teilscript2.php';  
    }
    

    Denke es Dir vielleicht so: Jedes Teilscript erldigt eine Aufgabe. Das Hautpscript entscheidet, welche Aufgabe erledigt werden soll. Danach teilst Du Deinen Code auf Einzelscripte auf.

    Übrigens könnte man obige Variante auch so notieren:

    include (... ? 'teilscript1.php' : 'teilscript2.php');

    Liebe Grüße,

    Felix Riesterer.

    --
    "Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes)
  3. Hallo Felix und Martin,

    danke für Eure Hinweise.

    Ich wußte nicht, daß jedes Teilscript für sich gesehen auch alleine syntaktisch korrekt sein muß.

    Gruß, Tim