« 1 2 »
Autor Zpráva
H13
Profil
Ahoj, zajímalo by mě, který z následujích stylů psaní php je 'nejšikovnější', co se týče:
- rychlosti načítání a náročnosti na paměť


a)
<?php
if ($promenna !='') {
   ?>
   <div>
      <div><?php echo $promenna ?></div>
   </div>
   <?php
}
?>


b)
<?php
if ($promenna !='') {
   echo '<div>';
   echo '<div>'. $promenna .'</div>';
   echo '</div>';
}
?>


c)
<?php
if ($promenna !='') {
   echo '<div>'
        .'<div>'. $promenna .'</div>'
        .'</div>';
} 
?>



Díky, Honza
panther
Profil
H13
už se to tu jednou řešilo, hledej
H13
Profil
jo, už hledám dlouhou dobu a pořád nějak nemůžu najít :-(

našel jsem rozdíl mezi a) a b) (startování parseru), ale ne mezi b) a c) :-(
Nox
Profil
Podle množství html kódu mezi ?> a <?php, v tomto případě by mělo být nejrychlejší
<?php
if ($promenna !='') {
   echo '<div>',
        '<div>',$promenna,'</div>',
        '</div>';
} 
?>

Pokud by bylo html hodně, tak uzavřít ?>

Edit:
tak rozdíl b) a c) je snad jasný - v prvním případě voláš 3x jazykový konstrukt a je určitě rychlejší volat konstrukt (nebo funkci) jen jednou s delším parametrem, protože PJP zpracovává úkony jen už kvůli samotnému spuštění konstruktu/funkce

A function call with one parameter and an empty function body takes about the same time as doing 7-8 $localvar++ operations. A similar method call is of course about 15 $localvar++ operations.
http://reinholdweber.com/?p=3
H13
Profil
Nox
Díky za odpověď, s tím kódem je to složitý... html je hodně, ale taky je dost podmínek a nějakej ten for, foreach, atd... spíš mi šlo o to zvolit jednu formu, aby to nebylo psaný různýma stylama, ale jak vidím, tak se tomu asi nevyhnu ( kombinaci a) a c) )

Statistiku hustoty kódu asi nikdo nevydal :-( :-) (hustotou myslím hustotu html na <?php a ?>), např.:


<?php
if ($promenna) {
    echo '<div>'.$promenna.'</div>';
}
?>

Je jasný, že tady se asi nevyplatí uzavírat a otevírat parser...

<?php
if ($promenna) {
    ?>
      ... např. 500 řádků čistýho html kódu
   <?php
}
?>

a tady se asi vyplatí uzavřít a otevřít parser... jenže kde je ta hranice ??? :-(

EDIT:
BTW z tvého odkazu, co se přesně míní tímto:
Unset your variables to free memory, especially large arrays

něco jako:
$var = array( obsáhlé pole);

a po použití:
$var = array();

Toto pomůže, nebo je zapotřebí použít nějakou metodu unset (nikde jsem takové uklízení proměnných ve sktriptu neviděl ... buď jsem toho málo viděl, nebo se na to kašle, nebo jsem to špatně pochopil ???
krteczek
Profil
lepší je to ukládat do proměnné a v ní ten kód skládat. a vypustit ho až ve chvíli kdy je poskládaný celý. Tak to dělám já :)
bukaj
Profil
H13
Tomuto, o čem tu píšeš, o co se snažíš, se říká tzv. „premature optimization“. (Aneb soustředíš se na blbosti, místo toho abys psal funkční kód :o)) V rané fázi projektu je důležité si určit požadavky, navrhnout design a psát. Optimizace v této fázi spočívá v použití správných datových struktur a algoritmů. Většinou, když se soustředíš na takovéhle detaily, unikne ti celkový pohled na aplikaci. A někdy se i stává, že si s nějakou věcí opravdu vyhraješ a pak zjistíš, že brzda programu je někde úplně jinde. Pamatuj na pravidlo 80-20 – 20 % kódu sežere 80 % času chodu programu. Když objevíš těch 20 % a zpotimalizuješ je, zrychlíš tím program znatelněji, než když se budeš piplat s takovýmito nepatrnými detaily. Možná, že ušetříš pár tisícinek, ale nestojí to za to, věř mi. Navíc, koupit lepší železo lze vždy. A pokud se opravdu aplikace bude moc „prohýbat“, tyto malé úpravy to moc nezachrání.

