[Anketa] Který způsob vypisování preferujete? – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

[Anketa] Který způsob vypisování preferujete? – PHP – Fórum – Programujte.com[Anketa] Který způsob vypisování preferujete? – PHP – Fórum – Programujte.com

 

Kobi
~ Moderátor
+1
Věrný člen
2. 2. 2010   #1
-
0
-

Preferujete způsob výpisu PHP & HTML stylem:

1) Vše co je html dávat mimo značky PHP (<? ?>) a pouze proměnné dosazovat do HTML

<div class="text"><?=$sekce['text']?></div>


2) Vše echovat v PHP, včetně statického HTML
<?

echo "<div class='text'>$text</div>";
?>
popřípadě alternativně k č. 2
<?

echo "<div class='text'>".$text."</div>";
?>

Nahlásit jako SPAM
IP: 88.102.243.–
z_moravec
~ Redaktor
+3
Posthunter
3. 2. 2010   #2
-
0
-

Ani jeden. Už jen kvůli short_tags.

Nahlásit jako SPAM
IP: 147.251.29.–
Spát lze čtyři hodiny denně, spát déle je nemístný přepych.
Thomas Alva Edison
P
~ Anonymní uživatel
212 příspěvků
3. 2. 2010   #3
-
0
-

"...$text..." nepouzivam nikdy

Iba:

<div ...><?php echo $var ?></div>

alebo

echo '<div ...>'. $var . '</div>'

. '<div ....>'
. '<div ...>'.$var2.'</div>'
. '</div>

Nahlásit jako SPAM
IP: 213.160.186.–
Kobi
~ Moderátor
+1
Věrný člen
3. 2. 2010   #4
-
0
-

To z_moravec : O shorttagy tam nejde, klidně si představ celé "<?php". Jde o oddělení statického html od vypisování proměnných.

Nahlásit jako SPAM
IP: 89.102.5.–
marioff0
Expert
3. 2. 2010   #5
-
0
-

zalezi kde co a ako potrebujem:

napr. radsej takto

<?php for($i=1;$i<=10;$i++) {

echo "<div>".$var."</div>";
} ?>


ako
<?php for($i=1;$i<=10;$i++) { ?>

<div><?php echo $var; ?></div>
<?php } ?>


ale tam kde nie je dovod zobrazovat html znacky cez echo, tam to zbytocne nerobim...

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
z_moravec
~ Redaktor
+3
Posthunter
3. 2. 2010   #6
-
0
-

To Kobi : I tak je odpověď stejná :-)

Na větší projekty používám teplátovací systém a u menších většinou skládám HTML postupně do jedné proměnné a tu nakonci vyplivnu ven.

Nahlásit jako SPAM
IP: 147.251.29.–
Spát lze čtyři hodiny denně, spát déle je nemístný přepych.
Thomas Alva Edison
Curo
~ Šéfredaktor
+8
Hero
3. 2. 2010   #7
-
0
-

To z_moravec : Takže druhý způsob ;) (je jedno jestli to echuješ nebo ukládáš do proměnné, jde o to, jestli používáš první způsob zápisu, tedy do HTML dáváš PHP nebo naopak, do PHP dáváš značky HTML.

Nahlásit jako SPAM
IP: 88.102.243.–
Guitar Hero Master, Project führer & zdejší čaroděj.
Sleduj mě na twitteru – @lukaschury.
Zdeny
~ Korektor
0
Grafoman
3. 2. 2010   #8
-
0
-

Asi žádná varianta není vyloženě chybná. Záleží na použití, typu projektu a na tom, co je aktuálně pohodlnější, vhodnější. Osobně preferuji (čistě s praktických důvodů) druhou variantu. Ač si jsem vědom, že u první bych měl výhodu díky IDE prostředí (našeptávač html atributů, provázanost a odkazování na JS funkce atd.), není to pro mě až tak přínosný.

Přesvědčíte mě, abych používal první? :)

Nahlásit jako SPAM
IP: 89.103.230.–
www.devtea.cz | zdenekvecera.cz | @ZdenekVecera
Redaktor Programujte.com a Živě.cz
marioff0
Expert
3. 2. 2010   #9
-
0
-

To Zdeny : plny suhlas.... tak isto...

