1
0
mirror of https://github.com/php/doc-de.git synced 2026-03-23 23:02:13 +01:00
Files
archived-doc-de/language/basic-syntax.xml
Martin Samesch 05941b13bf Sync with EN
2025-05-03 21:20:43 +02:00

296 lines
9.9 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 0e618211e53c66f33762be225a4d57c08ef4b2f7 Maintainer: cmb Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="language.basic-syntax" xmlns="http://docbook.org/ns/docbook" annotations="interactive">
<title>Grundlagen der Syntax</title>
<sect1 xml:id="language.basic-syntax.phptags">
<title>PHP-Tags</title>
<para>
Wenn PHP eine Datei verarbeitet, erkennt es die öffnenden und schließenden
Tags <literal>&lt;?php</literal> und <literal>?&gt;</literal>, um den
Bereich abzugrenzen, in dem PHP-Code ausgeführt wird. Inhalte außerhalb
dieser Tags werden vom PHP-Parser ignoriert, so dass PHP nahtlos in
verschiedene Dokumenttypen integriert werden kann.
</para>
<para>
Nach <literal>&lt;?php</literal> muss ein Whitespace-Zeichen (Leerzeichen,
Tabulator oder Zeilenumbruch) folgen, um eine korrekte Trennung der Token
zu gewährleisten.
Wird dieses Zeichen weggelassen, führt dies zu einem Syntaxfehler.
</para>
<para>
PHP kennt außerdem den kurzen Ausgabe-Tag <literal>&lt;?=</literal>, der
eine Kurzform für <code>&lt;?php echo</code> ist.
</para>
<para>
<example>
<title>Öffnende und schließende PHP-Tags</title>
<programlisting role="php">
<![CDATA[
1. <?php echo 'Verwenden Sie diese Tags, wenn Sie PHP-Code in XHTML- oder
XML-Dokumenten ausgeben wollen'; ?>
2. Sie können den kurzen echo-Tag für die
<?= 'Ausgabe dieser Zeichenkette' ?> verwenden.
Es ist äquivalent zur <?php echo 'Ausgabe dieser Zeichenkette' ?>.
3. <? echo 'dieser Code ist innerhalb von kurzen Tags, wird aber nur '.
'funktionieren, wenn short_open_tag aktiviert ist'; ?>
]]>
</programlisting>
</example>
</para>
<para>
Kurze Tags (Beispiel drei) sind standardmäßig verfügbar, können aber
entweder über die Anweisung
<link linkend="ini.short-open-tag">short_open_tag</link> der
&php.ini;-Konfigurationsdatei deaktiviert werden oder sind standardmäßig
deaktiviert, wenn PHP mit der Konfigurationsanweisung
<option>--disable-short-tags</option> gebaut wird.
</para>
<para>
<note>
<para>
Da kurze Tags deaktiviert werden können, wird für maximale
Kompatibilität empfohlen, nur die normalen Tags (<code>&lt;?php
?&gt;</code> und <code>&lt;?= ?&gt;</code>) zu verwenden.
</para>
</note>
</para>
<para>
Wenn eine Datei mit PHP-Code endet, ist es besser, den schließenden
PHP-Tag am Ende der Datei wegzulassen. Dies verhindert, dass versehentlich
Leerzeichen oder neue Zeilen nach dem schließenden Tag eingefügt werden,
was unerwünschte Effekte verursachen kann, da PHP mit der Ausgabe beginnt,
obwohl der Programmierer an dieser Stelle des Skripts nicht die Absicht
hat, eine Ausgabe zu senden.
</para>
<para>
<example>
<title>Datei nur mit PHP-Code</title>
<programlisting role="php">
<![CDATA[
<?php
echo "Hallo Welt\n";
// ... mehr Code
echo "Letzte Anweisung\n";
// das Skript endet hier ohne schließenden PHP-Tag
]]>
</programlisting>
</example>
</para>
</sect1>
<sect1 xml:id="language.basic-syntax.phpmode">
<title>Den HTML-Bereich verlassen</title>
<para>
Alles außerhalb eines Paares von öffnenden und schließenden Tags wird vom
PHP-Parser ignoriert, was es ermöglicht, dass PHP-Dateien gemischten
Inhalt haben können. Dadurch kann PHP in HTML-Dokumente eingebettet
werden, zum Beispiel um Templates zu erstellen.
</para>
<para>
<example>
<title>PHP in HTML einbetten </title>
<programlisting role="php">
<![CDATA[
<p>Das hier wird von PHP ignoriert, und vom Browser angezeigt.</p>
<?php echo 'Wohingegen das hier geparst wird.'; ?>
<p>Dies wird ebenfalls von PHP ignoriert, und vom Browser angezeigt.</p>
]]>
</programlisting>
</example>
</para>
<para>
Dies funktioniert wie erwartet, da der PHP-Interpreter, wenn er auf einen
schließenden ?&gt;-Tag trifft, einfach beginnt, alles mit Ausnahme des
direkt folgenden Zeilenumbruchs (siehe auch den Abschnitt <link
linkend="language.basic-syntax.instruction-separation">Abgrenzung von
Anweisungen</link>) auszugeben, bis er wieder auf einen öffnenden Tag
stößt. Das gilt nicht in der Mitte einer bedingten Anweisung. In diesem
Fall ermittelt der Interpreter das Resultat der Bedingung, bevor er
entscheidet, was übersprungen wird. Siehe das folgende Beispiel.
</para>
<para>
Verwendung von Strukturen mit Bedingungen
<example>
<title>Fortgeschrittene Ausgabe unter Verwendung von Bedingungen</title>
<programlisting role="php">
<![CDATA[
<?php if ($expression == true): ?>
Dies wird angezeigt, wenn der Ausdruck wahr ist.
<?php else: ?>
Andernfalls wird dies angezeigt.
<?php endif; ?>
]]>
</programlisting>
</example>
In diesem Beispiel überspringt PHP die Blöcke, in denen die Bedingung
nicht erfüllt ist, obwohl diese außerhalb der öffnenden/schließenden
PHP-Tags liegen; PHP überspringt sie entsprechend der Bedingung, da der
PHP-Interpreter Blöcke innerhalb einer nicht erfüllten Bedingung
überspringt.
</para>
<para>
Für die Ausgabe von großen Textblöcken ist der Ausstieg aus dem
Parse-Modus generell effizienter, als den gesamten Text durch
<function>echo</function> oder <function>print</function> zu jagen.
</para>
<para>
<note>
<para>
Wenn PHP in XML oder XHTML eingebettet wird, müssen die normalen
<code>&lt;?php ?&gt;</code>-PHP-Tags verwenden werden, um die Standards
einzuhalten.
</para>
</note>
</para>
</sect1>
<sect1 xml:id="language.basic-syntax.instruction-separation">
<title>Die Trennung von Anweisungen</title>
<para>
Wie in C oder Perl müssen Anweisungen auch in PHP am Ende mit einem
Semikolon abgeschlossen werden. Der abschließende Tag eines PHP-Codeblocks
impliziert automatisch ein Semikolon; die letzte Zeile eines PHP-Blocks
benötigt kein Semikolon am Ende. Der schließende Tag des Blocks schließt
den unmittelbar folgenden Zeilenumbruch, falls vorhanden, ein.
</para>
<para>
<example>
<title>Beispiel für den schließenden Tag, der den abschließenden Zeilenumbruch einschließt</title>
<programlisting role="php">
<![CDATA[
<?php echo "Etwas Text"; ?>
Kein Zeilenumbruch
<?= "Aber jetzt ein Zeilenumbruch" ?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Etwas TextKein Zeilenumbruch
Aber jetzt ein Zeilenumbruch
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Beispiele für das Starten und Beenden des PHP-Parsers</title>
<programlisting role="php">
<![CDATA[
<?php
echo "Dies ist ein Test\n";
?>
<?php echo "Dies ist ein Test\n" ?>
<?php echo "Wir ließen den letzten schließenden Tag weg\n";
]]>
</programlisting>
</example>
</para>
<para>
<note>
<para>
Der schließende Tag eines PHP-Blocks am Ende einer Datei ist optional,
und in einigen Fällen ist das Weglassen hilfreich, wenn Sie
<function>include</function> oder <function>require</function>
verwenden, so dass ungewollte Whitespaces nicht am Ende einer Datei
auftreten und Sie noch im Stande sind, später weitere Header an die
Antwort hinzuzufügen. Es ist ebenfalls praktisch, wenn Sie die
Ausgabepufferung verwenden und keine ungewollten Whitespaces am Ende
eines durch die eingebundenen Dateien erzeugten Teils sehen wollen.
</para>
</note>
</para>
</sect1>
<sect1 xml:id="language.basic-syntax.comments">
<title>Kommentare</title>
<para>
PHP unterstützt 'C'-, 'C++'- und Unix-Shell-artige (Perl-artige)
Kommentare. Zum Beispiel:
</para>
<para>
<example>
<title>Kommentare</title>
<programlisting role="php">
<![CDATA[
<?php
echo "Dies ist ein Test\n"; // Dies ist ein einzeiliger Kommentar im C++-Stil
/* Dies ist ein mehrzeiliger Kommentar
noch eine weitere Kommentarzeile */
echo "Dies ist noch ein Test\n";
echo "... und ein letzter Test\n"; # Dies ist ein einzeiliger Kommentar im Shell-Stil
?>
]]>
</programlisting>
</example>
</para>
<simpara>
Die "einzeiligen" Kommentar-Arten kommentieren sämtlichen Text bis zum
Zeilenende oder bis zum Ende des aktuellen PHP-Blocks aus, je nachdem, was
zuerst eintritt. Das bedeutet, das HTML-Code nach <literal>// ...
?&gt;</literal> oder <literal># ... ?&gt;</literal> ausgegeben WIRD: ?&gt;
beendet den PHP-Modus und kehrt in den HTML-Modus zurück, so dass sich
<literal>//</literal> oder <literal>#</literal> nicht darauf auswirkt.
</simpara>
<para>
<example>
<title>Einzeilige Kommentare</title>
<programlisting role="php">
<![CDATA[
<h1>Dies ist ein <?php # echo 'einfaches';?> Beispiel.</h1>
<p>Obige Überschrift wird lauten: 'Dies ist ein Beispiel.'.
]]>
</programlisting>
</example>
</para>
<simpara>
'C'-artige Kommentare enden am ersten Vorkommen von <literal>*/</literal>.
Achten Sie daher darauf, 'C'-artige Kommentare nicht zu verschachteln.
Dieser Fehler entsteht leicht, wenn Sie längere Code-Blöcke
auskommentieren.
</simpara>
<para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
/*
echo 'Dies ist ein Test'; /* Dieser Kommentar wird ein Problem verursachen. */
*/
?>
]]>
</programlisting>
</informalexample>
</para>
</sect1>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->