Odhaduji správně, že tohle bude použité jako kód pro view šablony, že? Já bych se přimlouval za čitelnost a mně osobne nejvíce vyhovuje tento zápis:
<?php if ($promenna !== '') { ?>
    <div>
        <div><?php echo $promenna ?></div>
    </div>
<?php } ?>
H13
Profil
bukaj
Odhaduješ správně ... ModelViewController vzor

Jinak celkem jsem se zasmál, protože si zrovna čtu:


When to Start Optimizing?

Some people say that it is better to defer tuning until after the coding is complete. This advice only makes sense if your programming team's coding is of a high quality to begin with, and you already have a good feel of the performance parameters of your application. Otherwise you are exposing yourselves to the risk of having to rewrite substantial portions of your code after testing. ....


http://phplens.com/lens/php-book/optimizing-debugging-php.php

Jinak díky za tip

<?php if ($promenna !== '') { ?>
    <div>
        <div><?php echo $promenna ?></div>
    </div>
<?php } ?>


Toto je opravdu hezký, ale když má View třeb 1000 řádků (hodně podmínek, který se opravdu musí řešit až ve view, a v podmínce je třeba 3 - 5 řádků a podmínek je třeba 50, pak nevím zda se přiklonit ke stejnostylu nebo k argumentům rychlosti a náročnosti :-( )

krteczek

no to by mě taky zajímalo, jak je na tom:

$output ='';
$output .= '<div> ....';
$output .= '...';

echo $output;


i když nevím jak by se někdo tvařil, kdybych do View poslal už poskládaný $output a v samotném View by bylo pouze:

<div><?php echo $ouput; ?></div>

:-(
bukaj
Profil
H13
Toto je opravdu hezký, ale když má View třeb 1000 řádků (hodně podmínek, který se opravdu musí řešit až ve view, a v podmínce je třeba 3 - 5 řádků a podmínek je třeba 50, pak nevím zda se přiklonit ke stejnostylu nebo k argumentům rychlosti a náročnosti
Jak jsem už psal, rozhodně bych volil variantu, jak ty píšeš, „stejnostylu“. Navíc view… Víš, kolikrát to budeš muset přepisovat kvůli tomu, že grafik si něco rozmyslí, nebo klient tam bude chtít něco „doprsknout“? :o) Tady se podle mě optimalizovat rozhodně nevyplatí.

A pokud budeš optimalizovat toto, získáš pár tisícinek, maximálně setinek. Ve webových aplikacích je stěžejním bodem manipulace s databází. Na tu bych se být tebou zaměřil ;o)
H13
Profil
bukaj
ok, díky za informace, nemám ani grafika ani zákazníky :-) , proto váhám co použít... proto jsem chtěl znát i názor ostatních ...
souki
Profil
krteczek
trochu neúsporné, ne?
mastodont
Profil *
když má View třeba 1000 řádků ...

... tak je to moc a chtělo by to zamyslet se nad jeho principy. Ty skládáš celou stránku pomocí ifů?
H13
Profil
mastodont

