[PHP] Różnice w składni, kwestie wydajności

0

Witam

Przykłady:
a)

<?php
     foreach($items as $item) {
         echo '<p class="item">':
         echo $item->value;
         echo '</p>';
     }
?>

b)

  <?php   foreach($items as $item) : ?>
    <p class="item">
    <?php echo $item->value; ?>
    </p>
   <?php endforeach ?>

Jak widać przykłady bardzo minimalistyczne, ale oddają chyba sens.
Spotkałem się z takimi zapisami i ciekawi mnie czy są jakieś konkretne argumenty przemawiające na korzyść jednej z metod.

Czy chodzi o czas wykonania?

Z jednej strony wejście / wyjście trybu PHP, z drugiej więcej wywołań funkcji echo...sam już nie wiem.

Może to tylko kwestia gustu programisty?

Pozdrawiam

0

Ja osobiście postawiłbym na rozwiązanie "a", ze względu na to, że używasz tam składki języka która napisana jest w C i jest szybka.
Chociaż być może ktoś wyśmieje moją opinię , ale na to bym postawił :)

Co do takich ciekawostek:
Co jest szybsze echo czy print() ?
odpowiedz: echo, ponieważ to składnia języka a print to funkcja :)

0

Olewaj wydajność i wybieraj czytelniejsze i prostsze rozwiązanie, dopóki nie zauważysz gdzieś wąskiego gardła. Wydajnościowe wąskie gardło trzeba jednak ZMIERZYĆ, a nie zgadnąć, gdzie się znajduje -- prawie zawsze zgadniesz źle. Także optymalizuj najpierw czytelność. Wydajnością się nie przejmuj, chyba że z góry przeanalizowałeś sytuację i pewne usprawnienia są tak mocno związane z architekturą, że musisz je wprowadzić od razu. Zwykle jednak takie coś oznacza, że system jest źle podzielony na warstwy, mało ortogonalny (wiele rzeczy zależy od wielu innych). Do fajnie zaprojektowanego systemu można stosunkowo łatwo dorzucić np. cache, czy coś w tym stylu.

Co do przytaczanych przez Ciebie rozwiązań to nie wydaje mi się, by ktoś wybierał jedno z nich ze względu na wydajność. Ja polecam stosować to drugie, gdy masz bardzo lekki szkielet aplikacji i korzystasz ze zwykłego PHP do generowania HTML-a, a nie z jakiegoś systemu szablonów (jak Smarty czy coś lepszego).

Wtedy drugi zapis JAK DLA MNIE jest czytelniejszy i bardziej zbliżony do zapisu szablonów. Z takim wyjątkiem, że zamiast:

<?php echo $item->value; ?>

polecam zrobić coś takiego:

<?= $item->value ?>

Krócej, zwięźlej i bardziej szablonopodobnie.

Zauważ podobieństwo:

Smarty:

{foreach from=$list item=element}
  {$element}
{/foreach}

Czyste PHP (z krótkimi tagami):
<? foreach($list as $element) : ?>
    <?= $element ?>
<? endforeach ?>
leadersmind napisał(a)

Co jest szybsze echo czy print() ?
odpowiedz: echo, ponieważ to składnia języka a print to funkcja

O RLY? Właśnie tworzenie takich legend ludowych jest bezsensowne :).

Print to nie jest żadna funkcja. Zobacz do specyfikacji: http://pl2.php.net/manual/en/function.print.php. Mówi: "print() is not actually a real function (it is a language construct)". Zresztą możesz to sprawdzić, próbując jej użyć jak zmiennej typu callback -- nie da się.

0

Dziękuje bardzo za dokładne wyjaśnienia.

Co do <?= ?>, znam to, ale ludzie to odradzają bo czasem serwer nie obsługuje, choć to pewnie margines, ale jednak przeczytałem już kilka takich opinii. Osobiście także preferuję drugą opcją ze względu na bardziej komfortową pracę w jakimś dobrym IDE.

0

@jamajka Kremlin:
Ja też zwykle używam <?php ?> zamiast krótkiego <? ?>, ale gdy używasz PHP jako języka szablonów, to krótsza forma wsparta alternatywną składnią (czyli np. foreach + endforeach) potrafi zwiększyć czytelność. Zresztą zawsze możesz użyć alternatywnej składni i dłuższej formy tagów PHP.

0
bswierczynski napisał(a)
leadersmind napisał(a)

Co jest szybsze echo czy print() ?
odpowiedz: echo, ponieważ to składnia języka a print to funkcja

O RLY? Właśnie tworzenie takich legend ludowych jest bezsensowne :).

Print to nie jest żadna funkcja. Zobacz do specyfikacji: http://pl2.php.net/manual/en/function.print.php. Mówi: "print() is not actually a real function (it is a language construct)". Zresztą możesz to sprawdzić, próbując jej użyć jak zmiennej typu callback -- nie da się.

No to tutaj mnie zastanowiłeś - tym bardziej, że informacje które podałem były zapisane w książce "PHP 5 w praktyce" napisane przez ludzi z ponad 10letnim stażem.
Tak czy siak - proszę tutaj testy: http://www.learnphponline.com/php-basics/php-echo-vs-print
echo 45% - print 55%

1 użytkowników online, w tym zalogowanych: 0, gości: 1