este ma napadlo, s pohladom na vykon, neustale zapinanie a vypinanie parsera (ci ako sa to vola), teda <?=?>, neubere, aj ked cisto len teoreticky nieco z vykonu zeleza??? Predsa len pokial ho zapnem raz, tak to musi byt nejaky rozdiel... alebo sa mylim?

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
Curo
~ Šéfredaktor
+8
Hero
3. 2. 2010   #10
-
0
-

To marioff : Dle mých testů je to náročnější i jsem něco na toto téma četl dříve. Další data pošlu po ověření.

Nahlásit jako SPAM
IP: 88.102.243.–
Guitar Hero Master, Project führer & zdejší čaroděj.
Sleduj mě na twitteru – @lukaschury.
Zdeny
~ Korektor
0
Grafoman
3. 2. 2010   #11
-
0
-

To marioff : Lukáš dodá čísla, vydrž ;) Hlavní žrout výkonu je databáze, na to nezapomínat ;)

Nahlásit jako SPAM
IP: 89.103.230.–
www.devtea.cz | zdenekvecera.cz | @ZdenekVecera
Redaktor Programujte.com a Živě.cz
KIIV
~ Moderátor
+43
God of flame
3. 2. 2010   #12
-
0
-

podle mnozstvi HTML... kdyz je to par tagu tak je lepsi echo a kdyz hodne kodu a jen sem tam hodit vypis z php tak <?php echo .. ; ?>

a nekdy proste sablonu a nahradit to tam

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
PeTe
~ Anonymní uživatel
7 příspěvků
4. 2. 2010   #13
-
0
-

Chybi tu jedna dulezita informace a to kde se dany zpusob vypisu nachazi. Pokud pracujeme s MVC a jedna se o vypisovani html ve view, coz bude asi nejcastejsi pripad, pak je jednoznacne doporucovan zpusob 1. Zde nejde vubec o rychlost ani shorttagy, jde o to, ze na view by mel pracovat html koder, ktery nemusi mit znalosti php. View je pro nej jen sablona, do ktere by mel pouze doplnovat php promenne pro vypis (a tuto syntax naucite i pomalu chapajiciho cloveka behem deseti minut).

Tento zpusob je doporucovan tvurci frameworku, jako napriklad Symfony: http://www.symfony-project.org/book/1_0/02-Exploring-Symfony-s-Code

A good rule of thumb to determine whether the view is clean enough is that it should contain only a minimum amount of PHP code, in order to be understood by an HTML designer without PHP knowledge. The most common statements in views are echo, if/endif, foreach/endforeach, and that's about all. Also, there should not be PHP code echoing HTML tags.



V Zend Frameworku jsem to doporuceni taky nekde cetl, ale nemuzu najit primo odkaz..

Nahlásit jako SPAM
IP: 89.102.5.–
marioff0
Expert
4. 2. 2010   #14
-
0
-

To PeTe : samozrejme ze kazdy si vybere sposob taky aky bude potrebovat, ked budem vediet ze do mojich kodov sa bude sprtat koder tak mu nebudem rvat vsetko do spracovania php parserom... najlepsie je uzivat vyhody nejakeho templates system, nakolko tu by sa pri spravnej implementaci nemali moc prejavit urcite spomalenia (zbytocne) kvoli neustalemu zapinaniu, vypinaniu parsera... ale o tom prva otazka nie je :)


btw: vcera som testoval to co Curo mal urobit (nic v zlom :smile4: ) a vyslo mi zhruba ze 1.priklad je o 450% percent pomalsi ako 2.priklad. Test som ale robil z malym vypisom (cca 100 znakov na 1 cyklus) x 100.000 cyklov... viac mi prehliadac nezvladal :D :D , pri vacsom vypise by mal byt rozdiel este vacsi.... (uprimne som ale ocakaval vacsi rozdiel)

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
z_moravec
~ Redaktor
+3
Posthunter
4. 2. 2010   #15
-
0
-

To marioff : No, jestli jsi to testoval v prohlížeči, tak ty výsledky moc důvěryhodné nejsou. Na takové testy je určitě lepší aspoň nástroj typu AB, nebo nějaký vymakanější benchmark.

Nahlásit jako SPAM
IP: 147.251.29.–
Spát lze čtyři hodiny denně, spát déle je nemístný přepych.
Thomas Alva Edison
marioff0
Expert
4. 2. 2010   #16
-
0
-

