Siehe Betreff. Ich habe versucht, Google zu befragen. Aber wie manch andere vielleicht schon festgestellt haben, bekommt man auf derartige Anfragen kein sinnvolles Ergebnis.
Hintergrund: Ich erzeuge mit PHP eine Bilddatei (PNG). Manche Texteditoren fügen ungefragt einen Zeilenumbruch bzw. eine Leerzeile an das Ende der Datei. Wenn ich "?>" am Ende einfüge, landet die folgende Leerzeile in der Bilddatei, was nicht zulässig ist.
The closing tag of a PHP block at the end of a file is optional, and in some cases omitting it is helpful when using include or require, so unwanted whitespace will not occur at the end of files, and you will still be able to add headers to the response later. It is also handy if you use output buffering, and would not like to see added unwanted whitespace at the end of the parts generated by the included files.
Er meint das Problem, daß die Webserver/PHP-Kombination eine jede Datei erstmal - egal wie sie heißt - als HTML behandelt, dann den Teil zwischen den PHP-Tags (<?php und ?>) gegen den Rückgabewert des PHP-Scripts austauscht und das entstandene Dokument abschickt. Alles was nach dem ?> in der PHP-Datei steht, wird so wie es ist nach der PHP-Ausgabe mit übertragen.
Also aus
1
Der Korb enthält <?php echo 1+1; ?> Birnen.
wird
1
Der Korb enthält 2 Birnen.
Normalerweise ist das bei Bilddateien aber kein Problem, bzw. man kann seine Dateien ja daraufhin testen und das störende Zeilenende entfernen.
Ja, ich weiß, heute muss man mindestens 3000% Overhead erzeugen, beispielsweise jede Funktion aus einer eigenen Datei includieren. Alles was nicht mindestes 300 Dateien und 50 Unterverzeichnisse benötigt, ist kein echtes Programm und darf keinesfalls so genannt werden. 30 gleichzeitig benutzte Frameworks und Extensions helfen dabei sehr. Die Kommentare müssen mindestens den fünffachen Platz beanspruchen wie der Code und am besten schreibt man einfach das genaue Gegenteil von dem hinein, was direkt aus dem Code ersichtlich wäre. Mit all diesen Grundsätzen ist zuverlässig sichergestellt, daß auch ja kein anderer mehr das Projekt überblicken kann und die Performance so richtig in den Keller geht. Anders lässt sich kein Bedarf nach neuer Server-Hardware generieren.
Sorry, aber das sind doch Stilfragen. Das macht sowieso jeder anders bzw. so wie er will oder wie es vorgegeben wird, danach kommt noch der irre Kleinkrieg bezüglich funktionaler oder objektorientierter Programmierung und natürlich würde jeder lieber sterben anstatt zuzugeben, daß die jeweils andere Möglichkeit auch ihre Vorteile und Daseinsberechtigung hat - was dazu führt, daß am Ende alle den gleichen Tod sterben, aber jeder auf seine eigene Weise.
Wie willst Du das anstellen? Für den Webserver ist grundsätzlich alles plain Text erstmal HTML, egal ob es .PHP heißt, .HTML, .XHTML, .PHTML oder irgendwie anders. Es ist noch nicht mal XHTML oder so, sondern das wird es alles erst durch das, was im Header steht und nur der Browser interessiert sich dafür, der Webserver nicht im Geringsten.
Edit: Ein Umweg würde vielleicht funktionieren, wenn man das gewünschte Bild mit PHP generiert, es auf die Serverplatte schreibt und dann vom Browser direkt vom Webserver laden lässt, dann ist die Bilddatei "sauber". Aber das wäre ein ziemlicher Sackstand, man braucht gleich dazu noch ein Script was da regelmäßig aufräumt, so daß man die Platte nicht zumüllt. Da entferne ich lieber manuell einen störenden Zeilenumbruch am Ende einer bilderzeugenden .PHP-Datei oder lasse das ?> Tag weg, auch wenn's irgendwie unsauber aussieht.
Es ist noch nicht mal XHTML oder so, sondern das
wird es alles erst durch das, was im Header steht und nur der Browser
interessiert sich dafür, der Webserver nicht im Geringsten.
Du übersiehst, daß PHP auf dem Webserver und nicht im Browser ausgeführt wird.
Wenn es um eine PHP-Datei geht, und nicht um in HTML eingebettetes PHP,
sollte das anders aussehen.
PHP Code macht nur in einer.php Datei Sinn weil die Codeblöcke ansonsten nicht vom PHP Modul des Webservers verarbeitet werden.
Das PHP Modul greift alle Blöcke raus, ersetzt diese durch eigene Ausgaben und schickt dann erst das gesamte Dokument als Output.
Dabei greift es die Blicke inkl. optional einem Zeilenumbruch heraus.
<?php...?>\n<?php...?>
Ist das selbe wie
<?php...?><?php...?>
Aber nicht wie
<?php...?> <?php...?>
\n steht hier für einen Zeilenumbruch. Ich weiß nicht, wieso ein echter Zeilenumbruch in diesem Forum nicht angezeigt wird.
Chat GPT Antwort auf die Frage "?>" am Ende einer PHP-Datei erforderlich?
Nein, das Zeichen "?>" am Ende einer PHP-Datei ist nicht erforderlich. In der Regel wird empfohlen, das schließende PHP-Zeichen "?>" am Ende einer PHP-Datei wegzulassen. Der Grund dafür ist, dass das Vorhandensein von Leerzeichen oder Zeilenumbrüchen nach dem schließenden PHP-Zeichen dazu führen kann, dass unerwünschter Text an die Ausgabe gesendet wird, was zu unerwartetem Verhalten führen kann. Da PHP-Dateien, die nur PHP-Code enthalten, am Ende keinen schließenden Tag benötigen, wird empfohlen, das schließende PHP-Zeichen wegzulassen, um solche Probleme zu vermeiden.
Google und Foren sollte man auch nicht einfach glauben.
Man sollte immer verifizieren...
Ob es beim Einbinden in Dateien ein Problem gibt, kannst du ja ChatGPT ebenfalls fragen und dieses dann ebenfalls natürlich überprüfen.
Oftmals Antwortet CGPT aber bereits auf die erste Frage richtig und das verifizieren geht dann schnell.
Bei Google sucht man dann ewig und muss es dann dennoch auch verifizieren.
Und den Beiträgen hier sollte man... Naja du weißt schon.
Und dennoch: ChatGPT ist mit Uraltdaten gefüttert. Ich glaube nicht daß "empfohlen wird auf das schließen des Php Blocks am Dateiende zu verzichten" noch aktuell ist. Quelle dafür?
Die Begründung dafür wurde ja genannt. Quellen findest du bestimmt bei google und nein, die Daten sind nicht "uralt"....
Sowas ändert sich aber auch nicht jedes Jahr...