tag:forum.selfhtml.org,2005:/self PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? – SELFHTML-Forum 2022-06-25T12:47:58Z https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799126#m1799126 borisbaer http://54598532.swh.strato-hosting.eu/ 2022-05-14T16:06:04Z 2022-05-14T16:06:04Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Hallo zusammen,</p> <p>ich möchte verhindern, dass ich bei den im Bild unten dargestellten Funktionen jedes Mal die Variable <code>$current</code> erneut definieren muss. Meine Versuche, diese Variable von „außen“ einzuspeisen (wie es bspw. <a href="https://www.youtube.com/watch?v=et1aVZWMvVE" rel="nofollow noopener noreferrer">dieses Tutorial</a> zeigt) waren leider nicht von Erfolg gekrönt.</p> <p><a href="/images/d874328e-d39e-11ec-a056-b42e9947ef30.jpg" rel="noopener noreferrer"><img src="/images/d874328e-d39e-11ec-a056-b42e9947ef30.jpg?size=medium" alt="" loading="lazy"></a></p> <p>Ich wäre für jede Hilfe dankbar!</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799127#m1799127 Rolf B 2022-05-14T16:10:02Z 2022-05-14T16:10:02Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Hallo borisbaer,</p> <p>bitte stelle den Sourcecode als Text zur Verfügung. Für den Screenshot sind meine Augen ungeeignet.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799137#m1799137 Rolf B 2022-05-14T18:45:18Z 2022-05-14T18:45:18Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Hallo borisbaer,</p> <p>du kannst die Generierung der "current page" Markierung in eine Funktion auslagern. So zum Beispiel:</p> <pre><code class="block"> function mark_current_subpage($subpage_id) { return (($_GET['subpage'] ?? 'game') == $subpage_id) ? "aria-current='page'" : ""; } function game() { ?> <a <?= mark_current_subpage('game') ?> href="game">Spiel</a> <?php } </code></pre> <p>Das ?? ist der "Null-Koaleszenz" Operator (null coalescing). Er liefert einen Defaultwert, wenn ein Wert NULL ist oder ein Array-Eintrag nicht existiert. Ich habe 'game' als Defaultwert gesetzt, weil das bei Dir die Defaultseite zu sein scheint, wenn als subpage nichts geliefert wird.</p> <p>Auf diese Weise lässt sich die Generierung der current-page Markierung auf einen Einzeiler reduzieren. Ob Du nun Gunnars Vorschlag folgst und <code>aria-current='page'</code> setzt oder bei <code>class='current'</code> bleibst, ist deine Entscheidung.</p> <p>Im CSS kannst Du das aria-current Attribut so prüfen:</p> <pre><code class="block language-css"><span class="token selector">a[aria-current=page]</span> <span class="token punctuation">{</span> ... <span class="token punctuation">}</span> </code></pre> <p>Statt in einer Funktion jedesmal neu zu ermitteln, ob subpage gesetzt ist, könntest Du das auch einmal tun, an der Stelle, wo Du das Menü generierst. Ob das sinnvoll ist, hängt davon ab, ob das nur eine einzige Stelle ist oder ob sich das durch den Code verteilt.</p> <p>Aber wenn's nur eine Stelle ist, kannst Du den Namen der angeforderten Subpage einmal ermitteln und dann den Funktionen, die den Link erzeugen, als Parameter übergeben.</p> <p>ODER Du machst eine Klasse, die die Menü-Methoden enthält, und setzt dort den Namen der aktuellen Seite als Eigenschaft ein.</p> <p>Du hast die Wahl der Qual.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799128#m1799128 borisbaer http://54598532.swh.strato-hosting.eu/ 2022-05-14T16:11:07Z 2022-05-14T16:11:07Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Hallo Rolf,</p> <p>klar doch:</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token comment">// n a v . i n c</span> <span class="token keyword">function</span> <span class="token function-definition function">beginNav</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>nav</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>page<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token punctuation">}</span> <span class="token keyword">function</span> <span class="token function-definition function">endNav</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>nav</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token punctuation">}</span> <span class="token keyword">function</span> <span class="token function-definition function">game</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$current</span> <span class="token operator">===</span> <span class="token keyword type-declaration">null</span> <span class="token operator">||</span> <span class="token variable">$current</span> <span class="token operator">===</span> <span class="token string single-quoted-string">'game'</span> <span class="token operator">?</span> <span class="token string single-quoted-string">'current'</span> <span class="token punctuation">:</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>game<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Spiel<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token punctuation">}</span> <span class="token keyword">function</span> <span class="token function-definition function">releases</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$current</span> <span class="token operator">===</span> <span class="token string single-quoted-string">'releases'</span> <span class="token operator">?</span> <span class="token string single-quoted-string">'current'</span> <span class="token punctuation">:</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>releases<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Releases<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token punctuation">}</span> <span class="token keyword">function</span> <span class="token function-definition function">merchandise</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$current</span> <span class="token operator">===</span> <span class="token string single-quoted-string">'merchandise'</span> <span class="token operator">?</span> <span class="token string single-quoted-string">'current'</span> <span class="token punctuation">:</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>merchandise<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Me<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">letter-spacing</span><span class="token punctuation">:</span> .115em<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>r<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>cha<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">letter-spacing</span><span class="token punctuation">:</span> .105em<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>n<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>dise<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token punctuation">}</span> <span class="token keyword">function</span> <span class="token function-definition function">guides</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$current</span> <span class="token operator">===</span> <span class="token string single-quoted-string">'guides'</span> <span class="token operator">?</span> <span class="token string single-quoted-string">'current'</span> <span class="token punctuation">:</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>guides<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">letter-spacing</span><span class="token punctuation">:</span> .105em<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>Gu<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>ides<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token punctuation">}</span> <span class="token keyword">function</span> <span class="token function-definition function">emulation</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$current</span> <span class="token operator">===</span> <span class="token string single-quoted-string">'emulation'</span> <span class="token operator">?</span> <span class="token string single-quoted-string">'current'</span> <span class="token punctuation">:</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>emulation<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Emula<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">letter-spacing</span><span class="token punctuation">:</span> .115em<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>t<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>ion<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token punctuation">}</span> <span class="token keyword">function</span> <span class="token function-definition function">mods</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$current</span> <span class="token operator">===</span> <span class="token string single-quoted-string">'mods'</span> <span class="token operator">?</span> <span class="token string single-quoted-string">'current'</span> <span class="token punctuation">:</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>mods<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Mods<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token punctuation">}</span> <span class="token keyword">function</span> <span class="token function-definition function">maps</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$current</span> <span class="token operator">===</span> <span class="token string single-quoted-string">'maps'</span> <span class="token operator">?</span> <span class="token string single-quoted-string">'current'</span> <span class="token punctuation">:</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>maps<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Maps<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token punctuation">}</span> <span class="token keyword">function</span> <span class="token function-definition function">savegame</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$current</span> <span class="token operator">===</span> <span class="token string single-quoted-string">'savegame'</span> <span class="token operator">?</span> <span class="token string single-quoted-string">'current'</span> <span class="token punctuation">:</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>savegame<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>S<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">letter-spacing</span><span class="token punctuation">:</span> .105em<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>a<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>vegame<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token punctuation">}</span> </span></code></pre> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799130#m1799130 Der Martin 2022-05-14T16:44:16Z 2022-05-14T16:45:24Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Hallo,</p> <blockquote> <p>bitte stelle den Sourcecode als Text zur Verfügung.</p> </blockquote> <p>das wäre mal ein Anfang, aber noch lange nicht ausreichend.</p> <blockquote> <p>Für den Screenshot sind meine Augen ungeeignet.</p> </blockquote> <p>Meine auch. In schwarz-blau-gelbem Pixelbrei eine Schrift mit etwa 1.5px Größe entziffern zu wollen, ist völlig hoffnungslos.</p> <p>Und darüber hinaus: Beschreibe bitte, was du eigentlich vorhast - also nicht technisch, sondern was du eigentlich <em>erreichen willst</em>. Das Folgeposting mit dem Quellcode gibt leider keinerlei Aufschluss, wofür der Code gut sein soll oder was er eigentlich tun soll.</p> <p>Einen schönen Tag noch<br>  Martin</p> <div class="signature">-- <br> Мир для України. </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799684#m1799684 Raketenwilli 2022-06-09T10:47:26Z 2022-06-09T11:16:46Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Du hast da einen Konstruktionsfehler. Die Funktionen lassen sich zu einer zusammenfassen, bei denen Du 2 Werte übergibst: Das Link-Ziel und den Link-Text.</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">getNavLink</span><span class="token punctuation">(</span> <span class="token variable">$LinkTarget</span><span class="token punctuation">,</span> <span class="token variable">$Linktext</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token keyword">isset</span><span class="token punctuation">(</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$LinkTarget</span> <span class="token operator">==</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'class="current" '</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$LinkTarget</span> <span class="token operator">==</span> <span class="token string single-quoted-string">'game'</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'class="current" '</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> <span class="token string single-quoted-string">'<a '</span> <span class="token operator">.</span> <span class="token variable">$current</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'href="'</span> <span class="token operator">.</span> <span class="token variable">$LinkTarget</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'">'</span> <span class="token operator">.</span> <span class="token variable">$Linktext</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'</a>'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> </code></pre> <p>Im Template-Teil dann:</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">getNavLink</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'game'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Game'</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> <span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">getNavLink</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'releases'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Releases'</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> <span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">getNavLink</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'merchandise'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Me<span style="letter-spacing: .115em;">r</span>cha<span style="letter-spacing: .105em;">n</span>dise'</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> </code></pre> <p><strong>Das ist doch viel einfacher - oder?</strong></p> <p>Ich habe hier mal die wichtigen Anmerkungen von Gunnar außer Acht gelassen… Aber von der wilden Durchmischung von HTML, CSS und PHP musst Du dringend weg, weil Du dabei das jeweilige Ziel aus den Augen verlierst <strong>und es Dir selbst schwer machst.</strong></p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799131#m1799131 borisbaer http://54598532.swh.strato-hosting.eu/ 2022-05-14T16:56:01Z 2022-05-14T16:56:01Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Hallo Martin,</p> <p>sorry, wenn das nicht klar geworden ist.</p> <p>Also, in dem obigen Quellcode definiere ich bei jeder function (außer den ersten beiden) die Variable <code>$current</code>:</p> <pre><code class="block language-php"><span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>Das tue ich, weil ich im Folgenden diese Variable benötige, nämlich bspw. an dieser Stelle:</p> <pre><code class="block language-php"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$current</span> <span class="token operator">===</span> <span class="token string single-quoted-string">'releases'</span> <span class="token operator">?</span> <span class="token string single-quoted-string">'current'</span> <span class="token punctuation">:</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>releases<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Releases<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> </code></pre> <p>Wenn also der aktuelle URL-Parameter mit dem jeweiligen if clause für <code>$current</code> übereinstimmt, dann bekommt dieser Link die class <code>current</code>, wird also hervorgehoben.</p> <p>Der ganze Quellcode wird übrigens per php include eingefügt und wenn ich versuche, die Variable <code>$current</code> als globale Variable außerhalb der function zu definieren, dann kommt die Fehlermeldung, die Variable <code>$current</code> sei nicht definiert, sprich die function kommt nicht an diese globale Variable ran und ich frage mich, warum.</p> <p>Ich hoffe, das war etwas verständlicher.</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799133#m1799133 Der Martin 2022-05-14T17:21:02Z 2022-05-14T17:21:02Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Hallo borisbaer,</p> <blockquote> <p>sorry, wenn das nicht klar geworden ist.</p> </blockquote> <p>alles gut - das ist ein typischer Fall von Betriebsblindheit: Du kennst dein Projekt, du kennst deinen Code, und du weißt, was du an welcher Stelle und mit welcher Methode erreichen willst. Andere wissen das nicht und müssen raten.</p> <blockquote> <p>Also, in dem obigen Quellcode definiere ich bei jeder function (außer den ersten beiden) die Variable <code>$current</code>:</p> <pre><code class="block language-php"><span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>Das tue ich, weil ich im Folgenden diese Variable benötige, nämlich bspw. an dieser Stelle:</p> <pre><code class="block language-php"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$current</span> <span class="token operator">===</span> <span class="token string single-quoted-string">'releases'</span> <span class="token operator">?</span> <span class="token string single-quoted-string">'current'</span> <span class="token punctuation">:</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>releases<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Releases<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> </code></pre> </blockquote> <p>Das schreit doch nach einer globalen Definition.</p> <blockquote> <p>Der ganze Quellcode wird übrigens per php include eingefügt und wenn ich versuche, die Variable <code>$current</code> als globale Variable außerhalb der function zu definieren, dann kommt die Fehlermeldung, die Variable <code>$current</code> sei nicht definiert, sprich die function kommt nicht an diese globale Variable ran und ich frage mich, warum.</p> </blockquote> <p>Hast du denn auch daran gedacht, sie mit dem Schlüsselwort <strong>global</strong> <a href="https://www.php.net/language.variables.scope" rel="nofollow noopener noreferrer">in die Funktion(en) zu importieren</a>?</p> <p>Aber Funktionen, die auf globale Variablen zugreifen, sind sowieso unschön. Wie wär's, wenn du $current im globalen Scope definierst und als Parameter an die Funktionen übergibst, die diesen Wert brauchen? Dann wäre nur im globalen Scope, der ja sowieso alles zusammenklebt, ein bisschen "Magic", aber alle Funktionen wären autark.</p> <p>Einen schönen Tag noch<br>  Martin</p> <div class="signature">-- <br> Мир для України. </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799136#m1799136 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2022-05-14T18:14:23Z 2022-05-14T19:51:13Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>@@borisbaer</p> <blockquote> <pre><code class="block language-php"><span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>Das tue ich, weil ich im Folgenden diese Variable benötige, nämlich bspw. an dieser Stelle:</p> <pre><code class="block language-php"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$current</span> <span class="token operator">===</span> <span class="token string single-quoted-string">'releases'</span> <span class="token operator">?</span> <span class="token string single-quoted-string">'current'</span> <span class="token punctuation">:</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>releases<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Releases<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> </code></pre> </blockquote> <p>Das Umkopieren von <code class="language-php"><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span></code> in eine Variable macht keinen Sinn. Du verwendest einfach bei jedem Vergleich <code class="language-php"><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span></code> und gut ist.</p> <blockquote> <p>Wenn also der aktuelle URL-Parameter mit dem jeweiligen if clause für <code>$current</code> übereinstimmt, dann bekommt dieser Link die class <code>current</code>, wird also hervorgehoben.</p> </blockquote> <p><a href="https://tink.uk/using-the-aria-current-attribute/" rel="nofollow noopener noreferrer">Verwende <code>aria-current="page"</code></a>.</p> <p>Eine Klasse <code>current</code> brauchst du dann nicht; du kannst den Attributselektor <code class="language-css">[aria-current=<span class="token string">"page"</span>]</code> zum Stylen verwenden. (Ein Klassenselektor ist auch nur eine andere Schreibweise für einen Attributselektor.)</p> <p>Was du nicht tun solltest: die aktuelle Seite verlinken. Stattdessen den Link auf den Hauptinhalt setzen (also genau dorthin, wo auch der <a href="https://blog.selfhtml.org/2018/jul/15/skipper-ahoj" rel="noopener noreferrer">Skip-Link</a> hinführt).</p> <p>Live und in Schwarz/Weiß zu sehen, <a href="https://bittersmann.de/startrek/series/tos" rel="nofollow noopener noreferrer">wo nie ein Mensch zuvor gewesen ist</a>. Das <a href="https://bittersmann.de/startrek/series/index.phps" rel="nofollow noopener noreferrer">PHP-Script</a>, das die Seiten generiert, kann man sich auch ansehen.</p> <p>Ich hab letztens was darüber erzählt, zu sehen ist das auf <a href="https://noti.st/gunnarbittersmann/HtsntM/til-where-no-one-has-gone-before#sLxpibG" rel="nofollow noopener noreferrer">Folie 7</a>.</p> <p>Wenn es dir nicht behagt, wiederholt <code class="language-php"><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span></code> zu verwenden und damit immer wieder dasselbe zu tun, kannst du das auch mit einer Schleife machen; so in etwa:</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token variable">$subpages</span> <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token punctuation">[</span> <span class="token string single-quoted-string">'title'</span> <span class="token operator">=></span> <span class="token string single-quoted-string">'Spiel'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'path'</span> <span class="token operator">=></span> <span class="token string single-quoted-string">'game'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span> ⋮ <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>nav</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>ul</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">foreach</span> <span class="token punctuation">(</span><span class="token variable">$subpages</span> <span class="token keyword">as</span> <span class="token variable">$subpage</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>li</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token variable">$subpage</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'path'</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token delimiter important">?></span></span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>#main<span class="token punctuation">"</span></span> <span class="token attr-name">aria-current</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>page<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">elseif</span><span class="token punctuation">:</span> <span class="token delimiter important">?></span></span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$subpage['path']<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">endif</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span></span> <span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">echo</span> <span class="token function">htmlspecialchars</span><span class="token punctuation">(</span><span class="token variable">$subpage</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'title'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>li</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">endforeach</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>ul</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>nav</span><span class="token punctuation">></span></span> </code></pre> <p lang="uk"> Живіть довго і процвітайте</p> <div class="signature">-- <br> <em lang="en">When the power of love overcomes the love of power the world will know peace.</em><br> — Jimi Hendrix </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799148#m1799148 borisbaer http://54598532.swh.strato-hosting.eu/ 2022-05-15T11:55:21Z 2022-05-15T11:55:49Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Hallo Martin,</p> <blockquote> <p>Das schreit doch nach einer globalen Definition.</p> </blockquote> <blockquote> <p>Hast du denn auch daran gedacht, sie mit dem Schlüsselwort <strong>global</strong> <a href="https://www.php.net/language.variables.scope" rel="nofollow noopener noreferrer">in die Funktion(en) zu importieren</a>?</p> </blockquote> <p>habe ich bisher nicht versucht, da <a href="https://www.php.net/manual/de/reserved.variables.globals.php" rel="nofollow noopener noreferrer">hier</a> einem davon abgeraten wird, wenn ich das richtig verstehe: <em>Seit PHP 8.1.0 wird der Schreibzugriff auf das gesamte $GLOBALS-Array nicht mehr unterstützt.</em></p> <blockquote> <p>Aber Funktionen, die auf globale Variablen zugreifen, sind sowieso unschön. Wie wär's, wenn du $current im globalen Scope definierst und als Parameter an die Funktionen übergibst, die diesen Wert brauchen? Dann wäre nur im globalen Scope, der ja sowieso alles zusammenklebt, ein bisschen "Magic", aber alle Funktionen wären autark.</p> </blockquote> <p>Also, übergeben würde ich den Paramter dann so, oder?</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">game</span><span class="token punctuation">(</span><span class="token variable">$current</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$current</span> <span class="token operator">===</span> <span class="token keyword type-declaration">null</span> <span class="token operator">||</span> <span class="token variable">$current</span> <span class="token operator">===</span> <span class="token string single-quoted-string">'game'</span> <span class="token operator">?</span> <span class="token string single-quoted-string">'current'</span> <span class="token punctuation">:</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>game<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Spiel<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token punctuation">}</span> </span></code></pre> <p>Aber wo ist denn dieser global scope? Ich bin noch nicht wirklich sehr vertraut mit PHP. In JavaScript wäre er ja außerhalb aller functions, aber bei PHP habe ich keine Ahnung.</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799143#m1799143 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2022-05-15T05:29:51Z 2022-05-15T05:29:51Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>@@Gunnar Bittersmann</p> <blockquote> <pre><code class="block language-php"> href<span class="token operator">=</span><span class="token string double-quoted-string">"<span class="token interpolation"><span class="token variable">$subpage</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'path'</span><span class="token punctuation">]</span></span>"</span> </code></pre> </blockquote> <p>Na so’n Quatsch. Das sollte heißen:</p> <pre><code class="block language-php"> href="<span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">echo</span> <span class="token variable">$subpage</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'path'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span>" </code></pre> <blockquote> <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 function">htmlspecialchars</span><span class="token punctuation">(</span><span class="token variable">$subpage</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'title'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> </code></pre> </blockquote> <p>Der Beispielcode ist inkonsistent.</p> <p>Wenn sichergestellt ist, dass der Inhalt von <code class="language-php"><span class="token variable">$subpages</span></code> vollständig unter Kontrolle der Seitenautoren ist und da keine Daten von außerhalb reinkommen können, dann muss <code class="language-php"><span class="token variable">$subpage</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'title'</span><span class="token punctuation">]</span></code> nicht durch <code class="language-php"><span class="token function">htmlspecialchars</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code> laufen.</p> <p>Sollte das jedoch nicht der Fall sein, dann muss auch <code class="language-php"><span class="token variable">$subpage</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'path'</span><span class="token punctuation">]</span></code> abgesichert werden:</p> <pre><code class="block language-php"> href="<span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">echo</span> <span class="token function">htmlspecialchars</span><span class="token punctuation">(</span><span class="token variable">$subpage</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'path'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span>" </code></pre> <p lang="uk"> Живіть довго і процвітайте</p> <div class="signature">-- <br> <em lang="en">When the power of love overcomes the love of power the world will know peace.</em><br> — Jimi Hendrix </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799144#m1799144 borisbaer http://54598532.swh.strato-hosting.eu/ 2022-05-15T08:22:36Z 2022-05-15T08:22:36Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Hallo Gunnar,</p> <blockquote> <p>Das Umkopieren von <code class="language-php"><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span></code> in eine Variable macht keinen Sinn. Du verwendest einfach bei jedem Vergleich <code class="language-php"><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span></code> und gut ist.</p> </blockquote> <p>das habe ich anfangs sogar gemacht, aber dann wurde immer eine Fehlermeldung angezeigt, wenn der URL-Parameter <em>subpage</em> oben leer war, also bspw. <em>http://games.local/games/demons-souls/</em> statt <em>http://games.local/games/demons-souls/games</em>. Die Fehlermeldung lautet:</p> <p><em>Warning: Undefined array key current</em></p> <p>Sobald ein URL-Parameter drin steht, funktioniert es wieder ohne Fehlermeldung.</p> <blockquote> <p><a href="https://tink.uk/using-the-aria-current-attribute/" rel="nofollow noopener noreferrer">Verwende <code>aria-current="page"</code></a>.</p> <p>Eine Klasse <code>current</code> brauchst du dann nicht; du kannst den Attributselektor <code class="language-css">[aria-current=<span class="token string">"page"</span>]</code> zum Stylen verwenden. (Ein Klassenselektor ist auch nur eine andere Schreibweise für einen Attributselektor.)</p> </blockquote> <p>Das werde ich auf jeden Fall ausprobieren, danke!</p> <blockquote> <p>Was du nicht tun solltest: die aktuelle Seite verlinken. Stattdessen den Link auf den Hauptinhalt setzen (also genau dorthin, wo auch der <a href="https://blog.selfhtml.org/2018/jul/15/skipper-ahoj" rel="noopener noreferrer">Skip-Link</a> hinführt).</p> </blockquote> <p>Ich verstehe, das werde ich noch ändern.</p> <blockquote> <p>Live und in Schwarz/Weiß zu sehen, <a href="https://bittersmann.de/startrek/series/tos" rel="nofollow noopener noreferrer">wo nie ein Mensch zuvor gewesen ist</a>. Das <a href="https://bittersmann.de/startrek/series/index.phps" rel="nofollow noopener noreferrer">PHP-Script</a>, das die Seiten generiert, kann man sich auch ansehen.</p> <p>Ich hab letztens was darüber erzählt, zu sehen ist das auf <a href="https://noti.st/gunnarbittersmann/HtsntM/til-where-no-one-has-gone-before#sLxpibG" rel="nofollow noopener noreferrer">Folie 7</a>.</p> </blockquote> <p>Sehr interessant! Vielen Dank, dass ich mir das anschauen darf. Ich studiere das beizeiten auf jeden Fall mal genauer. Vor allem auch der generelle Aufbau der Seite mit PHP ist wirklich spannend. Ich habe oft das Gefühl, ich kriege deutlich mehr Einsicht, wenn ich mir richtige Projekte von anderen Menschen anschaue.</p> <blockquote> <p>Wenn es dir nicht behagt, wiederholt <code class="language-php"><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span></code> zu verwenden und damit immer wieder dasselbe zu tun, kannst du das auch mit einer Schleife machen;</p> </blockquote> <p>Ja, ist eine Überlegung wert. Allerdings versuche ich das wohl tatsächlich eher mit aria-current zu lösen, ist wohl sauberer.</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799142#m1799142 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2022-05-15T05:15:33Z 2022-05-15T05:15:33Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>@@Rolf B</p> <blockquote> <p>Ob Du nun Gunnars Vorschlag folgst und <code>aria-current='page'</code> setzt oder bei <code>class='current'</code> bleibst, ist deine Entscheidung.</p> </blockquote> <p>Warum erweckst du hier den Eindruck, die Hervorhebung der aktuellen Seite im Menü sei nur für sehende Nutzer von Belang und könnte anderen Nutzern vorenthalten werden? </p> <p lang="uk"> Живіть довго і процвітайте</p> <div class="signature">-- <br> <em lang="en">When the power of love overcomes the love of power the world will know peace.</em><br> — Jimi Hendrix </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799151#m1799151 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2022-05-15T15:54:35Z 2022-05-15T15:54:35Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>@@borisbaer</p> <blockquote> <blockquote> <p>Wenn es dir nicht behagt, wiederholt <code class="language-php"><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span></code> zu verwenden und damit immer wieder dasselbe zu tun, kannst du das auch mit einer Schleife machen;</p> </blockquote> <p>Ja, ist eine Überlegung wert. Allerdings versuche ich das wohl tatsächlich eher mit aria-current zu lösen, ist wohl sauberer.</p> </blockquote> <p>Das Eine hat mit dem Anderen nichts zu tun.</p> <p>Du kannst entweder eine Schleife über ein vorher definiertes Array machen oder <code>if … elseif … elseif … else …</code> (oder <code>switch { case … case … default …}</code>).</p> <p>Bei beiden Varianten setzt du für den jeweils aktuellen Menüpunkt <code>href="#main</code> (o.ä.) und <code>aria-current="page"; für alle anderen Menüpunkte </code>href` auf die jeweilige Unterseite.</p> <p lang="uk"> Живіть довго і процвітайте</p> <div class="signature">-- <br> <em lang="en">When the power of love overcomes the love of power the world will know peace.</em><br> — Jimi Hendrix </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799149#m1799149 Der Martin 2022-05-15T13:25:45Z 2022-05-15T13:25:45Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Hallo,</p> <blockquote> <blockquote> <p>Hast du denn auch daran gedacht, sie mit dem Schlüsselwort <strong>global</strong> <a href="https://www.php.net/language.variables.scope" rel="nofollow noopener noreferrer">in die Funktion(en) zu importieren</a>?</p> </blockquote> <p>habe ich bisher nicht versucht</p> </blockquote> <p>schade, denn das ist notwendig, um aus einer Funktion heraus auf globale Variablen zugreifen zu können.</p> <blockquote> <p>da <a href="https://www.php.net/manual/de/reserved.variables.globals.php" rel="nofollow noopener noreferrer">hier</a> einem davon abgeraten wird, wenn ich das richtig verstehe: <em>Seit PHP 8.1.0 wird der Schreibzugriff auf das gesamte $GLOBALS-Array nicht mehr unterstützt.</em></p> </blockquote> <p>Möglicherweise hast du das missverstanden. Erstens geht es tatsächlich nur um das <strong>Schreiben</strong> auf $_GLOBALS, zweitens ist der direkte Zugriff auf $_GLOBALS ja etwas "unbequem", und <strong>wenn</strong> man schon globale Variablen verwenden möchte, finde ich das explizite Bekanntmachen innerhalb der Funktion mit dem global-Keyword sauberer. Dann darfst du auch schreibend darauf zugreifen (auch wenn das bei mir immer ein bisschen Zähneknirschen hervorruft).</p> <p>Aber Schreibzugriff brauchst du ja in deinem Fall auch gar nicht.</p> <blockquote> <blockquote> <p>Aber Funktionen, die auf globale Variablen zugreifen, sind sowieso unschön. Wie wär's, wenn du $current im globalen Scope definierst und als Parameter an die Funktionen übergibst, die diesen Wert brauchen? Dann wäre nur im globalen Scope, der ja sowieso alles zusammenklebt, ein bisschen "Magic", aber alle Funktionen wären autark.</p> </blockquote> <p>Also, übergeben würde ich den Paramter dann so, oder?</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">game</span><span class="token punctuation">(</span><span class="token variable">$current</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$current</span> <span class="token operator">===</span> <span class="token keyword type-declaration">null</span> <span class="token operator">||</span> <span class="token variable">$current</span> <span class="token operator">===</span> <span class="token string single-quoted-string">'game'</span> <span class="token operator">?</span> <span class="token string single-quoted-string">'current'</span> <span class="token punctuation">:</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>game<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Spiel<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token punctuation">}</span> </span></code></pre> </blockquote> <p>Genau. Und beim Aufruf der Funktion game() dann auch den Wert übergeben.</p> <blockquote> <p>Aber wo ist denn dieser global scope?</p> </blockquote> <p>Das ist sozusagen alles, was sich außerhalb aller Funktionen und Klassen abspielt.</p> <blockquote> <p>Ich bin noch nicht wirklich sehr vertraut mit PHP. In JavaScript wäre er ja außerhalb aller functions, aber bei PHP habe ich keine Ahnung.</p> </blockquote> <p>Das ist in PHP ganz genauso. Der Unterschied ist, dass eine Funktion in Javascript auf globale Daten zugreifen darf, ohne dass man das extra regeln müssten; in PHP muss man es explizit erlauben.</p> <p>Einen schönen Tag noch<br>  Martin</p> <div class="signature">-- <br> Мир для України. </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799150#m1799150 Rolf B 2022-05-15T15:39:57Z 2022-05-15T15:39:57Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Hallo,</p> <blockquote> <blockquote> <blockquote> <p>Das schreit doch nach einer globalen Definition.</p> </blockquote> </blockquote> </blockquote> <blockquote> <p>wenn man schon globale Variablen verwenden möchte, finde ich das explizite Bekanntmachen innerhalb der Funktion mit dem global-Keyword sauberer</p> </blockquote> <p>Abe es ist immer noch der Unterschied zwischen Ölschmier an den Fingern und triefendem Schmodder. $_GLOBALS sollte man einfach ignorieren. Und globale Variablen dringend vermeiden.</p> <p>Ich muss aber auch eingestehen, dass es in PHP ohne radikale Objektorientierung mühsam ist, auf globale Variablen zu verzichten.</p> <blockquote> <p>$current === null || $current === 'game' ? 'current' : ''</p> </blockquote> <p>Hier würde ich definitiv dazu raten, $current bei der Initialisierung gleich auf 'game' zu setzen, wenn nichts drinsteht. Die Funktionen für die Menüpunkte werden von irgendwas aufgerufen. Dieses irgendwas sollte selbst eine Funktion sein (build_menu oder ähnlich), und in build_menu sollte sowas stehen wie</p> <pre><code class="block language-php"> $current = $_GET['subpage'] ?? 'game'; // <-- NULL gar nicht erst entstehen lassen! $menus = [ 'game', 'releases', 'merchandise', ...., 'savegame' ]; if (!in_array($current, $menus)) $current = 'game'; for ($menus as $menu) { ("menu_$menu)($current == $menu); } ... function menu_game($isCurrent) { ?> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name"><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$isCurrent</span> <span class="token operator">?</span> <span class="token string single-quoted-string">'aria-current="page"'</span> <span class="token punctuation">:</span> <span class="token string single-quoted-string">''</span> <span class="token delimiter important">?></span></span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>...<span class="token punctuation">'</span></span><span class="token punctuation">></span></span>Game<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token punctuation">}</span> </span></code></pre> <p>Der Funktionsaufruf mit <code>("menu_$menu)()</code> funktioniert ab PHP 7.</p> <ul> <li>Name der Funktion ist vom externen Namen entkoppelt. Wenn auch nur leicht. Noch besser wäre eine echte Map.</li> <li>Subpage wird geprüft, ob es ein gültiger Name ist</li> <li>Prüfung, ob der Menüpunkt die aktuelle Seite ist, ist zentralisiert und aus den Menüfunktionen entfernt</li> </ul> <p>Mit der Map meine ich:</p> <pre><code class="block language-php"> <span class="token variable">$menus</span> <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token string single-quoted-string">'game'</span> <span class="token operator">=></span> <span class="token string single-quoted-string">'menu_game'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'releases'</span> <span class="token operator">=></span> <span class="token string single-quoted-string">'menu_releases'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'merchandise'</span> <span class="token operator">=></span> <span class="token string single-quoted-string">'menu_mechandise'</span><span class="token punctuation">,</span> <span class="token operator">...</span><span class="token operator">.</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'savegame'</span> <span class="token operator">=></span> <span class="token string single-quoted-string">'menu_savegame'</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token function">array_key_exists</span><span class="token punctuation">(</span><span class="token variable">$current</span><span class="token punctuation">,</span> <span class="token variable">$menus</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'game'</span><span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token variable">$menus</span> <span class="token keyword">as</span> <span class="token variable">$menuId</span> <span class="token operator">=></span> <span class="token variable">$menuHandler</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$menuHandler</span><span class="token punctuation">(</span><span class="token variable">$current</span> <span class="token operator">==</span> <span class="token variable">$menuId</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>Je länger man über etwas nachdenkt, desto mehr Abstraktionen fallen einem ein...</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799718#m1799718 borisbaer http://54598532.swh.strato-hosting.eu/ 2022-06-10T10:45:33Z 2022-06-10T10:48:35Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <blockquote> <p><strong>Das ist doch viel einfacher - oder?</strong></p> </blockquote> <p>In der Tat, vielen Dank! </p> <p>Mit <code>return</code> hat es allerdings nicht funktioniert, ich musste stattdessen <code>echo</code> schreiben.</p> <blockquote> <p>Ich habe hier mal die wichtigen Anmerkungen von Gunnar außer Acht gelassen…</p> </blockquote> <p>Auf welche Anmerkungen beziehst du dich? Zur Barrierefreiheit? Die hervorgehobenen Links habe ich mittlerweile auf <code>aria-current="page"</code> umgestellt.</p> <blockquote> <p>Aber von der wilden Durchmischung von HTML, CSS und PHP musst Du dringend weg, weil Du dabei das jeweilige Ziel aus den Augen verlierst <strong>und es Dir selbst schwer machst.</strong></p> </blockquote> <p>Das verstehe ich nicht ganz. Wie soll man denn sonst vorgehen? Man mischt doch immer HTML, CSS und PHP. Ich sehe keine Alternative.</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799719#m1799719 Raketenwilli 2022-06-10T13:10:39Z 2022-06-10T13:10:39Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <blockquote> <blockquote> <p><strong>Das ist doch viel einfacher - oder?</strong></p> </blockquote> <p>In der Tat, vielen Dank! </p> <p>Mit <code>return</code> hat es allerdings nicht funktioniert, ich musste stattdessen <code>echo</code> schreiben.</p> </blockquote> <p>Du muss das</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">getNavLink</span><span class="token punctuation">(</span>… </span></code></pre> <p>nur ohne zuätzliche Leerzeichen screiben... dann geht es ohne <code>echo</code>.</p> <blockquote> <p>Das verstehe ich nicht ganz. Wie soll man denn sonst vorgehen? Man mischt doch immer HTML, CSS und PHP. Ich sehe keine Alternative.</p> </blockquote> <p>Das kommt noch... Les mal über Templates (php), Klassen und Id (CSS, HTML) nach.</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799746#m1799746 borisbaer http://54598532.swh.strato-hosting.eu/ 2022-06-12T18:53:52Z 2022-06-12T18:53:52Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Hallo Raketenwilli,</p> <blockquote> <p>Du muss das</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">getNavLink</span><span class="token punctuation">(</span>… </span></code></pre> <p>nur ohne zuätzliche Leerzeichen screiben... dann geht es ohne <code>echo</code>.</p> </blockquote> <p>danke, wieder was gelernt!</p> <blockquote> <p>Das kommt noch... Les mal über Templates (php), Klassen und Id (CSS, HTML) nach.</p> </blockquote> <p>Ja, PHP-Templates schaue ich mir gerade an. Mit Klassen meinst du wahrscheinlich PHP-Klassen, oder? Hat das was mit OOP zu tun? Ich schätze, du denkst an was ganz Anderes als ich, wenn du von Id im Zusammenhang mit CSS und HTML sprichst.</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799747#m1799747 Raketenwilli 2022-06-12T19:19:47Z 2022-06-12T19:19:47Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <blockquote> <p>Mit Klassen meinst du wahrscheinlich PHP-Klassen, oder?</p> </blockquote> <p>HTML-Klassen, denen man mit CSS ein Aussehen verpasst. Mit PHP hat das erst mal nur sehr wenig zu tun, außer dass man die Klassennamen natürlich in PHP vergeben kann.</p> <p>Ist ja alles nur Text…</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799882#m1799882 borisbaer http://54598532.swh.strato-hosting.eu/ 2022-06-18T10:39:14Z 2022-06-18T10:40:28Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <blockquote> <p>HTML-Klassen, denen man mit CSS ein Aussehen verpasst. Mit PHP hat das erst mal nur sehr wenig zu tun, außer dass man die Klassennamen natürlich in PHP vergeben kann.</p> </blockquote> <p>Ach so, na ja, HTML-Klassen und CSS sind nichts Neues für mich. Deswegen dachte ich, du meinst Klassen in PHP. Ich bin gerade dabei, PHP-Templates zu erstellen.</p> <p>Eine Sache noch: Irgendwie funktioniert der Teil deines Codes nicht, der einen leeren URL-Parameter handhaben soll:</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">navAnchor</span><span class="token punctuation">(</span> <span class="token variable">$href</span><span class="token punctuation">,</span> <span class="token variable">$name</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$href</span> <span class="token operator">===</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'aria-current="page" '</span><span class="token punctuation">;</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$href</span> <span class="token operator">===</span> <span class="token string single-quoted-string">'game'</span> <span class="token punctuation">)</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'aria-current="page" '</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token string single-quoted-string">'<a '</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'href="'</span> <span class="token operator">.</span> <span class="token variable">$href</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'"'</span> <span class="token operator">.</span> <span class="token variable">$current</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'>'</span> <span class="token operator">.</span> <span class="token variable">$name</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'</a>'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>nav</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>page<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token variable">$subpages</span> <span class="token operator">=</span> <span class="token variable">$_SERVER</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'DOCUMENT_ROOT'</span><span class="token punctuation">]</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'/pages/'</span> <span class="token operator">.</span> <span class="token variable">$uri</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'/'</span> <span class="token operator">.</span> <span class="token variable">$uri</span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'/subpages/'</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token function">file_exists</span><span class="token punctuation">(</span> <span class="token variable">$path</span> <span class="token operator">=</span> <span class="token variable">$subpages</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'game.php'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token function">navAnchor</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'game'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Spiel'</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token function">file_exists</span><span class="token punctuation">(</span> <span class="token variable">$path</span> <span class="token operator">=</span> <span class="token variable">$subpages</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'releases.php'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token function">navAnchor</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'releases'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Releases'</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token function">file_exists</span><span class="token punctuation">(</span> <span class="token variable">$path</span> <span class="token operator">=</span> <span class="token variable">$subpages</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'merchandise.php'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token function">navAnchor</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'merchandise'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Me<span style="letter-spacing: .115em;">r</span>cha<span style="letter-spacing: .105em;">n</span>dise'</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token function">file_exists</span><span class="token punctuation">(</span> <span class="token variable">$path</span> <span class="token operator">=</span> <span class="token variable">$subpages</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'guides.php'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token function">navAnchor</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'guides'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'<span style="letter-spacing: .105em;">Gu</span>ides'</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token function">file_exists</span><span class="token punctuation">(</span> <span class="token variable">$path</span> <span class="token operator">=</span> <span class="token variable">$subpages</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'emulation.php'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token function">navAnchor</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'emulation'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Emula<span style="letter-spacing: .115em;">t</span>ion'</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token function">file_exists</span><span class="token punctuation">(</span> <span class="token variable">$path</span> <span class="token operator">=</span> <span class="token variable">$subpages</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'mods.php'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token function">navAnchor</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'mods'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Mods'</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token function">file_exists</span><span class="token punctuation">(</span> <span class="token variable">$path</span> <span class="token operator">=</span> <span class="token variable">$subpages</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'maps.php'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token function">navAnchor</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'maps'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Maps'</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token function">file_exists</span><span class="token punctuation">(</span> <span class="token variable">$path</span> <span class="token operator">=</span> <span class="token variable">$subpages</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'savegame.php'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token function">navAnchor</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'savegame'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'S<span style="letter-spacing: .105em;">a</span>vegame'</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>nav</span><span class="token punctuation">></span></span> </code></pre> <p><strong>/games/demons-souls/</strong> sollte ja eigentlich <code>$current</code> bei <code>'game'</code> setzen, wenn <code>empty( $_GET['subpage']</code>, tut es aber leider nicht. Ich sehe jedoch keinen Fehler im Code.</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799884#m1799884 borisbaer http://54598532.swh.strato-hosting.eu/ 2022-06-18T11:12:45Z 2022-06-18T11:12:45Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <blockquote> <p>Eine Sache noch: Irgendwie funktioniert der Teil deines Codes nicht, der einen leeren URL-Parameter handhaben soll:</p> </blockquote> <p>Okay, vergiss es, es war nur ein Fehler meinerseits. Scheinbar darf ich die geschweiften Klammern bei dem if und else statement nicht weglassen in diesem Fall. </p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799886#m1799886 Raketenwilli 2022-06-18T18:53:45Z 2022-06-18T18:57:41Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Du schreibst gern sehr viel, aber echt gern immer wieder nacheinander das selbe:</p> <p>Warum übernimmst Du nicht das…</p> <pre><code class="block language-php"><span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token function">file_exists</span><span class="token punctuation">(</span> <span class="token variable">$path</span> <span class="token operator">=</span> <span class="token variable">$subpages</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'savegame.php'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> </code></pre> <p>in die Funktion <code>navAnchor()</code>??? Da hast Du doch 'savegame' schon drin. Für den Rest der Liste gilt das selbe…</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799889#m1799889 borisbaer http://54598532.swh.strato-hosting.eu/ 2022-06-18T23:07:41Z 2022-06-18T23:07:41Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <blockquote> <p>Du schreibst gern sehr viel, aber echt gern immer wieder nacheinander das selbe:</p> </blockquote> <p>Ja, ich wollte das noch irgendwann zusammenfassen. ^^</p> <blockquote> <p>Warum übernimmst Du nicht das…</p> <pre><code class="block language-php"><span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token function">file_exists</span><span class="token punctuation">(</span> <span class="token variable">$path</span> <span class="token operator">=</span> <span class="token variable">$subpages</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'savegame.php'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> </code></pre> <p>in die Funktion <code>navAnchor()</code>??? Da hast Du doch 'savegame' schon drin. Für den Rest der Liste gilt das selbe…</p> </blockquote> <p>Hier mein Ergebnis:</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">navAnchor</span><span class="token punctuation">(</span> <span class="token variable">$href</span><span class="token punctuation">,</span> <span class="token variable">$name</span><span class="token punctuation">,</span> <span class="token variable">$uri</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$href</span> <span class="token operator">===</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'aria-current="page"'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$href</span> <span class="token operator">===</span> <span class="token string single-quoted-string">'game'</span> <span class="token punctuation">)</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'aria-current="page"'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token variable">$subpages</span> <span class="token operator">=</span> <span class="token variable">$_SERVER</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'DOCUMENT_ROOT'</span><span class="token punctuation">]</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'/pages/'</span> <span class="token operator">.</span> <span class="token variable">$uri</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'/'</span> <span class="token operator">.</span> <span class="token variable">$uri</span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'/subpages/'</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token function">file_exists</span><span class="token punctuation">(</span> <span class="token variable">$subpages</span> <span class="token operator">.</span> <span class="token variable">$href</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'.php'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token string single-quoted-string">'<a '</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'href="'</span> <span class="token operator">.</span> <span class="token variable">$href</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'" '</span> <span class="token operator">.</span> <span class="token variable">$current</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'>'</span> <span class="token operator">.</span> <span class="token variable">$name</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'</a>'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>nav</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>page<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">navAnchor</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'game'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Spiel'</span><span class="token punctuation">,</span> <span class="token variable">$uri</span> <span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span> <span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">navAnchor</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'releases'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Releases'</span><span class="token punctuation">,</span> <span class="token variable">$uri</span> <span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span> <span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">navAnchor</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'merchandise'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Merchandise'</span><span class="token punctuation">,</span> <span class="token variable">$uri</span> <span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span> <span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">navAnchor</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'guides'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Guides'</span><span class="token punctuation">,</span> <span class="token variable">$uri</span> <span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span> <span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">navAnchor</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'emulation'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Emulation'</span><span class="token punctuation">,</span> <span class="token variable">$uri</span> <span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span> <span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">navAnchor</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'mods'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Mods'</span><span class="token punctuation">,</span> <span class="token variable">$uri</span> <span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span> <span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">navAnchor</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'maps'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Maps'</span><span class="token punctuation">,</span> <span class="token variable">$uri</span> <span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span> <span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">navAnchor</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'savegame'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Savegame'</span><span class="token punctuation">,</span> <span class="token variable">$uri</span> <span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>nav</span><span class="token punctuation">></span></span> </code></pre> <p>Ich habe das jetzt mal so übernommen, wie du es ersprünglich geschrieben hast: mit einem <code>return</code> statt eines <code>echo</code>. Anschließend initialisiere ich die Funktionen mit <code><?=</code>, wie du ja meintest. Was ist denn eigentlich sinnvoller: Jedes mal <code><?= ?></code> zu schreiben oder einfach <code><?php ?></code> und alle Funktionen rein? Ich verstehe leider noch nicht so ganz den Sinn hinter diesen verschiednen Möglichkeiten, PHP-Code zu beginnen.</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799890#m1799890 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2022-06-19T07:07:33Z 2022-06-19T07:12:14Z PHP-Syntax: Anführungszeichen <p>@@borisbaer</p> <blockquote> <pre><code class="block bad language-php"><span class="token keyword">return</span> <span class="token string single-quoted-string">'<a '</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'href="'</span> <span class="token operator">.</span> <span class="token variable">$href</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'" '</span> <span class="token operator">.</span> <span class="token variable">$current</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'>'</span> <span class="token operator">.</span> <span class="token variable">$name</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'</a>'</span><span class="token punctuation">;</span> </code></pre> </blockquote> <p>Das ist schrecklich unleserlicher Code.</p> <p>Mit dem <a href="https://forum.selfhtml.org/self/2022/may/11/header-location-in-while-schleife/1798998#m1798998" rel="noopener noreferrer">Unterschied zwischen einfachen und doppelten Anführungszeichen in PHP</a> bist du vertraut?</p> <pre><code class="block good language-php"><span class="token keyword">return</span> <span class="token string double-quoted-string">"<a href='<span class="token interpolation"><span class="token variable">$href</span></span>' <span class="token interpolation"><span class="token variable">$current</span></span>><span class="token interpolation"><span class="token variable">$name</span></span></a>"</span><span class="token punctuation">;</span> </code></pre> <p lang="uk"> Живіть довго і процвітайте</p> <p>PS: Und das betrifft alle Stellen, wo du einen <code>.</code> machst.</p> <p>PPS: In JavaScript wäre das Äquivalent<br> <code class="language-js good"><span class="token keyword">return</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string"><a href="</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>href<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">" </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>current<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">></span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>name<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"></a></span><span class="token template-punctuation string">`</span></span><span class="token punctuation">;</span></code></p> <div class="signature">-- <br> <em lang="en">When the power of love overcomes the love of power the world will know peace.</em><br> — Jimi Hendrix </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799898#m1799898 Tabellenkalk 2022-06-19T10:59:05Z 2022-06-19T10:59:05Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Hallo,</p> <blockquote> <p>Was ist denn eigentlich sinnvoller:</p> </blockquote> <p>Sinnvoll ist vor allem das, was funktioniert und dein 6 Monate älteres Ich auch immer noch versteht… (Stichwort Kommentare und Dokumentation)</p> <blockquote> <p>Jedes mal <code><?= ?></code> zu schreiben oder einfach <code><?php ?></code> und alle Funktionen rein? Ich verstehe leider noch nicht so ganz den Sinn hinter diesen verschiednen Möglichkeiten, PHP-Code zu beginnen.</p> </blockquote> <p>Das <code><?= ?></code> ist grade in Templates beliebt, d.h. du schreibst das HTML-Gerüst und fügst per <code><?= ?></code> dann die veränderlichen Dinge dort rein.</p> <p>So wie du es vorführst, soll der PHP-Interpreter starten, eine Funktion ausführen, sich beenden, wieder starten, eine Funktion ausführen, sich beenden, wieder starten, eine Funktion ausführen, sich beenden, wieder starten, eine Funktion ausführen, usw.</p> <p>Da wird vermutlich im Hintergrund automatisch optimiert, aber schön ist anders…</p> <p>Gruß<br> Kalk</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799937#m1799937 Rolf B 2022-06-20T09:03:54Z 2022-06-20T09:03:54Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Hallo borisbaer,</p> <blockquote> <p>Was ist denn eigentlich sinnvoller: Jedes mal <?= ?> zu schreiben oder einfach <?php ?></p> </blockquote> <p>Dazu möchte ich noch was nachtragen.</p> <p><?= ?> schließt einen PHP Ausdruck ein, kein Statement. D.h. man kann auf diese Weise einen einzelnen Wert ausgeben, aber keine PHP Funktion definieren oder Logik benutzen.</p> <p>Was natürlich einer Prise Salz bedarf: eine anonyme Funktion ist natürlich möglich, und Logik geht mit dem ?: Operator - aber es ist eben kein freies PHP Programmieren. Letztlich ist<br> <code> <?= ... ?></code><br> eine Kurzform von<br> <code> <?php echo ...; ?></code><br> und verlangt auch, dass an genau dieser Stelle im PHP Gesamtkontext ein echo Befehl möglich ist.</p> <p>Ein in <code><?php ... ?></code> eingeschlossener Code muss dagegen <strong>vollständige</strong> PHP Statements enthalten. Mann kann sich vorstellen, dass das, was zwischen ?> und <?php steht, mittels echo ausgegeben wird (und zwar 1:1, ohne Variablenersetzung), d.h. an der Stelle, wo ich einen <?php ... ?> Block beende, muss syntaktisch ein echo Befehl zulässig sein. Ob PHP an dieser Stelle tatsächlich intern einen echo Befehl erzeugt oder die Sache irgendwie optimiert, weiß ich nicht. Es ist auch irrelevant.</p> <p>Der Begriff "vollständig" ist wiederum salzbedürftig. Man kann argumentieren, dass ein if oder foreach ohne den abhängigen Statementblock nicht vollständig sei. Für die Belange eines <?php ?> Konstrukts ist ein if (...) oder foreach (...) aber vollständig genug. (plus Doppelpunkt und end... Statement für gute Programmierung).</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799891#m1799891 Der Martin 2022-06-19T07:25:44Z 2022-06-19T07:25:44Z PHP-Syntax: Anführungszeichen <p>Hallo,</p> <blockquote> <blockquote> <pre><code class="block bad language-php"><span class="token keyword">return</span> <span class="token string single-quoted-string">'<a '</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'href="'</span> <span class="token operator">.</span> <span class="token variable">$href</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'" '</span> <span class="token operator">.</span> <span class="token variable">$current</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'>'</span> <span class="token operator">.</span> <span class="token variable">$name</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'</a>'</span><span class="token punctuation">;</span> </code></pre> </blockquote> <p>Das ist schrecklich unleserlicher Code.</p> </blockquote> <p>ich sehe das nicht so.</p> <blockquote> <pre><code class="block good language-php"><span class="token keyword">return</span> <span class="token string double-quoted-string">"<a href='<span class="token interpolation"><span class="token variable">$href</span></span>' <span class="token interpolation"><span class="token variable">$current</span></span>><span class="token interpolation"><span class="token variable">$name</span></span></a>"</span><span class="token punctuation">;</span> </code></pre> </blockquote> <p>Das liest sich für dich besser?</p> <p>Okay, das ist noch ein relativ einfaches Beispiel, das für mich in beiden Schreibweisen gut zu erkennen ist. Wenn es aber etwas komplexer wird, komme ich mit sequentiellen Ausdrücken (wie die Stringverkettung im ersten Beispiel) besser zurecht als mit verschachtelten. Es sei denn, die verschachtelten Sub-Terme sind mir ihrerseits so vertraut, dass ich ihren Zweck oder ihre Aussage sofort auf einen Blick erkenne.</p> <p>Sequentiell formulierte Terme kann man der Lesbarkeit zuliebe auch gut mehrzeilig schreiben. Aber dann bitte mit dem entscheidenden Operator am Anfang der Folgezeile, nicht am Zeilenende. Sonst ist der Vorteil der schnellen Erkennbarkeit wieder futsch.</p> <p>Einen schönen Tag noch<br>  Martin</p> <div class="signature">-- <br> Nein, Esel sind nicht störrisch. Sie wissen es einfach nur besser. </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799948#m1799948 borisbaer http://54598532.swh.strato-hosting.eu/ 2022-06-20T17:21:15Z 2022-06-20T17:21:15Z PHP-Syntax: Anführungszeichen <blockquote> <p>Mit dem <a href="https://forum.selfhtml.org/self/2022/may/11/header-location-in-while-schleife/1798998#m1798998" rel="noopener noreferrer">Unterschied zwischen einfachen und doppelten Anführungszeichen in PHP</a> bist du vertraut?</p> </blockquote> <p>Ja, prinzipiell schon, allerdings hatte ich das bisher noch nicht verwendet, deswegen kam es mir nicht in den Sinn. Danke für den Hinweis!</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799895#m1799895 Raketenwilli 2022-06-19T09:06:27Z 2022-06-19T09:09:58Z PHP-Syntax: Anführungszeichen <blockquote> <blockquote> <p>Das ist schrecklich unleserlicher Code.</p> </blockquote> </blockquote> <blockquote> <p>Sequentiell formulierte Terme kann man der Lesbarkeit zuliebe auch gut mehrzeilig schreiben. Aber dann bitte mit dem entscheidenden Operator am Anfang der Folgezeile, nicht am Zeilenende. Sonst ist der Vorteil der schnellen Erkennbarkeit wieder futsch.</p> </blockquote> <p><strong>Jepp.</strong> Vor allem wenn das Ergebnis etwas wie ein „String, der formalen Vorschriften unterliegt“ sein soll. Hier soll das Ergebnis gültiges und auch sonst richtiges HTML sein.</p> <p>Gründe:</p> <ul> <li><em>Ich</em> kann sowas gut lesen, auch bei den derzeitigen Temperaturen.</li> <li><em>Ich</em> bin nach dem Lesen und Deuten, erst recht Editieren eines so verketteten Strings nicht urlaubsreif. Das könnte man vergleichen mit der Situation beim Erfassen „einfacher Sprache“ oder eines Raketenkastensatzes.</li> <li> Im Hinblick auf die Grammatik übrigens auch mit dem Schreiben eines ebensolchenwelchen.</li> <li>Zudem lassen sich bei dieser Schreibweise (<a href="https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799684#m1799684" rel="noopener noreferrer">die ich nicht grundlos gezeigt habe</a>) auch Einfügungen - z.b. ein <code>htmlentities()</code> um eine Variable - sogar für einen Schluderer wie ich es bin - sehr einfach und auf Anhieb richtig verbauen.</li> <li>Schon in der Grundschule hat man solche Schreibweisen beim Rechnen ohne Taschenrechner kennengelernt…</li> </ul> <p>Zur Erinnerung: So sah das aus:</p> <pre><code class="block"> 27 + 2 + 1 + 13 ---- = 63 ==== </code></pre> <p>Allerdings hatte ich gehofft, dass der borisbär das sieht, überlegt warum der Raketenheini wohl solche „umständliche Kunststücke“, macht - und dann selbst darauf kommt, dass man SOWAS prima lesen und editieren kann.</p> <ul> <li>Auf die Performance - das hatten wir hier im Forum mal getestet, gemessen, vergleichen und diskutiert - hat der Verkettungsoperator kaum keinen negativen Einfluss.</li> </ul> <p>Aber: <em>„Naja. Jedes Gehirn funktioniert halt etwas anders.“</em>(¹)</p> <hr> <p>¹) Das will ich strikt neutral verstanden wissen! Ich z.B. notiere quasi (es gibt ganz wenige Ausnahmen) STETS die geschweiften Klammern um Blöcke (z.b. nach <code>if</code>). Auch wenn da nur eine Anweisung drin steht. Denn ich halte mich nämlich selbst für „<em>blöd“</em> genug um bei deren Fehlen eine Ursache für künftige Fehler zu verorten (ausdrücklich nicht: zu <em>„vermuten“.</em>)</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799901#m1799901 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2022-06-19T11:44:37Z 2022-06-19T11:44:37Z PHP-Syntax: Anführungszeichen <p>@@Der Martin</p> <blockquote> <blockquote> <p>Das ist schrecklich unleserlicher Code.</p> </blockquote> <p>ich sehe das nicht so.</p> </blockquote> <p>Du bist eben anders. Das kennen wir ja. </p> <blockquote> <blockquote> <pre><code class="block good language-php"><span class="token keyword">return</span> <span class="token string double-quoted-string">"<a href='<span class="token interpolation"><span class="token variable">$href</span></span>' <span class="token interpolation"><span class="token variable">$current</span></span>><span class="token interpolation"><span class="token variable">$name</span></span></a>"</span><span class="token punctuation">;</span> </code></pre> </blockquote> <p>Das liest sich für dich besser?</p> </blockquote> <p>Na sowas von besser.</p> <p>Schon die ganzen Anführungszeichen bei der anderen Variante sind eine Qual. Vergiss da mal eins oder mach eins zu viel – viel Spaß bei der Fehlersuche. (Wer Syntaxhighlighting einsetzt, der bescheißt. )</p> <blockquote> <p>Sequentiell formulierte Terme kann man der Lesbarkeit zuliebe auch gut mehrzeilig schreiben.</p> </blockquote> <p>Die anderen auch:</p> <pre><code class="block good language-php"><span class="token keyword">return</span> <span class="token string double-quoted-string">" <a href='<span class="token interpolation"><span class="token variable">$href</span></span>' <span class="token interpolation"><span class="token variable">$current</span></span>> <span class="token interpolation"><span class="token variable">$name</span></span> </a> "</span><span class="token punctuation">;</span> </code></pre> <p>(In Javascript mit <code class="language-js"><span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">…</span><span class="token template-punctuation string">`</span></span></code> ebenfalls.)</p> <p lang="uk"> Живіть довго і процвітайте</p> <div class="signature">-- <br> <em lang="en">When the power of love overcomes the love of power the world will know peace.</em><br> — Jimi Hendrix </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799896#m1799896 Der Martin 2022-06-19T10:37:54Z 2022-06-19T10:51:37Z PHP-Syntax: Anführungszeichen <p>Hallo,</p> <blockquote> <blockquote> <p>Sequentiell formulierte Terme kann man der Lesbarkeit zuliebe auch gut mehrzeilig schreiben. Aber dann bitte mit dem entscheidenden Operator am Anfang der Folgezeile, nicht am Zeilenende. Sonst ist der Vorteil der schnellen Erkennbarkeit wieder futsch.</p> </blockquote> <p><strong>Jepp.</strong> Vor allem wenn das Ergebnis etwas wie ein „String, der formalen Vorschriften unterliegt“ sein soll. Hier soll das Ergebnis gültiges und auch sonst richtiges HTML sein.</p> </blockquote> <p>was das Ergebnis sein soll, spielt da für meine Betrachtung gar keine Rolle. Das kann ein String sein, der korrektes HTML enthalten soll, aber ebensogut ein komplexer boolscher Ausdruck oder eine berechnete Referenz (in C: ein Zeiger) auf irgendein Objekt.</p> <p>Ich halte mich beim Programmieren normalerweise an die Fausregel: Ein Denkschritt, eine Zeile. Wird ein Ausdruck so komplex, dass ich ihn nicht mehr "mit einem Blick" verstehen kann, werden halt zwei oder mehr Zeilen daraus.<br> Zu viel aufteilen ist aber auch wieder schlecht: Wird ein Ausdruck, der <em>für mich</em> leicht erfassbar ist, unnötig aufgeteilt, verliere ich den Überblick bzw. mir geht der Zusammenhang flöten.</p> <blockquote> <p>Aber: <em>„Naja. Jedes Gehirn funktioniert halt etwas anders.“</em></p> </blockquote> <p>Eben. Mancher macht dank Hyperthreading Brain den eingesprungenen Dreisatz in einem Takt, ein anderer muss das Schritt für Schritt nachvollziehen.</p> <blockquote> <ul> <li>Schon in der Grundschule hat man solche Schreibweisen beim Rechnen ohne Taschenrechner kennengelernt…</li> </ul> <p>Zur Erinnerung: So sah das aus:</p> <pre><code class="block"> 27 + 2 + 1 + 13 ---- = 63 ==== </code></pre> </blockquote> <p>Genau. Später nannte man das dann "untereinander addieren" (in Abgrenzung zum einzeiligen Notieren einer Addition).</p> <blockquote> <ul> <li>Auf die Performance - das hatten wir hier im Forum mal getestet, gemessen, vergleichen und diskutiert - hat der Verkettungsoperator kaum keinen negativen Einfluss.</li> </ul> </blockquote> <p>Und selbst wenn: Solange der Unterschied nur gering ist, bin ich eher für gute Lesbarkeit - was bei meinem Programmer Brain oft (nicht immer) gleichzeitig gute Effizienz bedeutet.</p> <p>Einen schönen Tag noch<br>  Martin</p> <div class="signature">-- <br> Nein, Esel sind nicht störrisch. Sie wissen es einfach nur besser. </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799940#m1799940 Auge 2022-06-20T09:36:08Z 2022-06-20T09:36:08Z Mein höchstpersönlicher Monk bricht aus mir heraus <p>Hallo</p> <blockquote> <p>Zur Erinnerung: So sah das aus:</p> <pre><code class="block"> 27 + 2 + 1 + 13 ---- = 63 ==== </code></pre> </blockquote> <p>Sorry, das triggert mich jetzt doch. So …</p> <pre><code class="block"> 27 + 2 + 1 + 13 ---- ≠ 63 ==== </code></pre> <p>… oder so …</p> <pre><code class="block"> 27 + 2 + 1 + 13 ---- = 43 ==== </code></pre> <p>… ist's richtig. </p> <p>Tschö, Auge</p> <div class="signature">-- <br> 200 ist das neue 35. </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799949#m1799949 borisbaer http://54598532.swh.strato-hosting.eu/ 2022-06-20T17:26:03Z 2022-06-20T17:26:43Z PHP-Syntax: Anführungszeichen <blockquote> <p>Allerdings hatte ich gehofft, dass der borisbär das sieht, überlegt warum der Raketenheini wohl solche „umständliche Kunststücke“, macht - und dann selbst darauf kommt, dass man SOWAS prima lesen und editieren kann.</p> </blockquote> <p>Es ist mir gleich positiv aufgefallen und ich habe auch den Vorteil darin erkannt, es allerdings aus Platzgründen erst mal in eine Zeile geschrieben mit dem Vorhaben, es später wieder untereinander zu schreiben.</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799899#m1799899 Raketenwilli 2022-06-19T11:27:50Z 2022-06-19T11:27:50Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <blockquote> <p>So wie du es vorführst, soll der PHP-Interpreter starten, eine Funktion ausführen, sich beenden, wieder starten, eine Funktion ausführen, sich beenden, wieder starten, eine Funktion ausführen, sich beenden, wieder starten, eine Funktion ausführen, usw.</p> <p>Da wird vermutlich im Hintergrund automatisch optimiert, aber schön ist anders…</p> </blockquote> <p>Der PHP-Interpreter beendet sich da gar nicht, sondern macht einfach ein Passthrue für den nicht als PHP markierten Text. Das wird also schon beim Parsen erledigt.</p> <p>Zudem interpretiert PHP nicht zeilenweise wie anno Asbach der BASIC- Interpreter.</p> <p>Gruß vom See.</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799900#m1799900 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2022-06-19T11:35:24Z 2022-06-19T11:36:52Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>@@Tabellenkalk</p> <blockquote> <p>Das <code><?= ?></code> ist grade in Templates beliebt, d.h. du schreibst das HTML-Gerüst und fügst per <code><?= ?></code> dann die veränderlichen Dinge dort rein.</p> <p>Da wird vermutlich im Hintergrund automatisch optimiert, aber schön ist anders…</p> </blockquote> <p>In Templates (Views, … oder wie immer man das in $Framework nennt) ist genau das schön. PHP als Template-Sprache.</p> <p>Man sollte Markup-Tags nicht mit PHP <code>echo</code> generieren.</p> <p>Nicht</p> <pre><code class="block bad language-php"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>ol</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">foreach</span> <span class="token punctuation">(</span><span class="token variable">$list</span> <span class="token keyword">as</span> <span class="token variable">$item</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"<li><span class="token interpolation"><span class="token variable">$item</span></span></li>"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>ol</span><span class="token punctuation">></span></span> </code></pre> <p>sondern</p> <pre><code class="block good language-php"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>ol</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">foreach</span> <span class="token punctuation">(</span><span class="token variable">$list</span> <span class="token keyword">as</span> <span class="token variable">$item</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>li</span><span class="token punctuation">></span></span><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$item</span> <span class="token delimiter important">?></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>li</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">endforeach</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>ol</span><span class="token punctuation">></span></span> </code></pre> <p lang="uk"> Живіть довго і процвітайте</p> <div class="signature">-- <br> <em lang="en">When the power of love overcomes the love of power the world will know peace.</em><br> — Jimi Hendrix </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799902#m1799902 Tabellenkalk 2022-06-19T11:59:24Z 2022-06-19T11:59:24Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Hallo,</p> <blockquote> <blockquote> <p>Das <code><?= ?></code> ist grade in Templates beliebt, d.h. du schreibst das HTML-Gerüst und fügst per <code><?= ?></code> dann die veränderlichen Dinge dort rein.</p> <p>Da wird vermutlich im Hintergrund automatisch optimiert, aber schön ist anders…</p> </blockquote> <p>In Templates (Views, … oder wie immer man das in $Framework nennt) ist genau das schön.</p> </blockquote> <p>Indem du meinen Text nur teilweise zitierst, verdrehst du meine Aussage ins Gegenteil. Das „schön ist anders“ bezog sich auf einen von dir weggelassenen, wesentlichen Teil.</p> <p>Gruß<br> Kalk</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799950#m1799950 borisbaer http://54598532.swh.strato-hosting.eu/ 2022-06-20T17:36:52Z 2022-06-20T17:43:50Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <blockquote> <p>Man sollte Markup-Tags nicht mit PHP <code>echo</code> generieren.</p> </blockquote> <p>Meinst du etwa so?</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">navAnchor</span><span class="token punctuation">(</span> <span class="token variable">$href</span><span class="token punctuation">,</span> <span class="token variable">$name</span><span class="token punctuation">,</span> <span class="token variable">$uri</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$href</span> <span class="token operator">===</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'aria-current="page"'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$href</span> <span class="token operator">===</span> <span class="token string single-quoted-string">'game'</span> <span class="token punctuation">)</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'aria-current="page"'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token variable">$subpages</span> <span class="token operator">=</span> <span class="token variable">$_SERVER</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'DOCUMENT_ROOT'</span><span class="token punctuation">]</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'/pages/'</span> <span class="token operator">.</span> <span class="token variable">$uri</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'/'</span> <span class="token operator">.</span> <span class="token variable">$uri</span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'/subpages/'</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token function">file_exists</span><span class="token punctuation">(</span> <span class="token variable">$subpages</span> <span class="token operator">.</span> <span class="token variable">$href</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'.php'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$href</span> <span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$current</span> <span class="token delimiter important">?></span></span></span><span class="token punctuation">></span></span><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$name</span> <span class="token delimiter important">?></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">endif</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> </code></pre> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799903#m1799903 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2022-06-19T13:05:25Z 2022-06-19T13:05:25Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>@@Tabellenkalk</p> <blockquote> <p>Indem du meinen Text nur teilweise zitierst, verdrehst du meine Aussage ins Gegenteil. Das „schön ist anders“ bezog sich auf einen von dir weggelassenen, wesentlichen Teil.</p> </blockquote> <p>Du meinst den Teil?</p> <blockquote> <blockquote> <blockquote> <p>So wie du es vorführst, soll der PHP-Interpreter starten, eine Funktion ausführen, sich beenden, wieder starten, eine Funktion ausführen, sich beenden, wieder starten, eine Funktion ausführen, sich beenden, wieder starten, eine Funktion ausführen, usw.</p> </blockquote> </blockquote> </blockquote> <p>Da hat doch Raketenwilli schon alles gesagt, <a href="https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799899#m1799899" rel="noopener noreferrer">was dazu zu sagen wäre</a>.</p> <p lang="uk"> Живіть довго і процвітайте</p> <div class="signature">-- <br> <em lang="en">When the power of love overcomes the love of power the world will know peace.</em><br> — Jimi Hendrix </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799942#m1799942 Der Martin 2022-06-20T09:42:07Z 2022-06-20T09:42:07Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Hallo Rolf,</p> <blockquote> <p><?= ?> schließt einen PHP Ausdruck ein, kein Statement.</p> </blockquote> <p>ja, das ist ein wichtiger Unterschied.</p> <blockquote> <p>Ein in <code><?php ... ?></code> eingeschlossener Code muss dagegen <strong>vollständige</strong> PHP Statements enthalten.</p> </blockquote> <p>Nein. Ein einfacher Ausdruck ist auch erlaubt. Ein Ausdruck ist nämlich strenggenommen auch schon ein Statement. Sowas hier:</p> <pre><code class="block"><?php 17+4; ?> </code></pre> <p>Ist sinnlos, wirkungslos, aber erlaubt.</p> <blockquote> <p>Der Begriff "vollständig" ist wiederum salzbedürftig. Man kann argumentieren, dass ein if oder foreach ohne den abhängigen Statementblock nicht vollständig sei.</p> </blockquote> <p>Ja, das ist meines Wissens ein Syntaxfehler.</p> <p>Einen schönen Tag noch<br>  Martin</p> <div class="signature">-- <br> Nein, Esel sind nicht störrisch. Sie wissen es einfach nur besser. </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799941#m1799941 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2022-06-20T09:41:24Z 2022-06-20T09:41:24Z Mein höchstpersönlicher Monk bricht aus mir heraus <p>@@Auge</p> <blockquote> <p>… oder so …</p> <pre><code class="block"> 27 + 2 + 1 + 13 ---- = 43 ==== </code></pre> <p>… ist's richtig. </p> </blockquote> <p>Kommt da als Antwort nicht 42 raus? </p> <p lang="uk"> Живіть довго і процвітайте</p> <div class="signature">-- <br> <em lang="en">When the power of love overcomes the love of power the world will know peace.</em><br> — Jimi Hendrix </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799947#m1799947 Raketenwilli 2022-06-20T15:37:50Z 2022-06-20T15:37:50Z Mein höchstpersönlicher Monk bricht aus mir heraus <blockquote> <blockquote> <p>Zur Erinnerung: So sah das aus:</p> </blockquote> </blockquote> <blockquote> <p>Monk bricht aus mir heraus</p> </blockquote> <p>Öhm. Ich hab nur behauptet, dass es <strong>so aussah</strong>. Nicht das es <strong>richtig</strong> sei.</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799943#m1799943 Auge 2022-06-20T09:44:31Z 2022-06-20T09:44:31Z Mein höchstpersönlicher Monk bricht aus mir heraus <p>Hallo</p> <blockquote> <blockquote> <p>… oder so …</p> <pre><code class="block"> 27 + 2 + 1 + 13 ---- = 43 ==== </code></pre> <p>… ist's richtig. </p> </blockquote> <p>Kommt da als Antwort nicht 42 raus? </p> </blockquote> <p>Nachdem ich vor dem Abschicken des Vorpostings zehnmal nachgerechnet habe, um nicht als Möchtegern-Monk dazustehen, bin ich mir sicher, dass Jörg für dein Wunschergebnis einfach die falschen Summanden vorgegeben hat. </p> <p>Tschö, Auge</p> <div class="signature">-- <br> 200 ist das neue 35. </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799951#m1799951 Raketenwilli 2022-06-20T19:15:28Z 2022-06-20T19:26:35Z Sollte, hyperliquide Prüfung <blockquote> <blockquote> <p>Man sollte Markup-Tags nicht mit PHP echo generieren.</p> </blockquote> </blockquote> <blockquote> <p>Meinst du etwa so?</p> </blockquote> <blockquote> <p>…</p> </blockquote> <p>Das Wort <em><strong>„sollte“</strong></em> bedeutet, dass es Gründe geben kann, die dem <strong>entgegen stehen</strong>. Ich nenne einen: <strong><a href="https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799684#m1799684" rel="noopener noreferrer">Die Übersichtlichkeit</a></strong>.</p> <p>In dem Zusammenhang mal eine Frage ...</p> <p>Ich sehe im Hinblick auf das später eingefügte <code>if ( file_exists () )</code> keine rechte Notwendigkeit. <strong>Das die Dateien existieren gehört ja zum Programm, wenn diese fehlen, dann ist das ein Fehler</strong>, die sind <strong>nicht <em>„nice to have“</em></strong>. Ebenso könntest Du also durch das Skript prüfen, ob überhaupt PHP und der Apache Webserver installiert ist, ob letzterer auch als Elternprozess von PHP läuft und ob der Server überhaupt genug Rechenleistung und RAM mitbringt um alle diese Prüfungen in vertretbarer Zeit durchzuführen… Du kannst auch noch alle Dateien signieren lassen und diese Signaturen bis herunter zum Kernel und zum Bootmanager checken. (TPM)</p> <ul> <li>Warum also das <code>if ( file_exists () )</code> - Geraffel?</li> </ul> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799952#m1799952 Rolf B 2022-06-20T19:43:15Z 2022-06-21T07:21:07Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Hallo borisbaer,</p> <p>ja, die Montage des a Elements ist jetzt besser.</p> <p>Ich hätte - als urlaubender Späteinsteiger im Thread, aber auch noch ein paar andere Hinweise.</p> <p>Die Parameter sind nach den Umstellungen irreführend benannt.</p> <ul> <li>$href ist keine URL, sondern der Unterseitenname und die URL baust Du daraus zusammen. Ich würde $href in $subpageName umbenennen.</li> <li>$name ist kein Name, sondern ein HTML-formatierter Name. Ich hatte schon Luft geholt, um das fehlende htmlspecialchars anzumeckern - aber das geht ja nicht weil Du da deine Spezialtypographie einsetzt. Man KÖNNTE (muss nicht) $name in $nameHtml umbenennen, um klarzumachen, dass dieser Wert nicht durch den Kontextwechsel darf.</li> <li>$uri ist die Grundlage für die Bestimmung des Subpage-Ordners. Das könnte man auch herausziehen - vermutlich brauchst Du das öfter. Du kannst <code>$subpages</code> nur einmal ermitteln und dem Wert an navAnchor übergeben, statt ihn jedesmal neu zu bestimmen. Die Aufgabe "Ermittle den Order der Subpages" gehört meiner Meinung nach nicht in eine Funktion "Erzeuge einen Navigationsanker" - das sind getrennte Aufgaben und damit widerspricht das dem Single Responsibility Principle (SRP).</li> </ul> <p>Dieser Codeteil</p> <pre><code class="block language-php"> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$href</span> <span class="token operator">===</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'aria-current="page"'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$href</span> <span class="token operator">===</span> <span class="token string single-quoted-string">'game'</span> <span class="token punctuation">)</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'aria-current="page"'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>hat für mich ebenfalls einen SRP-Smell. Das ist die Ermittlung der angeforderten Subpage, mit Zuweisung eines Defaults falls keine angefordert ist. Abhängig davon wird das aria-current Attribut hinzugefügt. Das sind getrennte Aufgaben. Ich würde eine weitere Funktion schreiben und navAnchor so ändern:</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">getSubpageName</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token keyword">empty</span> <span class="token punctuation">(</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token string double-quoted-string">"game"</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">function</span> <span class="token function-definition function">navAnchor</span><span class="token punctuation">(</span><span class="token variable">$anchorSubpageName</span><span class="token punctuation">,</span> <span class="token variable">$nameHtml</span><span class="token punctuation">,</span> <span class="token variable">$subpagesFolder</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token function">getSubpageName</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token variable">$anchorSubpageName</span> <span class="token operator">?</span> <span class="token string single-quoted-string">'aria-current="page"'</span> <span class="token punctuation">:</span> <span class="token string double-quoted-string">""</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token function">file_exists</span><span class="token punctuation">(</span> <span class="token variable">$subpagesFolder</span> <span class="token operator">.</span> <span class="token variable">$anchorSubpageName</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'.php'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$anchorSubpageName</span> <span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$current</span> <span class="token delimiter important">?></span></span></span><span class="token punctuation">></span></span><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$nameHtml</span> <span class="token delimiter important">?></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">endif</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </span></code></pre> <p>Just my 2 cents...</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799953#m1799953 Raketenwilli 2022-06-20T19:51:41Z 2022-06-20T20:14:09Z Sollte, hyperliquide Prüfung <p>wenn Du Dich aber daran halten willst, gar kein Markup mit PHP auszugeben, dann bitte hier entlang:</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">IsCurrent</span><span class="token punctuation">(</span> <span class="token variable">$LinkTarget</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token operator">!</span> <span class="token keyword">empty</span><span class="token punctuation">(</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$LinkTarget</span> <span class="token operator">==</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token string single-quoted-string">'current'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$LinkTarget</span> <span class="token operator">==</span> <span class="token string single-quoted-string">'game'</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token string single-quoted-string">'current'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">### Nur für die Simulation/Tests ###</span> <span class="token comment">#$_GET['subpage']='';</span> <span class="token comment">#$_GET['subpage']='game';</span> <span class="token comment">#$_GET['subpage']='mods';</span> <span class="token comment">####################################</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">IsCurrent</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'game'</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>game<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Spiel<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">IsCurrent</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'releases'</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>releases<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Releases<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">IsCurrent</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'merchandise'</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>merchandise<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Me<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">letter-spacing</span><span class="token punctuation">:</span> .115em<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>r<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>cha<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">letter-spacing</span><span class="token punctuation">:</span> .105em<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>n<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>dise<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">IsCurrent</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'guides'</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>guides<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">letter-spacing</span><span class="token punctuation">:</span> .105em<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>Gu<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>ides<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">IsCurrent</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'emulation'</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>emulation<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Emula<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">letter-spacing</span><span class="token punctuation">:</span> .115em<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>t<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>ion<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">IsCurrent</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'mods'</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>mods<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Mods<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">IsCurrent</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'maps'</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>maps<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Maps<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">IsCurrent</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'savegame'</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>savegame<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>S<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">letter-spacing</span><span class="token punctuation">:</span> .105em<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>a<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>vegame<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> </code></pre> <p><strong>PHP-Code im Template</strong> <em><strong>sollte</strong></em> nämlich vor allem auch <strong>kurz</strong> sein und ergo <strong>möglichst keine Strukturen</strong> beinhalten Es bringt überhaupt nichts wenn einfache „Sachen“ <strong>im Template</strong> zu einem Riesen-Programm ausarten.</p> <p>Denn immerhin will der PHP-Progger ja das Template-Geraffel an den UI-Fritze delegieren :-). Wenn man dem das nicht mehr einfach erklären kann muss man wieder alles selbst machen.</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1800024#m1800024 borisbaer http://54598532.swh.strato-hosting.eu/ 2022-06-24T15:51:04Z 2022-06-24T15:51:04Z Sollte, hyperliquide Prüfung <blockquote> <p>Ich sehe im Hinblick auf das später eingefügte <code>if ( file_exists () )</code> keine rechte Notwendigkeit. <strong>Das die Dateien existieren gehört ja zum Programm, wenn diese fehlen, dann ist das ein Fehler</strong>, die sind <strong>nicht <em>„nice to have“</em></strong>.</p> </blockquote> <p>Nun, der Gedanke war, dass ich diese Nav in jede subpage einbinde, aber nicht jede subpage wird immer alle Tabs haben, z.B. könnte es sein, dass es den Punkt <em>Emulation</em> gar nicht gibt, weil das Spiel ohnehin nur auf PC verfügbar ist. Auf die Weise würde der Vorgang automatisiert. Ist die Datei gar nicht im Ordner <em>subpages</em>, dann wird sie in der Nav auch gar nicht angezeigt.</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1800026#m1800026 borisbaer http://54598532.swh.strato-hosting.eu/ 2022-06-24T16:02:31Z 2022-06-24T16:02:31Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <blockquote> <p>Die Parameter sind nach den Umstellungen irreführend benannt.</p> <ul> <li>$href ist keine URL, sondern der Unterseitenname und die URL baust Du daraus zusammen. Ich würde $href in $subpageName umbenennen.</li> </ul> </blockquote> <p>Danke für den Hinweis!</p> <blockquote> <ul> <li>$name ist kein Name, sondern ein HTML-formatierter Name. Ich hatte schon Luft geholt, um das fehlende htmlspecialchars anzumeckern - aber das geht ja nicht weil Du da deine Spezialtypographie einsetzt. Man KÖNNTE (muss nicht) $name in $nameHtml umbenennen, um klarzumachen, dass dieser Wert nicht durch den Kontextwechsel darf.</li> </ul> </blockquote> <p>Ist ein HTML-formatierter Name nicht dennoch ein Name? Was meinst du mit Kontextwechsel?</p> <blockquote> <ul> <li>$uri ist die Grundlage für die Bestimmung des Subpage-Ordners. Das könnte man auch herausziehen - vermutlich brauchst Du das öfter. Du kannst <code>$subpages</code> nur einmal ermitteln und dem Wert an navAnchor übergeben, statt ihn jedesmal neu zu bestimmen. Die Aufgabe "Ermittle den Order der Subpages" gehört meiner Meinung nach nicht in eine Funktion "Erzeuge einen Navigationsanker" - das sind getrennte Aufgaben und damit widerspricht das dem Single Responsibility Principle (SRP).</li> </ul> </blockquote> <p>Das ist ein guter Tipp, danke! Ich wusste auch bisher nichts von diesem SRP, aber ergibt Sinn.</p> <blockquote> <p>Dieser Codeteil</p> <pre><code class="block language-php"> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$href</span> <span class="token operator">===</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'aria-current="page"'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$href</span> <span class="token operator">===</span> <span class="token string single-quoted-string">'game'</span> <span class="token punctuation">)</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'aria-current="page"'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>hat für mich ebenfalls einen SRP-Smell. Das ist die Ermittlung der angeforderten Subpage, mit Zuweisung eines Defaults falls keine angefordert ist. Abhängig davon wird das aria-current Attribut hinzugefügt. Das sind getrennte Aufgaben. Ich würde eine weitere Funktion schreiben und navAnchor so ändern:</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">getSubpageName</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token keyword">empty</span> <span class="token punctuation">(</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token string double-quoted-string">"game"</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">function</span> <span class="token function-definition function">navAnchor</span><span class="token punctuation">(</span><span class="token variable">$anchorSubpageName</span><span class="token punctuation">,</span> <span class="token variable">$nameHtml</span><span class="token punctuation">,</span> <span class="token variable">$subpagesFolder</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$current</span> <span class="token operator">=</span> <span class="token function">getSubpageName</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token variable">$anchorSubpageName</span> <span class="token operator">?</span> <span class="token string single-quoted-string">'aria-current="page"'</span> <span class="token punctuation">:</span> <span class="token string double-quoted-string">""</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token function">file_exists</span><span class="token punctuation">(</span> <span class="token variable">$subpagesFolder</span> <span class="token operator">.</span> <span class="token variable">$anchorSubpageName</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'.php'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$anchorSubpageName</span> <span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$current</span> <span class="token delimiter important">?></span></span></span><span class="token punctuation">></span></span><span class="token php language-php"><span class="token delimiter important"><?=</span> <span class="token variable">$nameHtml</span> <span class="token delimiter important">?></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">endif</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </span></code></pre> </blockquote> <p>Wird gemacht! </p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799954#m1799954 Rolf B 2022-06-20T21:10:01Z 2022-06-20T21:10:56Z Sollte, hyperliquide Prüfung <p>Hallo Raketenwilli,</p> <p>ich würde gern ein Zehntel-Minus geben... ein Ganzes ist zu viel.</p> <p>Da musst Du nochmal ran. Es sollte definitiv aria-current='page' sein, der Zugänglichkeit wegen. Im Übrigen - fast gleicher Zeitpunkt, also zwei Doofe und ein Gedanke </p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1799955#m1799955 Raketenwilli 2022-06-20T22:36:05Z 2022-06-20T22:36:05Z Sollte, hyperliquide Prüfung <blockquote> <p>Da musst Du nochmal ran. Es sollte definitiv aria-current='page' sein,</p> </blockquote> <p>Hm. Dann wird es ja noch kürzer.</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">IsCurrent</span><span class="token punctuation">(</span> <span class="token variable">$LinkTarget</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token operator">!</span> <span class="token keyword">empty</span><span class="token punctuation">(</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token punctuation">(</span> <span class="token variable">$LinkTarget</span> <span class="token operator">==</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token punctuation">(</span> <span class="token variable">$LinkTarget</span> <span class="token operator">==</span> <span class="token string single-quoted-string">'game'</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token comment">### Nur für die Simulation/Tests ###</span> <span class="token comment">#$_GET['subpage']='';</span> <span class="token comment">#$_GET['subpage']='game';</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'subpage'</span><span class="token punctuation">]</span><span class="token operator">=</span><span class="token string single-quoted-string">'mods'</span><span class="token punctuation">;</span> <span class="token comment">####################################</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a<span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">IsCurrent</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'game'</span><span class="token punctuation">)</span><span class="token operator">?</span><span class="token string single-quoted-string">' aria-current="page"'</span><span class="token punctuation">:</span><span class="token string single-quoted-string">''</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>game<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Spiel<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a<span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">IsCurrent</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'releases'</span><span class="token punctuation">)</span><span class="token operator">?</span><span class="token string single-quoted-string">' aria-current="page"'</span><span class="token punctuation">:</span><span class="token string single-quoted-string">''</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>releases<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Releases<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a<span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">IsCurrent</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'merchandise'</span><span class="token punctuation">)</span><span class="token operator">?</span><span class="token string single-quoted-string">' aria-current="page"'</span><span class="token punctuation">:</span><span class="token string single-quoted-string">''</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>merchandise<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Me<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">letter-spacing</span><span class="token punctuation">:</span> .115em<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>r<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>cha<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">letter-spacing</span><span class="token punctuation">:</span> .105em<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>n<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>dise<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a<span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">IsCurrent</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'guides'</span><span class="token punctuation">)</span><span class="token operator">?</span><span class="token string single-quoted-string">' aria-current="page"'</span><span class="token punctuation">:</span><span class="token string single-quoted-string">''</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>guides<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">letter-spacing</span><span class="token punctuation">:</span> .105em<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>Gu<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>ides<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a<span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">IsCurrent</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'emulation'</span><span class="token punctuation">)</span><span class="token operator">?</span><span class="token string single-quoted-string">' aria-current="page"'</span><span class="token punctuation">:</span><span class="token string single-quoted-string">''</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>emulation<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Emula<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">letter-spacing</span><span class="token punctuation">:</span> .115em<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>t<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>ion<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a<span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">IsCurrent</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'mods'</span><span class="token punctuation">)</span><span class="token operator">?</span><span class="token string single-quoted-string">' aria-current="page"'</span><span class="token punctuation">:</span><span class="token string single-quoted-string">''</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>mods<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Mods<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a<span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">IsCurrent</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'maps'</span><span class="token punctuation">)</span><span class="token operator">?</span><span class="token string single-quoted-string">' aria-current="page"'</span><span class="token punctuation">:</span><span class="token string single-quoted-string">''</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>maps<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Maps<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a<span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">IsCurrent</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'savegame'</span><span class="token punctuation">)</span><span class="token operator">?</span><span class="token string single-quoted-string">' aria-current="page"'</span><span class="token punctuation">:</span><span class="token string single-quoted-string">''</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>savegame<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>S<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">letter-spacing</span><span class="token punctuation">:</span> .105em<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>a<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>vegame<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> </code></pre> <p>Output:</p> <pre><code class="block language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>game<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Spiel<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>releases<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Releases<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>merchandise<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Me<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">letter-spacing</span><span class="token punctuation">:</span> .115em<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>r<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>cha<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">letter-spacing</span><span class="token punctuation">:</span> .105em<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>n<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>dise<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>guides<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">letter-spacing</span><span class="token punctuation">:</span> .105em<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>Gu<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>ides<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>emulation<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Emula<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">letter-spacing</span><span class="token punctuation">:</span> .115em<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>t<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>ion<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">aria-current</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>page<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>mods<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Mods<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>maps<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Maps<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>savegame<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>S<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">letter-spacing</span><span class="token punctuation">:</span> .105em<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>a<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>vegame<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> </code></pre> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1800030#m1800030 Raketenwilli 2022-06-24T17:41:35Z 2022-06-24T18:00:55Z Sollte, hyperliquide Prüfung <blockquote> <p>Nun, der Gedanke war, dass ich diese Nav in jede subpage einbinde, aber nicht jede subpage wird immer alle Tabs haben, z.B. könnte es sein, dass es den Punkt Emulation gar nicht gibt, weil das Spiel ohnehin nur auf PC verfügbar ist.</p> </blockquote> <p>Du willst mir jetzt und hier sagen, dass Du für jedes Spiel eine eigene Struktur von Webseiten schaffen willst? Ernsthaft? Für mich klingt das nach einem … Nein: NICHT nach einem guten Plan, sondern als hättest Du erstmal angefangen und dann hier und da mal über dieses und jenes - aber nie über einen Plan - nachgedacht.</p> <p>was man - statt verschiedener Unterordner zu nutzen, - machen kann, wäre, einen Array zu definieren:</p> <pre><code class="block language-php"><span class="token variable">$gameSettings</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'Spiel_A'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'sites'</span><span class="token punctuation">]</span><span class="token operator">=</span><span class="token punctuation">[</span> <span class="token string single-quoted-string">'game'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'releases'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'maps'</span><span class="token punctuation">,</span> <span class="token operator">...</span> <span class="token string single-quoted-string">'savegame'</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token variable">$gameSettings</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'Spiel_B'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'sites'</span><span class="token punctuation">]</span><span class="token operator">=</span><span class="token punctuation">[</span> <span class="token string single-quoted-string">'game'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'maps'</span><span class="token punctuation">,</span> <span class="token operator">...</span> <span class="token string single-quoted-string">'savegame'</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> </code></pre> <p>und mit</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">if</span><span class="token punctuation">(</span> <span class="token function">in_array</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'releases'</span><span class="token punctuation">,</span> <span class="token variable">$gameSettings</span><span class="token punctuation">[</span> <span class="token variable">$game</span> <span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'sites'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a<span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token function">IsCurrent</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'releases'</span><span class="token punctuation">)</span><span class="token operator">?</span><span class="token string single-quoted-string">' aria-current="page"'</span><span class="token punctuation">:</span><span class="token string single-quoted-string">''</span><span class="token punctuation">;</span><span class="token delimiter important">?></span></span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>releases<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Releases<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">endif</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> </code></pre> <p>zu prüfen.</p> <p>und bringe in $gameSettings auch andere Eigenschaften unter - oder definiere das als Objekt statt als Array oder nutze bereits ein existierendes Array oder ein Objekt in welchem Du bereits andere Eigenschaften der Spiele speicherst.</p> <p>Du solltest also erst einmal die Datenbasis planen: Was haben die Spiele gemeinsam und worin unterscheiden sich diese?</p> <p>Und wo kommt denn dieses <code>$_GET['subpage']</code> dann her?</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1800027#m1800027 Rolf B 2022-06-24T16:12:18Z 2022-06-24T16:12:18Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Hallo borisbaer,</p> <blockquote> <p>Ist ein HTML-formatierter Name nicht dennoch ein Name?</p> </blockquote> <p>Ja, aber...</p> <blockquote> <p>Was meinst du mit Kontextwechsel?</p> </blockquote> <p>Uh oh. Lasst ihn leben, Brüder! (m/w/d)<br> <a href="https://wiki.selfhtml.org/wiki/Programmiertechnik/Kontextwechsel" rel="nofollow noopener noreferrer">Erstmal Basislektüre</a>...</p> <p>Wenn Du irgendwelche Texte aus einer Quelle liest und sie in eine HTML Seite ausgeben willst, ändert sich der Kontext dieser Daten.</p> <p>Von "raw data" nach "Text in einer HTML Seite". Damit dieser Kontextwechsel gelingt und Dir nicht die Seite schrottet, z.B. weil ein unschuldiges < im Text steht, musst Du jeden Text, den Du irgendwoher bekommst, mit htmlspecialchars behandeln, bevor Du ihn zum Browser schickst. Bei Text, der im PHP steht, ist das nicht zwingend nötig, den siehst Du ja und kannst deshalb wissen, ob er Dir die Seite kaputt macht oder nicht.</p> <p>Der Unterschied zwischen einem Namen und einem HTML-formatierten Namen ist, dass Du den Namen mit htmlspecialchars behandeln musst und den HTML-formatierten Namen <strong>nicht</strong> mit htmlspecialchars behandeln <strong>darfst</strong>. Weil der HTML-formatierte Name bereits im HTML Kontext ist.</p> <p>Ein anderer Kontextwechsel wäre z.B. Benutzereingabe zu SQL Query.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1800028#m1800028 Tabellenkalk 2022-06-24T17:11:56Z 2022-06-24T17:11:56Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Hallo,</p> <blockquote> <blockquote> <p>Was meinst du mit Kontextwechsel?</p> </blockquote> <p>Uh oh. Lasst ihn leben, Brüder! (m/w/d)</p> </blockquote> <p>ach menno!</p> <p>Gruß<br> Kalk</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1800029#m1800029 Der Martin 2022-06-24T17:26:12Z 2022-06-24T17:26:12Z PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss? <p>Hallo,</p> <blockquote> <blockquote> <p>Was meinst du mit Kontextwechsel?</p> </blockquote> <p>Uh oh. Lasst ihn leben, Brüder! (m/w/d)</p> </blockquote> <p>okay, because it's you ...</p> <p>Einen schönen Tag noch<br>  Martin</p> <div class="signature">-- <br> Nein, Esel sind nicht störrisch. Sie wissen es einfach nur besser. </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1800031#m1800031 Rolf B 2022-06-24T21:04:46Z 2022-06-24T21:04:46Z Sollte, hyperliquide Prüfung <p>Hallo Raketenwilli,</p> <blockquote> <p>was man - statt verschiedener Unterordner zu nutzen, - machen kann, wäre, einen Array zu definieren:</p> </blockquote> <p>Weiß nicht, das find ich auch nicht so doll.</p> <p>Ich persönlich würde ja versuchen, Daten und Darstellung zu trennen und die Darstellung nach Bedarf aus den Daten zu generieren - was natürlich eine ordentliche Abstraktion ist.</p> <p>Man kann aber auch - so wie Selfhtml bis zur Version 8.x - die Bereiche in Dateien ablegen und sie verknüpfen. Da ist eine einheitliche Struktur mit einheitlichem Steuercode drumrum nicht verkehrt, und dass dann Teile fehlen können - warum nicht. Ein Selfhtml 8.2 hätte beispielsweise für das Javascript-Objekt "String" einen Unterordner in "Objekte" haben können, und darin wären dann HTML Dateien pro Methode. Und zur Anzeige wird alles eingesammelt, statt die Verlinkung hart zu programmieren (was man natürlich wiederum cachen kann).</p> <blockquote> <p>Du solltest also erst einmal die Datenbasis planen:</p> </blockquote> <p>Mir scheint, das hat er getan, ist aber mit einem Konzept unterwegs, das von deiner Idee abweicht.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1800032#m1800032 Raketenwilli 2022-06-25T07:52:23Z 2022-06-25T07:52:23Z Sollte, hyperliquide Prüfung <blockquote> <p>Hallo Raketenwilli,</p> <blockquote> <p>was man - statt verschiedener Unterordner zu nutzen, - machen kann, wäre, einen Array zu definieren:</p> </blockquote> <p>Weiß nicht, das find ich auch nicht so doll.</p> <p>Ich persönlich würde ja versuchen, Daten und Darstellung zu trennen und die Darstellung nach Bedarf aus den Daten zu generieren - was natürlich eine ordentliche Abstraktion ist.</p> </blockquote> <p>Naja. Ich hab ja nicht geschrieben, dass er die Daten ins eigentliche Programm schreiben soll. (<a href="https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1800030#m1800030" rel="noopener noreferrer">Deshalb im gezeigten Quelltext auch die Trennung</a>) Aber an irgendeiner Stelle muss das Programm die Daten haben. Hier wäre wohl eine zu inkludierende Datei - oder Datenquelle (ich bin mir aber fast sicher, dass Datenbank keine ideale Lösung für „alles“ ist) - für die Konfiguration angemessen.</p> <p>Das <strong>kann</strong> direktes PHP sein, aber auch jedes andere geeignete Format (ini, json, yaml, csv, ...) - da kommt es wohl darauf an, wer diese anlegen und pflegen soll.</p> <p>Womöglich hätte ich ein paar Worte dazu schreiben sollen.</p> <blockquote> <p>Und zur Anzeige wird alles eingesammelt</p> </blockquote> <p>Just für den Missbrauch des Dateisystems als Datenbank habe ich mal böse Kritik bekommen …</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1800036#m1800036 borisbaer http://54598532.swh.strato-hosting.eu/ 2022-06-25T12:47:58Z 2022-06-25T12:47:58Z Sollte, hyperliquide Prüfung <p>Hallo Rolf,</p> <blockquote> <p>Ich persönlich würde ja versuchen, Daten und Darstellung zu trennen und die Darstellung nach Bedarf aus den Daten zu generieren - was natürlich eine ordentliche Abstraktion ist.</p> </blockquote> <p>das versuche ich. Aber die Daten werden momentan einfach über PHP inkludiert bzw. sind die Strings in einer PHP-Datei als Variablen festgelegt.</p> <p>Für die subpage <strong>Spiel</strong> bspw. habe ich folgendermaßen Darstellung und Daten getrennt:</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 variable">$_SERVER</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'DOCUMENT_ROOT'</span><span class="token punctuation">]</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'/includes/subpages/game.inc.php'</span><span class="token punctuation">;</span> <span class="token function">beginSubpage</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">beginTable</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">rowHeader</span><span class="token punctuation">(</span> <span class="token variable">$PLATFORM</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">str</span><span class="token punctuation">(</span> <span class="token variable">$PLAYSTATION3</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">endRow</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">rowHeader</span><span class="token punctuation">(</span> <span class="token variable">$DEVELOPER</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">str</span><span class="token punctuation">(</span> <span class="token variable">$FROMSOFTWARE</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">endRow</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">rowHeader</span><span class="token punctuation">(</span> <span class="token variable">$RELEASEDATE</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">str</span><span class="token punctuation">(</span> <span class="token variable">$JAPAN</span> <span class="token operator">.</span> <span class="token variable">$D05</span> <span class="token operator">.</span> <span class="token variable">$M01</span> <span class="token operator">.</span> <span class="token variable">$Y2009</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">str</span><span class="token punctuation">(</span> <span class="token variable">$NORTHAMERICA</span> <span class="token operator">.</span> <span class="token variable">$D06</span> <span class="token operator">.</span> <span class="token variable">$M10</span> <span class="token operator">.</span> <span class="token variable">$Y2009</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">str</span><span class="token punctuation">(</span> <span class="token variable">$EUROPE</span> <span class="token operator">.</span> <span class="token variable">$D25</span> <span class="token operator">.</span> <span class="token variable">$M06</span> <span class="token operator">.</span> <span class="token variable">$Y2010</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">endRow</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">rowHeader</span><span class="token punctuation">(</span> <span class="token variable">$PUBLISHER</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">str</span><span class="token punctuation">(</span> <span class="token variable">$JAPAN</span> <span class="token operator">.</span> <span class="token variable">$SONYCOMPUTERENTERTAINMENT</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">str</span><span class="token punctuation">(</span> <span class="token variable">$NORTHAMERICA</span> <span class="token operator">.</span> <span class="token variable">$ATLUSUSA</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">str</span><span class="token punctuation">(</span> <span class="token variable">$EUROPE</span> <span class="token operator">.</span> <span class="token variable">$BANDAINAMCOGAMES</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">endRow</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">rowHeader</span><span class="token punctuation">(</span> <span class="token variable">$GENRE</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">str</span><span class="token punctuation">(</span> <span class="token variable">$ACTIONROLEPLAYINGGAME</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">endRow</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">rowHeader</span><span class="token punctuation">(</span> <span class="token variable">$THEME</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">str</span><span class="token punctuation">(</span> <span class="token variable">$FANTASY</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">endRow</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">rowHeader</span><span class="token punctuation">(</span> <span class="token variable">$MODE</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">str</span><span class="token punctuation">(</span> <span class="token variable">$SINGLEPLAYER</span> <span class="token operator">.</span> <span class="token variable">$separator</span> <span class="token operator">.</span> <span class="token variable">$ONLINEMULTIPLAYER</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">endRow</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">rowHeader</span><span class="token punctuation">(</span> <span class="token variable">$CONTROLS</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">str</span><span class="token punctuation">(</span> <span class="token variable">$SIXAXIS</span> <span class="token operator">.</span> <span class="token variable">$separator</span> <span class="token operator">.</span> <span class="token variable">$DUALSHOCK3</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">endRow</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">rowHeader</span><span class="token punctuation">(</span> <span class="token variable">$MEDIUM</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">str</span><span class="token punctuation">(</span> <span class="token variable">$BLURAYDISC</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">endRow</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">rowHeader</span><span class="token punctuation">(</span> <span class="token variable">$DISTRIBUTION</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">str</span><span class="token punctuation">(</span> <span class="token variable">$RETAIL</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">endRow</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">rowHeader</span><span class="token punctuation">(</span> <span class="token variable">$AGERATING</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">str</span><span class="token punctuation">(</span> <span class="token variable">$ESRBM</span> <span class="token operator">.</span> <span class="token variable">$separator</span> <span class="token operator">.</span> <span class="token variable">$PEGI16</span> <span class="token operator">.</span> <span class="token variable">$separator</span> <span class="token operator">.</span> <span class="token variable">$USK16</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">endRow</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">rowHeader</span><span class="token punctuation">(</span> <span class="token variable">$AUDIOLANGUAGE</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">str</span><span class="token punctuation">(</span> <span class="token variable">$ENGLISH</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">endRow</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">rowHeader</span><span class="token punctuation">(</span> <span class="token variable">$SCREENLANGUAGE</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">str</span><span class="token punctuation">(</span> <span class="token variable">$GERMAN</span> <span class="token operator">.</span> <span class="token variable">$separator</span> <span class="token operator">.</span> <span class="token variable">$ENGLISH</span> <span class="token operator">.</span> <span class="token variable">$separator</span> <span class="token operator">.</span> <span class="token variable">$FRENCH</span> <span class="token operator">.</span> <span class="token variable">$separator</span> <span class="token operator">.</span> <span class="token variable">$ITALIAN</span> <span class="token operator">.</span> <span class="token variable">$separator</span> <span class="token operator">.</span> <span class="token variable">$SPANISH</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">endRow</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">endTable</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">container</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'demons-souls'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Demon’s Souls'</span><span class="token punctuation">,</span> <span class="token variable">$SOULS</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">beginTags</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">tag</span><span class="token punctuation">(</span> <span class="token variable">$THIRDPERSON</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">tag</span><span class="token punctuation">(</span> <span class="token variable">$CHARACTERCREATION</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">tag</span><span class="token punctuation">(</span> <span class="token variable">$DARKFANTASY</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">tag</span><span class="token punctuation">(</span> <span class="token variable">$REPLAYABILITY</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">tag</span><span class="token punctuation">(</span> <span class="token variable">$SOULSLIKE</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">endTags</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">endSubpage</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> </code></pre> <p>Eine bessere Möglichkeit kenne ich momentan nicht.</p> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1800033#m1800033 Rolf B 2022-06-25T09:23:50Z 2022-06-25T09:23:50Z Sollte, hyperliquide Prüfung <p>Hallo Raketenwilli,</p> <blockquote> <p>Aber an irgendeiner Stelle muss das Programm die Daten haben.</p> </blockquote> <p>Ja, das ist doch der Punkt. Muss es sie explizit haben? Oder kann es sie sich herleiten (z.B. über Existenz von "Objekten" (also Dateien oder Rows in einer DB).</p> <p>Wenn Daten implizit vorhanden sind, muss ich sie nicht nochmal explizit notieren. Die explizite Form kann das Programm selbst erzeugen. Entweder bei jedem Durchlauf, oder nur gelegentlich und mit einem Cache-Speicher, falls die implizite Gewinnung aufwändig ist.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1800034#m1800034 Der Martin 2022-06-25T11:24:37Z 2022-06-25T11:24:37Z Sollte, hyperliquide Prüfung <p>Hallo,</p> <blockquote> <p>Just für den Missbrauch des Dateisystems als Datenbank habe ich mal böse Kritik bekommen …</p> </blockquote> <p>mit welcher Begründung?</p> <p>Abhängig von der Anwendung kann das meiner Meinung nach eine ziemlich gute Idee sein. Dateizugriffe sind etwas, was im Computerbetrieb sehr häufig stattfindet. Man darf deshalb davon ausgehen, dass Dateisystemfunktionen und -strukturen sehr effizient angelegt und hochgradig optimiert sind. Wenn man also kein DBMS nutzen kann oder möchte (z.B. weil das dann noch ein weiterer Dienst ist, der Ressourcen braucht) und keine hochkomplexen Datenstrukturen hat, kann das Dateisystem eine sehr gute Alternative sein.</p> <p>Einen schönen Tag noch<br>  Martin</p> <div class="signature">-- <br> Nein, Esel sind nicht störrisch. Sie wissen es einfach nur besser. </div> https://forum.selfhtml.org/self/2022/may/14/php-function-wie-umgehe-ich-dass-eine-variable-jedes-mal-erneut-definiert-werden-muss/1800035#m1800035 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2022-06-25T12:20:24Z 2022-06-25T12:21:42Z Sollte, hyperliquide Prüfung <p>@@Der Martin</p> <blockquote> <p>Wenn man also kein DBMS nutzen kann oder möchte (z.B. weil das dann noch ein weiterer Dienst ist, der Ressourcen braucht) und keine hochkomplexen Datenstrukturen hat, kann das Dateisystem eine sehr gute Alternative sein.</p> </blockquote> <p>So nutzt auch das CMS <a href="https://getkirby.com/" rel="nofollow noopener noreferrer">Kirby</a> (<a href="https://de.wikipedia.org/wiki/Kirby_(CMS)" rel="nofollow noopener noreferrer">Wikipedia</a>) kein DBMS, sondern das Dateisystem.</p> <p lang="uk"> Живіть довго і процвітайте</p> <p>PS: <code class="language-md">(<span class="token url">[<span class="token content">Wikipedia</span>](<span class="token url">https://de.wikipedia.org/wiki/Kirby_(CMS</span>)</span>))</code><br> 3 <code>)</code> hintereinander in verschiedenen Kontexten – wenn der Kontextwechsel da mal gutgeht!</p> <div class="signature">-- <br> <em lang="en">When the power of love overcomes the love of power the world will know peace.</em><br> — Jimi Hendrix </div>