Autor Zpráva
jura
Profil *
Je nějaký rozdíl v těchto zápisech?

<? ... echo "<a href=\"stranka.html\">nějaký odkaz</a>"; ... ?>

a tímto

<? ... echo "<a href='stranka.html'>nějaký odkaz</a>"; ... ?>

co je "lepší" používat? Děkuji.
MilanJ
Profil
První příklad ti vyhodí hlášku Parse error... bude za druhými uvozovkami očekávat středník, protože řetězec pro tisk byl ukončen uvozovkami.
Používej druhý příklad.;-)
*Čvachta*
Profil *
MilanJ
Nevyhodí. Má tam \
*Čvachta*
Profil *
jura

Doporučuji toto

<? echo '<a href="stranka.html">nějaký odkaz</a>'; ?>
MilanJ
Profil
Nevšiml jsem si. Pro přehlednost souhlasím s *Čvachta*.
*Čvachta*
Profil *
MilanJ

s kým čím - *Čvachtou* :-)
jura
Profil *
Díky :-) Varianta se zpětnými lomítky se mi moc nezamlouvala a nebyl jsem si jist, zda je správné zapisovat jiným způsobem. Jen tak pro vysvětlení: proč ty dvojité uvozovky je lépe psát až uvnitř echo?
*Čvachta*
Profil *
jura

Je to jedno.

<? echo "<a href='stranka.html'>nějaký odkaz</a>"; ?>
<? echo '<a href="stranka.html">nějaký odkaz</a>'; ?>

Tyhle dva zápisy jsou pro prohlížeče stejné, ale pokud si otevřeš vygenrovaný kód tak u prvního příkladu uvidíš:

<a href='stranka.html'>nějaký odkaz</a>

a u druhého

<a href="stranka.html">nějaký odkaz</a>

Prostě máš ve výledku uvozovky "" a ne ''
Je jedno jesli v XHTML používáš '' nebo "", ale já mám raději klasické uvozovky.

Taky je rozdíl v tomto:



<?

$promena = "pokus";

// vypise $promena
echo '$promena';

//vypise pokus
echo "$promena";

?>

Vyzkoušej si to.
krteczek
Profil
Zásadní rozdíl mezi ' a " je v tom že vše co je v ' bere php jako text a nekontroluje obsah, kdežto to co dáš do " to php prochází znak po znaku, a kontroluje třeba na výskyt proměnné. takže používáním uvozovek více zatěžujete server na kterém vaše scripty běhají.
u malinkých projektů kde se vám na strákách objeví pár lidí denně je to v podstatě jedno, ale pokud se jedná o projekt kde má být online, třeba 200 lidí už je to znát. další věcí pro optimalizaci je právě to html proplétané sem tam php. každým <?php se zapne php parser a ?> se zase vypne najednou je schopen obsloužit jen určitý počet stránek takže je opět lepší spustit ho jen jednou během scriptu, ten celý provést a odevzdat prohlížeči, tím vypínáním a zapínáním php stroje se ztase zatěžuje server, a může se vám stát žebudete na další start stroje nějakou dobu čekat, zpomaluje se zpracování stránky....
a neohánějte se tím že dneska jsou výkonnější procesory, paměti... že to musí server utáhnout.
NEMUSÍ! A na free hostinzích je to hodně vidět...
krteczek
jura
Profil *
Díky. Podrobnější vysvětlení jsem si snad ani nemohl přát :-) Zrovna freehosting k jednomu projektu teď využívám...
24k
Profil *
teda tady se clovek dozvi veci ;)
Hugo
Profil
krteczek

A toto jsi vyčetl kde? Kdyby php pracovalo tímto způsobem, tak většina serverů po pár požadavcích zkolabuje.
krteczek
Profil
Hugo:co konkrétně bereš jako zavádějící?
Hugo
Profil
krteczek

