Autor Zpráva
cocroach
Profil *
Ahoj v jedné knížce sem četl že je dobrý ukončovat skript když chci vypsat html
když třebas vypisuju hlavičku:
1. verze s echo
echo '<!DOCTYPE html>
    <html lang="cs">
      <head>
        <title>'.$nadpis.'</title>
        <meta charset="utf-8">
        <meta name="description" content="'.$description.'">
        <meta name="keywords" content="'.$keywords.'">
        <meta name="author" content="'.$autor.'">';

2. verze:
....(php skript)
?> 
    <!DOCTYPE html>
    <html lang="cs">
      <head>
        <title><?php echo $nadpis; ?></title>
        <meta charset="utf-8">
        <meta name="description" content="<?php echo $description; ?>">
        <meta name="keywords" content="<?php echo $keywords; ?>">
        <meta name="author" content="<?php echo $autor; ?>">

Má z hlediska výkonu smysl to psát druhým způsobem?
Tomášeek
Profil
Z hlediska výkonu je to jedno. Druhy zápis je ale přehlednější v editoru (barvení syntaxe), apod.

Pomíjím samozrejme, ze je prasárna míchat PHP a html dohromady.
cocroach
Profil *
cocroach, Tomášeek:
Pomíjím samozrejme, ze je prasárna míchat PHP a html dohromady.
nerozumím. tohle snad ani jinak nejde než to smíchat, nebo jak bys to udělal ty?
T-fon
Profil
Šablonovacím systémem (Latte, Smarty,...)
pcmanik
Profil
cocroach:
Môžeš použiť aj skrátený zápis echo <?=$description; ?>.
Šablonovaci systém je lepší, no v tomto prípade napr pri Latte by sa zmenilo na {$description}. Zároveň by si mal automatické ošetrenie výstupu.
mikulas12
Profil
ale to by musel mít povolené v php zkracene tvary nebo ne?
cocroach
Profil *
pcmanik:
Zároveň by si mal automatické ošetrenie výstupu.
co si mám pod timhle představit?
Amunak
Profil
Tomášeek:
Z hlediska výkonu je to jedno. Druhy zápis je ale přehlednější v editoru (barvení syntaxe), apod.
Dobrý editor ti to korektně obarví tak jako tak, ale pravda je že u druhé varianty nemůže tolik docházet k různým "zmatením".

cocroach:
nerozumím. tohle snad ani jinak nejde než to smíchat, nebo jak bys to udělal ty?
Ve skutečnosti by se to "míchat" nemělo, protože když to napíšeš takto, nemůžeš pak už třeba posílat hlavičky (headers) jakmile máš nějaký výstup. A je to celkově dost prasácký přístup. Pro začátečníky jsou ale šablonovací systémy obvykle dost komplikované, pokud jim to někdo nepřipraví.

co si mám pod timhle představit?
Šablonovací systémy jsou "chytré", analyzují šablonu a poznají, jeslti se třeba zrovna nachází někde "jen tak v HTML", nebo třeba uvnitř atributu (<div class="atribut">), nebo uvnitř tagu <script> a podobně. A podle toho se zachovají - v HTML escapují < a > na &lt; a &gt; a podobně.
cocroach
Profil *
Amunak:
Ve skutečnosti by se to "míchat" nemělo, protože když to napíšeš takto, nemůžeš pak už třeba posílat hlavičky (headers) jakmile máš nějaký výstup.“;
napíšu hlavičku a také přesměruju na jinou stránku když se někdo bude chtít dostat na neexistující stránku, jinak nechápu co bych měl v hlavičce posílat.
header("HTTP/1.0 404 Not Found");
header("Location: http://www.example.com/");

když budu vracet json tak do hlavičky napíšu
<?php
header("Content-type:application/json");
echo $myJSON;
?>

je pravda žephp teprve zkouším :-( tak netuším co by jsi chtěl v těch hlavičkám posílat. ale html hlavičku snad musí mít každa stránka ne?


tak ktřebas časem skusím šablonovací systém od místního IT jokera
pcmanik
Profil
mikulas12:
Od verzie php 5.4 je to vždy funkčné bez ohľadu na nastavenie short_open_tag.
cocroach
Profil *
Amunak:
A podle toho se zachovají - v HTML escapují < a > na &lt; a &gt; a podobně.
takže když budu mít <a href="cocroach.rajce.idnes.cz">moje fotogalerie</a> tak mi z toho udělá toto?
&lt;a &gt;  href="http://cocroach.rajce.idnes.cz" &gt;moje fotogalerie&lt;/a &gt;
a k čemu mi to bude? to se pak vypíše jako normální text a ne jako odkaz.
pcmanik
Profil
cocroach:
Ošetrujú sa premenné nie okolitý text. Naštuduj si o tom niečo.
cocroach
Profil *
pcmanik:
jinak řečeno, pokud člověk ví co dělá tak žádné latte a podobný věci nepotřebuje.
Tomášeek
Profil
cocroach:
:-D

Člověče, přečti si, k čemu jsou šablonovací systémy, co je MVC architektura, atp.

Pokud chceš bastlit PHP/HTML a všechno ostatní dohromady, pokračuj v tom, nikdo ti nebrání. Klidně pak nacpi celou stránku do jednoho kilometrového echa.
mikulas12
Profil
Tomášeek:
Klidně pak nacpi celou stránku do jednoho kilometrového echa.
:-)
Kcko
Profil
mikulas12:
:-)
:-))
Amunak
Profil
cocroach:
je pravda žephp teprve zkouším :-( tak netuším co by jsi chtěl v těch hlavičkám posílat. ale html hlavičku snad musí mít každa stránka ne?

Ano, hlavičky víceméně musí mít každá Response, přičemž když žádné nevyplníš, není neobvyklé že třeba webserver (nebo PHP? teď si nejsem jistý) doplní ty nejnutnější.

Každopádně když prasíš dohromady logiku s šablonami může se ti stát že třeba až v půlce stránky zjistíš, že uživatel vyplnil někde něco špatně, a zpátky mu chceš poslat chybovou odpověď nebo ho přesměrovat někam jinam nebo něco podobného. A už nebudeš moci, protože jsi mu odeslal část výstupu.

Jinak hlaviček je celá hromada, u složitějších interaktivních aplikací pak ten oddělený přístup prakticky musíš aplikovat.

a k čemu mi to bude? to se pak vypíše jako normální text a ne jako odkaz.
Jak psal pcmanik, escapují se proměnné. Takže když máš šablonu např. takovouto:
<span class="pagination"><a href="{{ link_page_next }}">{{ 'pagination.next'|translate }}</a></span>
vylezte z toho něco takového:

<span class="pagination"><a href="?sekce=adresy&amp;stranka=5">Další &gt;&gt;</a></span>

místo chybného

<span class="pagination"><a href="?sekce=adresy&stranka=5">Další >></a></span>

jinak řečeno, pokud člověk ví co dělá tak žádné latte a podobný věci nepotřebuje.
Pokud člověk ví co dělá, dělá na tom sám a nebude mu vadit že se to nebude od určité velikosti dát prakticky nijak rozšiřovat a upravovat (alespoň ne bez značného utrpení) pak máš určitě pravdu že si to můžeš dělat jak chceš. Ale zavedené architektury, postupy a frameworky se nepoužívají jen tak ze srandy. ;)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0