z_moravec napsal:
To marioff : No, jestli jsi to testoval v prohlížeči, tak ty výsledky moc důvěryhodné nejsou. Na takové testy je určitě lepší aspoň nástroj typu AB, nebo nějaký vymakanější benchmark.



jj to je mi jasne... ale cas a vysledky meriania meria phpko a nie browser... browser nema sancu takmer vobec ovplivnit takyto test... ja vysledok povazujem za priblizny, ale jasne ze nie presny :)

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
bukaj_0010
Věrný člen
4. 2. 2010   #17
-
0
-

marioff
este ma napadlo, s pohladom na vykon, neustale zapinanie a vypinanie parsera (ci ako sa to vola), teda <?=?>, neubere, aj ked cisto len teoreticky nieco z vykonu zeleza?
Kdysi jsem si myslívával, že se to takhle děje, ale ne. Parser se pořád nevypíná a nezapíná – PHP kód se zpracovává dvou stupňově, tzn. že nejdříve projde zdrojový soubor lexikální analýzou[1] a poté syntaktickou analýzou[2], kdy se vytvoří AST[3] a ten se poté zkompiluje do bytekódu. Na každém slušném hostingu je navíc extenze, která bytekód kešuje (APC, eAccelerator). Takže fáze lexikální a syntaktické analýzy odpadají.

Jelikož se vložené HTML (inline HTML) zkompiluje stejně jako echo – viz [4] a [5]+[6] –, je ouplně jedno, co člověk použije – mezi těmito dvěma kódy není žádný rozdíl:

<?php echo 'hello, world!';

hello, world!

Z pohledu interpretu (virtuální mašinky) tedy podle mě není rozdíl ve vytisknutí řetězce a ve vložení HTML. Je ale potřeba brát v potaz, že příklady nahoře nejsou úplně stejné. Opkódy by mohly vypadat nějak takto (odkoukávám z [9]):

ECHO '<div class="text">'

ZÍSKEJ_PROMĚNNOU $1, 'sekce'
ZÍSKEJ_INDEX_POLE $2, $1, 'text'
ECHO $2
ECHO '</div>'

a
ULOŽ_DO_PROMĚNNÉ $1, '<div class="text">'

ZÍSKEJ_PROMENNOU $2, 'text'
SPOJ_ŘETĚZCE $3, $1, $2
ZÍSKEJ_PROMĚNNOU $4, '</div>'
SPOJ_ŘETĚZCE $5, $3, $4
ECHO $5


Jestliže člověk bude všechny výsledky spojovat do jedné proměnné, budou převažovat instrukce spojování řetězce; jinak, a to jak v případě inline HTML, tak vypisování mezivýsledků rovnou a ne jejich spojování, budou převažovat ECHO instrukce. Myslím, že ECHO instrukce bude náročnější než spojování řetězce, protože její výkonný kód nejdříve musí zjistit, jestli se nekešuje výstup – v tom případě je to prakticky to samé jako instrukce spojování řetězců – a jestli ne, tak poslat řetězec na výstup (do stdout, když PHP běží jako CGI, nebo zavoláním nějaké Apachí API fce (asi), když PHP běží jako modul Apache).

Ale nepíšeme snad v assembleru, abychom optimalizovali každou instrukci, ne? ;-)

To byla teorie – teď benchmarky[7]+[8]. U mě (PHP 5.3.1) ukazují srovnatelné výsledky – někdy je rychlejší echo, někdy vložené HTML; což je nejspíše zapříčiněno tím, kolik procesorového času zrovna scheduler procesu PHP interpretu dá.

[1] http://en.wikipedia.org/wiki/Lexical_analysis
[2] http://en.wikipedia.org/wiki/Syntactic_analysis
[3] http://en.wikipedia.org/wiki/Abstract_syntax_tree
[4] http://github.com/php/php-src/blob/master/Zend/zend_language_parser.y#L246
[5] http://github.com/php/php-src/blob/master/Zend/zend_language_parser.y#L245
[6] http://github.com/php/php-src/blob/master/Zend/zend_language_parser.y#L565-567
[7] http://github.com/jakubkulhan/benchmarks/tree/master/echo-vs-embed/
[8] http://github.com/jakubkulhan/benchmarks/tree/master/echo-vs-embed-using-exec/
[9] http://derickrethans.nl/talks/internals.pdf