Ta část s popisem práce parseru. Parser jede přes celý dokument a nevypíná se. Když narazí na <?, tak začne danou část dokumentu interpretovat jako php kód. Takže není pravda, že je rychlejší vše vypisovat pomocí php.
Anonymní
Profil *
krteczek
každým <?php se zapne php parser a ?> se zase vypne
krteczek
Profil
Hugo: hm že bych to špatně pochopil? :-) mám to od člověka který profesionálně programuje inetové obchody, galerie, prostě weby na kterých bývá online hodně lidí a kde záleží na rychlostí zpracování všech požadavků.
Wiki
Profil
Nie som si isty, ale server to prechadza a ked narazi na <? tak zavola php parser... Takze myslim, ze to zatazuje server o trochu viac...
krteczek
Profil
Wiki: takhle to chápu i já... a když muže být php parser spušteny napřiklad 200x (zaroveň) tak .... u určitého počtu lidí na stránce už se začnou odezvy zpomalovat
Kajman_
Profil *
Já bych si vsadil na Hugovu vizy... parser zpracovává celý soubor, který mu předhodí server. Pokud by to byla vždy jiná instance nemohly by fungovat konstrukce typu "<?php if(1==1) { ?>", které samozřejmě fungují.

Jinak k těm uvozovkám... když tam jsou proměné a vyplatí se to, tak dvojité, když nejsou třeba, tak jednoduché. No a na větší věci, kde potřebuji hodně dvojitých i jednoduchých a ještě proměnné, tak používám >>>EOF.
Hugo
Profil
IMHO je teorie s neustálým spouštěním a vypínáním parseru blbost, protože je to zbytečná zátěž serveru. Parser jede celý dokument a to co není mezi <?php a ?> rovnou pouští na výstup. V případě toho co píše Kajman_ to funguje tak, že pokud není podmínka splněna, tak parser přeskočí celý blok až k odpovídající složené závorce.

Nemám teď čas hledat věci, které toto tvrzení podepřou nebo vyvrátí, ale IMHO je toto řešení podstatně úspornější. Doma mám víc materiálů, takže pokud nezapomenu, tak sem ráno něco plácnu.
krteczek
Profil
Hugo a Kajman_: vaše vysvětlení je logické a když to čtu začínám si myslet o běhu php to co vy.
ovšem zhoda je u toho že je duležité aby byl script pokud možno co nejrychleiší. Viděl jsem jistý internetový obchod, který se pri každé stránce ptal na spoustu věcí týkajících se nastavení php serveru, což se stačí zeptat jednou při instalaci a podle toho nastavit system. je pravda že ten obchod jel asi všude, ale při více userech se musí zákonitě zvyšovat délka odezvy serveru.
takže jak bych to popsal jednoduse?
1. pokud používáte databázi, snažte se minimalizovat počet dotazů na ni. každy dotaz na databázi spomaluje samotný běh scriptu php, protože čeká na její odpověd. počet dotazu ktere najednou muže obsloužit databáze je taky omezen, a otevrene spojení jen prodlužuje dobu kdy se k db muze pripojit další uživatel.
2. snažte se minimalizovat počet věcí které zjištujete v php vhodnym nastavenim vašich konfiguračních scriptu.

Kajman_: pls mohl bys uvezt nějaký příklad použití eof? předem děkuji (na názorném příkladu se snadněji učím)
simka00
Profil
krteczek
nějaký příklad použití eof?


<?php
$zprava = "hello, world!";
echo <<<EOF
<script>
alert($zprava);
</script>
</head>
<body>
<div class="neco">adf</div>
</body>
</html>
EOF;
?>

EOF;?>


místo EOF si můžeš napsat jakoukoli kombinaci znaků, která se v textu nevyskytne. dovnitř můžeš strčit apostrofy, uvozovky i proměnné. používá se, když potřebuješ vytisknout delší text, kde toho je hodně. ukončuje se stejnou kombinací tu musíš dát na začátek řádku

na php.net to nemůžu najít, google zklamal
koudi
Profil
simka00
http://php.ftp.cvut.cz/manual/cs/language.types.string.php#language.ty pes.string.syntax.heredoc
simka00
Profil
koudi
jo, heredoc se tomu nadává, nemohl jsem si vzpomenout :)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0