Kann man PHP Header Angabe und Namespace Festlegung includen? – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self Kann man PHP Header Angabe und Namespace Festlegung includen? Sat, 25 Apr 20 12:53:24 Z https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769603#m1769603 https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769603#m1769603 <p>Hallo!</p> <p>Ich lagere Informationen wie Error Reporting, Internal Encoding, Zeitzonenfestlegung, usw. in eine externe Datei init.inc.php aus. Die eigentlichen PHP Ressourcen beginnen somit mit require_once(init.inc.php); … was auch wunderbar funktioniert.</p> <p>Meine Frage: Funktioniert das auch mit der Festlegung eines Namespaces und dem obligatorischen header('content-type:text/html; charset=UTF-8'); ??</p> <p>Kann ich das auch in mein ausgelagertes Skript schreiben oder MÜSSEN die Namespace Festlegung und die Headerangabe in der Ressource stehen, die dann auch in Folge zur Ausgabe einer HTML Seite zum Client geht?</p> <p>Danke für eine evt. Antwort oder einen Hinweis!</p> <p>Professor Hase</p> Kann man PHP Header Angabe und Namespace Festlegung includen? Sat, 25 Apr 20 13:09:07 Z https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769606#m1769606 https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769606#m1769606 <p>Hallo Professor,</p> <p>Header-Festlegungen gehen definitiv.</p> <p>Namespaces? Was meinst Du? PHP Namespaces? Ein namespace-Statement gilt meines Wissens nur für die Elemente der Datei, in der es steht.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> Kann man PHP Header Angabe und Namespace Festlegung includen? Sat, 25 Apr 20 13:23:38 Z https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769607#m1769607 https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769607#m1769607 <p>Hallo Rolf!</p> <p>Danke für die Antwort!</p> <p>Habe in der Zwischenzeit weiter herumgetestet. Also wenn das namespace Foo; im ausgelagerten Skript steht, das dann per require_once(); eingefügt wird, funktionieren meine Klassen (Methoden) auch dann, wenn in dieser Ressource die Namespace Angabe weggelassen wird.</p> <p>Also spricht das doch eher dafür, dass die Festlegung in der ausgelagerten Datei genügt, oder?</p> <p>Professor Hase</p> Kann man PHP Header Angabe und Namespace Festlegung includen? Sat, 25 Apr 20 13:31:27 Z https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769608#m1769608 https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769608#m1769608 <p>Hallo Professor,</p> <p>im Allgemeinen nicht. Gerade bei mir lokal mit PHP 7.1 probiert:</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">namespace</span> <span class="token package">Foo</span><span class="token punctuation">;</span> <span class="token keyword">include</span> <span class="token string double-quoted-string">"file2.inc"</span><span class="token punctuation">;</span> <span class="token keyword">function</span> <span class="token function-definition function">hallo</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"Foo - Hallo\n"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token function">hallo</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">welt</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </span></code></pre> <p>und file2.inc:</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">namespace</span> <span class="token package">Bar</span><span class="token punctuation">;</span> <span class="token keyword">function</span> <span class="token function-definition function">welt</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"Bar - Welt\n"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </span></code></pre> <p>Starte ich file1.php, findet er die welt-Funktion nicht (er würde nach \Foo\welt suchen). <code>Bar\welt</code> sucht nach <code>\Foo\Bar\welt</code> und geht auch schief. Ich muss sie schon als <code>\Bar\welt()</code> aufrufen.</p> <p>Es gibt ein paar Regeln nach denen PHP Namespaces durchsucht, vielleicht greift eine von denen bei Dir. Oder Du hast den Namespace mit <code>use</code> importiert.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> Kann man PHP Header Angabe und Namespace Festlegung includen? Sat, 25 Apr 20 13:46:51 Z https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769610#m1769610 https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769610#m1769610 <p>Hallo Rolf!</p> <p>Bei Deinem Beispiel hast Du ja einen weiteren Namespace für die eigentliche Ressource eingeführt.</p> <p>So hatte ich das nicht gemeint. Um bei Deinem Beispiel zu bleiben: Im Skript file2.inc steht namespace Bar; und in der Ressource, die die Ausgabe bildet, steht nur include "file2.inc"; - also OHNE irgend eine Namespace Angabe.</p> <p>So hatte ich das gemeint. Und das funktioniert offenbar.</p> <p>Professor Hase</p> <p>PS: Bei mir ist grade eine Folgefrage aufgetaucht: Sehe ich das richtig, dass die Angabe declare(strict_types = 1); zu Beginn eines Skripts lediglich dazu dient, dass ältere PHP Versionen, die mit diesem Feature nichts anfangen können, keine Probleme bereiten und die entsprechenden Hints ignorieren? Weil wenn ich bei einem PHP 7 Skript bei einer Funktion den Typ der zu übergebenen Variablen und/oder den der Ausgabe festlege, kommen bei Nichtbeachtung auf jeden Fall Fehlermeldungen. Unabhängig davon, ob declare(strict_types = 1); angegeben wurde oder nicht.</p> Kann man PHP Header Angabe und Namespace Festlegung includen? Sat, 25 Apr 20 15:17:12 Z https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769614#m1769614 https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769614#m1769614 <p>Hallo Professor,</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">include</span> <span class="token string double-quoted-string">"file2.inc"</span><span class="token punctuation">;</span> <span class="token keyword">function</span> <span class="token function-definition function">hallo</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"noname - Hallo\n"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token function">hallo</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">welt</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </span></code></pre> <p>und file2.inc:</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">namespace</span> <span class="token package">Bar</span><span class="token punctuation">;</span> <span class="token keyword">function</span> <span class="token function-definition function">welt</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"Bar - Welt\n"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </span></code></pre> <p>funktioniert auch nicht. In dem Fall würde in file1.php nach \welt gesucht, statt nach \Bar\welt.</p> <p>Es ist etwas anderes, wenn es so aussieht:</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">namespace</span> <span class="token package">Foo</span><span class="token punctuation">;</span> <span class="token keyword">include</span> <span class="token string double-quoted-string">"file2.inc"</span><span class="token punctuation">;</span> <span class="token keyword">function</span> <span class="token function-definition function">hallo</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"Foo - Hallo\n"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token function">hallo</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">welt</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </span></code></pre> <p>und file2.inc:</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">function</span> <span class="token function-definition function">welt</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"noname - Welt\n"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </span></code></pre> <p>Jetzt ist welt im Root-Namespace und der Aufruf erfolgt aus dem Foo-Namespace heraus. Und dann sucht PHP. Zuerst nach \Foo\welt, und dann automatisch auch nach \welt.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> Kann man PHP Header Angabe und Namespace Festlegung includen? Sat, 25 Apr 20 15:57:37 Z https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769615#m1769615 https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769615#m1769615 <p>Tach!</p> <blockquote> <p>PS: Bei mir ist grade eine Folgefrage aufgetaucht: Sehe ich das richtig, dass die Angabe declare(strict_types = 1); zu Beginn eines Skripts lediglich dazu dient, dass ältere PHP Versionen, die mit diesem Feature nichts anfangen können, keine Probleme bereiten und die entsprechenden Hints ignorieren?</p> </blockquote> <p>Ich vermute, dass du das nicht richtig siehst. Ältere Versionen haben in der Regel keine Ahnung davon, was in zukünftigen Versionen hinzugefügt wurde. Neue Elemente sehen sie deshalb als Sysntaxfehler an. Es sei denn, sie waren damals auch schon als reserviert bekannt, waren gültige Syntax, und wurden lediglich ignoriert. Neue Deklarationen können also nur neue Versionen steuern.</p> <blockquote> <p>Weil wenn ich bei einem PHP 7 Skript bei einer Funktion den Typ der zu übergebenen Variablen und/oder den der Ausgabe festlege, kommen bei Nichtbeachtung auf jeden Fall Fehlermeldungen. Unabhängig davon, ob declare(strict_types = 1); angegeben wurde oder nicht.</p> </blockquote> <p>Das sollte nicht der Fall sein. Ich hab das mit <a href="https://dev.to/robdwaller/how-php-type-declarations-actually-work-1mm5" rel="nofollow noopener noreferrer">jenen Beispielen</a> in der <a href="http://sandbox.onlinephpfunctions.com/" rel="nofollow noopener noreferrer">PHP Sandbox</a> probiert, und komme zu den dort aufgeführten Ergebnissen.</p> <p>dedlfix.</p> Kann man PHP Header Angabe und Namespace Festlegung includen? Sat, 25 Apr 20 16:10:49 Z https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769617#m1769617 https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769617#m1769617 <p>Hallo Rolf!</p> <p>Ich weiß jetzt, wo mein Denkfehler war und wieso ich deshalb alles falsch interpretiert hatte! Meine Ausgangs-Situation war:</p> <p>file2.inc:</p> <pre><code class="block"><?php Namespace Foo Class Bar { ... } $irgendwas = New Bar; ?> </code></pre> <p>seite.php:</p> <pre><code class="block"><?php require_once(file2.inc); $test = $irgendwas -> methode_xyz(); ?> </code></pre> <p>Da bringt $test ein Ergebnis. Klar! Die Instanz $irgendwas wurde ja in file2.inc gebildet, also im Foo Namensraum. Das hatte ich nicht bedacht und deshalb fälschlicherweise den Eindruck, es funktioniert auch ohne eine Namensraum Angabe in seite.php. Den Denkfehler sehe ich jetzt auch auf 2 weitere Arten: Im PHP Manual habe ich die <a href="https://www.php.net/manual/de/language.constants.predefined.php" rel="nofollow noopener noreferrer">Konstante NAMESPACE</a> gefunden. Die ergibt auf file2.inc 'Foo', auf Seite seite.php ist sie inhaltslos. Klar, weil eben kein Namensraum vorhanden ist. Selbst, wenn der im includeten Skript da ist. Und der 2. Beweis für meinen Trugschluss ist, dass eine weitere Klasse, die erstmalig in seite.php aufgerufen wird, selbst aber auch eine Namespace Angabe hat, zu einem Fehler führt. Die Klasse wird nicht gefunden.</p> <p>Conclusio: Die Angabe von Namespace muss explizit auf der Seite erfolgen, auf der der Namensraum gelten soll. Wird eine andere Datei mit Namensraum includet, dann wird dieser <em>nicht</em> (!!) automatisch übernommen, während die Angabe</p> <pre><code class="block">header('content-type:text/html; charset=UTF-8'); </code></pre> <p>in file2.inc stehen kann und dann auch für seite.php gilt. Vorausgesetzt natürlich, dass es bis zu dieser Zeile weder in file2.inc, noch in seite.php eine Ausgabe Richtung Client gegeben hat.</p> <p>Danke für Deine Hilfe! Somit ist meine diesbezügliche Frage beantwortet!</p> <p>Professor Hase</p> <p>PS: Bzgl. der anderen Sache mit den strict_types hat mir Dedlfix schon geantwortet, wie ich gerade sehe. Damit werde ich mich jetzt seperat beschäftigen.</p> Kann man PHP Header Angabe und Namespace Festlegung includen? Sat, 25 Apr 20 16:54:25 Z https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769622#m1769622 https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769622#m1769622 <p>Hi Dedlfix!</p> <p>Danke für Deine Antwort! Auf der <a href="https://dev.to/robdwaller/how-php-type-declarations-actually-work-1mm5" rel="nofollow noopener noreferrer">von Dir verlinkten Seite</a> war ich heute auch schon. Meine falsche Annahme mit den älteren PHP Versionen hatte ich wohl durch ein zu schnelles Lesen des Englischen Textes dort.</p> <blockquote> <p>Ältere Versionen haben in der Regel keine Ahnung davon, was in zukünftigen Versionen hinzugefügt wurde. Neue Elemente sehen sie deshalb als Sysntaxfehler an.</p> </blockquote> <p>Das ist eigentlich logisch, natürlich! Danke! Ich verstehe die Sache trotzdem nicht. Dort steht:</p> <blockquote> <p>Developers can turn strict types on by placing the declare(strict_types=1); method at the top of a PHP file. This implementation means that PHP will 'ignore' type hints and return types unless the declare(strict_types=1); statement appears at the top of the file.</p> </blockquote> <p>Und das mit dem "ignore" stimmt so einfach nicht. Zumindest nicht in jedem Fall. Nehmen wir das Beispiel auf der genannten Seite:</p> <pre><code class="block language-php"><span class="token keyword">function</span> <span class="token function-definition function">bar</span><span class="token punctuation">(</span><span class="token keyword type-hint">int</span> <span class="token variable">$foo</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword return-type">string</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$foo</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token variable">$result_1</span> <span class="token operator">=</span> <span class="token function">bar</span><span class="token punctuation">(</span><span class="token number">123</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Das gibt den String '123' zurück. Da wird also <em>gar nichts</em> ignoriert! Da wird umgewandelt. Aber zumindest kommt keine Fehlermeldung. Die kommt, wie auf der Seite richtigerweise steht, erst, wenn man das</p> <pre><code class="block language-php"><span class="token keyword">declare</span><span class="token punctuation">(</span>strict_types<span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>davor setzt. Dann kommt ein "Uncaught TypeError: Return value of bar() must be of the type string ..." zurück. OK, jetzt wandle ich die Funktion etwas um:</p> <pre><code class="block language-php"><span class="token keyword">function</span> <span class="token function-definition function">foo</span><span class="token punctuation">(</span><span class="token keyword type-hint">string</span> <span class="token variable">$bar</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword return-type">int</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$bar</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token variable">$result_2</span> <span class="token operator">=</span> <span class="token function">foo</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'test'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Und hier kommt nun <em>sofort</em> eine Fehlermeldung! Auch <em>ohne</em>, dass ich den Strict Type Modus explizit aktiviere! Das Resultat liefert sofort ein "Uncaught TypeError: Return value of foo() must be of the type int ..."!</p> <p>Es ist mir wirklich absolut unverständlich, warum es hier 2 verschiedene Reaktionen gibt beim Verarbeiten des Skripts. Und ich frage mich weiterhin, wozu das Aktivieren des Strict Type Modus nun gut sein soll, wenn der Alarm auch ohne die Zeile losgeht. (Zumindest bei Beispiel 2.)</p> <p>Zusammengefasst:</p> <p>1.) Wieso gibt es hier bei 2 gleich falschen Typenverwendungen unterschiedliches Error-Verhalten?</p> <p>2.) Warum wird in Beispiel 1 der Integer zu einem String umgewandelt, wenn der Modus nicht aktiviert ist? Wenn doch angeblich dann alles "ignoriert" wird!</p> <p>3.) Also was bringt die Modus-Aktivierung dann wirklich?</p> <p>Professor Hase</p> <p>PS: Ich bin anscheinend zu dämlich für dieses Forum! Ich schaffe es nicht, ein Syntax Highlighting des Codes in den Postings hinzubekommen! Die <a href="https://wiki.selfhtml.org/wiki/SELFHTML:Forum/Formatierung_der_Beitr%C3%A4ge#Code" rel="nofollow noopener noreferrer">"Erklärung" auf der Hilfeseite</a> ist <em>sowas</em> von unverständlich! Das ist nicht sehr intuitiv gelöst! </p> <p>Edit Rolf B: Jetzt stimmt's Hinter das einleitende ~~~ muss ein php</p> Kann man PHP Header Angabe und Namespace Festlegung includen? Sat, 25 Apr 20 17:23:11 Z https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769625#m1769625 https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769625#m1769625 <p>Tach!</p> <blockquote> <blockquote> <p>Developers can turn strict types on by placing the declare(strict_types=1); method at the top of a PHP file. This implementation means that PHP will 'ignore' type hints and return types unless the declare(strict_types=1); statement appears at the top of the file.</p> </blockquote> <p>Und das mit dem "ignore" stimmt so einfach nicht. Zumindest nicht in jedem Fall. Nehmen wir das Beispiel auf der genannten Seite:</p> <pre><code class="block language-php"><span class="token keyword">function</span> <span class="token function-definition function">bar</span><span class="token punctuation">(</span><span class="token keyword type-hint">int</span> <span class="token variable">$foo</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword return-type">string</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$foo</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token variable">$result_1</span> <span class="token operator">=</span> <span class="token function">bar</span><span class="token punctuation">(</span><span class="token number">123</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Das gibt den String '123' zurück. Da wird also <em>gar nichts</em> ignoriert! Da wird umgewandelt. Aber zumindest kommt keine Fehlermeldung.</p> </blockquote> <p>PHP ignoriert die Typen, also setzt sie nicht strikt durch und macht einfach eine Typumwandlung entsprechend der angegebenen Type Hints.</p> <blockquote> <pre><code class="block language-php"><span class="token keyword">function</span> <span class="token function-definition function">foo</span><span class="token punctuation">(</span><span class="token keyword type-hint">string</span> <span class="token variable">$bar</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword return-type">int</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$bar</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token variable">$result_2</span> <span class="token operator">=</span> <span class="token function">foo</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'test'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Und hier kommt nun <em>sofort</em> eine Fehlermeldung! Auch <em>ohne</em>, dass ich den Strict Type Modus explizit aktiviere! Das Resultat liefert sofort ein "Uncaught TypeError: Return value of foo() must be of the type int ..."!</p> </blockquote> <p>Ja, bei 'test', aber nicht bei 123 oder '123'. Und bei '123test' kommt auch nur eine Notice.</p> <p>Mit Type Hints ist PHP wohl etwas strenger, was das Kovertieren in andere Typen angeht als bei Umwandlungen ohne Type Hints. Beispielsweise lässt sich <code>echo (int)'test';</code> fehlermeldungslos ausführen, und das Ergebnis ist 0.</p> <blockquote> <p>Es ist mir wirklich absolut unverständlich, warum es hier 2 verschiedene Reaktionen gibt beim Verarbeiten des Skripts. Und ich frage mich weiterhin, wozu das Aktivieren des Strict Type Modus nun gut sein soll, wenn der Alarm auch ohne die Zeile losgeht. (Zumindest bei Beispiel 2.)</p> </blockquote> <p>Wenn du den Strict Mode aktivierst, wandelt PHP nicht selbständig die Typen.</p> <p>dedlfix.</p> Kann man PHP Header Angabe und Namespace Festlegung includen? Sat, 25 Apr 20 19:39:27 Z https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769630#m1769630 https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769630#m1769630 <p>Hallo Professor Hase,</p> <blockquote> <p>Ich schaffe es nicht, ein Syntax Highlighting des Codes in den Postings hinzubekommen! Die <a href="https://wiki.selfhtml.org/wiki/SELFHTML:Forum/Formatierung_der_Beitr%C3%A4ge#Code" rel="nofollow noopener noreferrer">"Erklärung" auf der Hilfeseite</a> ist <em>sowas</em> von unverständlich! Das ist nicht sehr intuitiv gelöst! </p> </blockquote> <p>Das Problem könnte sein, dass die Vorschau nur für eine bestimmte Auswahl an Sprachen (HTML, CSS und JavaScript) ein Syntax-Highlighting vornimmt, da in der Vorschau nur für diese Sprachen Regeln geladen werden und es für dich daher so wirkt, als würde die Syntax-Hervorhebung nicht funktionieren. Dafür funktioniert dann aber das Rendern der Vorschau auch ohne Anfragen an den Server.</p> <p>Mittels:</p> <pre><code class="block">~~~php <?php echo "test"; ?> ~~~ </code></pre> <p>Solltest du das Gewünschte erreichen:</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"test"</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> </code></pre> <p>Gruß<br> Julius</p> Kann man PHP Header Angabe und Namespace Festlegung includen? Sun, 26 Apr 20 05:33:18 Z https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769638#m1769638 https://forum.selfhtml.org/self/2020/apr/25/kann-man-php-header-angabe-und-namespace-festlegung-includen/1769638#m1769638 <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token variable">$test</span> <span class="token operator">=</span> <span class="token variable">$this</span> <span class="token operator">-></span> <span class="token property">checkSyntaxHighlighting</span><span class="token punctuation">;</span> <span class="token variable">$antwort</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token variable">$test</span><span class="token punctuation">)</span> <span class="token operator">?</span> <span class="token string single-quoted-string">'Danke Julius!'</span> <span class="token punctuation">:</span> <span class="token string single-quoted-string">'Geht noch immer nicht!'</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token variable">$antwort</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> </code></pre>