ano, ify v případě kdy VIEW může mít mnoho tváří definovaných pomocí uživatelských parametrů a ne pomocí css a html :-) (a samozřejmě využítí více VIEW už je taky použito) ... nejedná se samozřejmě jen of ify, ale o celé podmínkování a smyčkování, načtení SUB VIEW atd, ... Doporučuješ mi snad abych vše poskládal v modelu a pak přenesl jednu jedinou proměnou do view
tiso
Profil
H13 - viac pomôžu rôzne úrovne cache, a miesto <?php if ($promenna !== '') { ?> by som použil <?php if(isset($promenna)){ ?>
Mastodont
Profil
H13
Nedoporučuji nic, zatím se jen ptám, jak vlastně to tvé view vypadá ...
H13
Profil
tiso
úrovně cache ... to je pro mě (zatím) neznámá - vyšší dívčí ???
BTW ... já jsem udávál příklad tento:
if ($promenna !='') { ... tedy pokud není proměnná prázdná a ne pokud proměnná existuje... když ji nemám definovanou (většinou mám ve třídě: var $promenna ... ;) pak používám:
if (isset($promenna) && $promenna !='') {

Mastodont
:-) no zřejmě ti VIEW zde nevypíšu, vypadá jako každý view ... Příkladem pro použité PHP ve VIEW může být foreach pro řádky tabulky ... jestliže mám uložený pole s objekty, pak používám foreach ve VIEW (podle mě by byl nesmysl projet foreach v MODELu už s přidanýma html tagama, to by se pak nejednalo o MODEL ale o prasopsa (MODEL/VIEW)... to stejný s podmínkama... data jsou zobrazeny v jednom sloupci nebo ve dvou, nebo ve více (if ($i%2== ...), různě tvořené odkazy např. s funkcí Switch, atd... prostě mám velký VIEW (samozřejmě tipuju, že hodně věcí by se dalo udělat jinak a že bych mohl VIEW zmenšit, ale to není tématem tohoto příspěvku)... Když už tedy tak velké VIEW mám, zajímam se, jaký styl zápisu mám použít ... zda jednotný např. pouze v php nebo kombinovaný, nebo html s ukončováním a začínáním php parseru... obrázek jsem si udělal takovej, že se kombinaci zřejmě nevyhnu, ale že pro přehlednost není problém ve VIEW ukončovat a začínat php parser, protože jak říká bukaj, těch pár tisícin se stejnak 'ztratí' ztrátama úplně někde jinde... :-)
tiso
Profil
H13 if (isset($promenna) && $promenna !='') sa dá nahradiť za if(!empty($promenna))
K tomu cachovaniu Ti asi nič nenapíšem, sám som ešte nerobil veľký projekt kde by som ho použil a lepšie si naštudoval túto problematiku.
H13
Profil
tiso
if(!empty($promenna))

díky za tip, zase o trochu zkrátím kód :-)
Mastodont
Profil
Kešovat se dají různé věci - dotazy do databáze, části stránek, celé stránky. Dost dobře je to řešeno třeba v Symfony:
http://www.symfony-project.org/book/1_1/12-Caching
H13
Profil
Mastodont
zajímavé, ale myslím, že na toto budu muset ještě trochu vyzrát ... :-)
joe
Profil
Mastodont
Nerad tu narušuju téma od H13, ale mohl bys prosím nějak jednoduše vysvětlit, co si představit pod "cachovanim dotazu do db"? Cachování stránek provádím už téměr na všech svých stránkách, ale nevím jak použít cache dotazů do db a k čemu je to vlastně dobré, když můžu uložit do cache už celou část vygenerované stránky.

Mám si pod tím představit, že si budu ukládat někam předchozí dotazy do db nebo až výsledky z db?

H13
Osobně se příkláním k variantě a)
Přijde mi nejpřehlednější, s tím, že podmínku bych napsal na jeden řádek, ale myslím, že už právě mastodont to tu psal:
<?php if ($promenna !='') { ?>
   <div>
      <div><?php echo $promenna ?></div>
   </div>
<?php } ?>
souki
Profil
joe
<?php if ($promenna !='') { ?>
   <div>
      <div><?php echo $promenna ?></div>
   </div>
<?php } ?>


<?php if ($promenna !='') { 
echo "
   <div>
      <div>$promenna</div>
   </div>";
}
 ?>



Já ti nevim, ale druhá možnost mi přijde lepší
joe
Profil
souki
Když máš 50ti řádkovej soubor, tak proč ne :-) Pokud máš těch řádků trošku víc, o dost víc :), třeba 1000 a v jedné šabloně, i když to je málo pravděpodobné, přijde mi přehlednější ten způsob, co jsem napsal.
Přece jenom když nemáš HTML jako string a máš ho zvýrazněné, je to daleko přehlednější. A těch několik milisekund navíc nikoho nezabije :-)
souki
Profil
joe
Já mluvím právě o těch dlouhých :)
A zkus si najít chybějící chlupatou závorku, kdyžti editor nemůže kód odsadit a ty pořádně nevydíš, kde je chyba.
HTML mám zvýrazněné, když otevřu zdriják v prohlížeči. V editoru to nepotřebuju
joe
Profil
A zkus si najít chybějící chlupatou závorku, kdyžti editor nemůže kód odsadit a ty pořádně nevydíš, kde je chyba.
Používej editor, který zvýrazní jak HTML, tak PHP a pak se závorky nebudeš mít problém jako já :)
souki
Profil
joe
Zkrátka kdybys mi v šablonách dělal bordel tím svým stylem, tak letíš :D
Mastodont
Profil
joe
Mám na mysli ukládání výsledků dotazu, samozřejmě. Ovšem ne přímo result z query funkce, protože ten nijak serializovat nejde, ale až data, vytahaná z něj přímo do výsledné požadované podoby (pole, tabulka, menu apod.)
souki
Profil
Mastodont
Takže kusy šablony a ne výsledky sql dotazů
Mastodont
Profil
souki
To může být klidně array s konfigurací čehokoli.
souki
Profil
Mastodont
A jak je přímo uložíš? Serializované do zvláštního souboru?
« 1 2 »

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0