Script teilen
Tim
- php
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
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
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.
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