Nahlásit jako SPAM
IP: 88.101.128.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
marioff0
Expert
5. 2. 2010   #18
-
0
-

To bukaj_001 : ok nehadam sa....

ale skus spustit toto:

<?php

ob_start();
$var1="Nejaký text";
$var2="jkdnchjefr";
echo "<div style=\"display:none;\">";
$time_start = microtime(true);
for($i=1;$i<=100000;$i++) {
echo "<span>".$var1."</span>
<div>".$var2."</div>
}
$time_end = microtime(true);
$time1 = $time_end - $time_start;
$time_start = microtime(true);
for($i=1;$i<=100000;$i++) { ?>
<span><?php echo $var1; ?></span>
<div><?php echo $var2; ?></div>";
<?php }
echo "</div>";
$time_end = microtime(true);
$time2 = $time_end - $time_start;
echo "Prvý čas: $time1 Druhý čas: $time2";
?>


je zaujimave ze tu sa to prejavy (aj ked u teba nie, pouzivam 5.3.0), nemusime riesit samotne casy... ale to ze druhy cyklus sa vykona pomalsie.... preco ?

edit: pri prvom merani (s vysledko 450perc.) som urobil hrubu chybu a to taku ze som nedosadil do prveho cyklu premenne.... po oprave kodu je rozdiel cca 30-40perc..

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
bukaj_0010
Věrný člen
5. 2. 2010   #19
-
0
-

marioff
ok nehadam sa...
Jestli jsi to vzal jako útok, tak se omlouvám, tak to vůbec nebylo myšleno. Měla to spíše být obecná odpověď na otázku výkonu jednotlivých řešení.

skus spustit toto
Zkusil jsem. Druhý čas byl více jak stokrát vyšší. Zkusil jsem to tedy spustit 10krát. Průměrný čas z těch deseti spuštění byl asi 50krát vyšší pro vložené HTML. Spustil jsem to 1000krát. Průměrný čas byl byl u inline HTML 2 vyšší. Při 5000 spuštění byl průměrný čas 1.05krát vyšší u inline HTML. Testováno na PHP 5.3.1.

druhy cyklus sa vykona pomalsie.... preco?
Jak jsem psal, bude to v těch instrukcích. V prvním cyklu se hlavně používají instrukce spojování řetězce, zatímco v druhém ECHO instrukce. Zatímco při spojování řetězce proces pouze manipuluje s bloky v RAM (zjednodušeně), ECHO musí zavolat (poté, co tam přibude díky nepříliš hezkému kódu interpretu přes 100 stack framů) nějaký syscall. Více syscallů znamená větší přepínání kontextů, což ústí ve větší spotřebu procesorového času.

Ovšem podle výsledků, co jsem uvedl výše, se výdaje na syscally s rostoucím počtem spuštění ztrácí.

Nahlásit jako SPAM
IP: 88.101.128.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
CZechBoY+4
Věrný člen
21. 2. 2010   #20
-
0
-

pokud je ten HTML kód větší(třeba 5řádků) tak dávám konec PHP ?> a pak začátek <?php

Nahlásit jako SPAM
IP: 88.102.248.–
plasmo0
Věrný člen
23. 2. 2010   #21
-
0
-

Nepreferuju ani jeden způsob.

Používám SMARTY a jsem s ním spokojen. Do šablony pak předávám celá pole, nebo rovnou objecty.

Můžu to přirovnat k první variante:



...
<meta name="description" content="{$meta->GetDescription()}" />

...
<p>{$anotace}</p>

Nahlásit jako SPAM
IP: 82.150.166.–
Jak vzniká vynález? To všichni vědí, že je něco nemožné, a pak se objeví nějaký blázen, který neví, že je to nemožné, a udělá vynález. [br] Albert Einstein [br][br] http://plasmo.cz [br] http://bleskovaregistrace.cz [br] http://livetrading.cz
clpx
~ Anonymní uživatel
11 příspěvků
26. 2. 2010   #22
-
0
-

Ja pouzivam vzdy jen:
$svu2441v21323FFCz24d = 0;

<? ?> <div> <? ?> <strong> <? ? > <? echo 20 / $svu2441v21323FFCz24d; ?> <? ?> <strong> <? ?> <div> <? ?>


a rekl bych: kam se sere nejakej plasmo se svym smarty..

Nahlásit jako SPAM
IP: 80.95.113.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 37 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý