Spójrz na to:
<?php
echo "Hello World";
?>
<br />
<?php
echo "Welcome";
?>
A teraz spójrz na to:
<?php
echo "Hello World";
echo "<br />";
echo "Welcome";
?>
Który z powyższych przykładów uważa się za lepszy (przynajmniej z punktu widzenia wydajności) ?.
Wiem, że przykłady są trywialne, ale od samego początku chcę przestrzegać dobrych praktyk, więc kiedy będę mieć coraz więcej linii, nie wpłyną one negatywnie na wydajność ani nic w tym rodzaju.
web-development
php
html
zgrzyt
źródło
źródło
Odpowiedzi:
Jak zauważa komentarz, należy tego dokonać za pomocą szablonów. Ale jeśli tylko twój wybór jest możliwy. Przypadek 1 będzie lepszy. Jest to ta sama koncepcja, co w przypadku nadmuchiwania układu Androida przez XML lub programowego tworzenia interfejsu użytkownika. Twój
<br/>
jest statyczną zawartością z twojego html i wszystko co serwer będzie robił, to pokaże. Ale jeśli użyjesz php, aby go uruchomić, użyje zasobów twoich serwerów i będzie działał na komputerze.Oto jak należy to zrobić: index.php:
header.html i footer.html to szablony.
źródło
Aby bezpośrednio odpowiedzieć na twoje pytanie: Nigdy nie odbijaj statycznego tekstu ani HTML. Pozostaw to poza swoim PHP.
Ucieczka do PHP jest marnotrawstwem, jeśli wszystko, co musisz zrobić, to przekazać statyczny tekst lub statyczny HTML. Cały kod
<?php ?>
jest wysyłany do PHP w celu interpretacji. Oznacza to, że twoja strona działa wolniej i marnujesz energię elektryczną, jeśli bez żadnego powodu przekazujesz do PHP duże ilości statycznego tekstu. (Czasami jest powód.)Najlepszą praktyką jest logika i chrząkanie w plikach bez HTML, tylko PHP.
Lubię to robić z frameworkiem MVC. Mam czysty PHP w modelach i kontrolerach oraz mieszankę HTML i PHP w widokach. Nie potrzebujesz frameworka MVC; możesz po prostu umieścić swoją mieszankę HTML w plikach szablonów, które następnie dołączasz do czystych plików PHP.
Kiedy już utworzysz zmienne (które nie zawierają HTML) w czystych plikach PHP, możesz przekazać je do pliku za pomocą HTML. Tam i tylko tam można mieszać HTML i PHP. Ale to jest ważne, ale podczas pracy z plikami zawierającymi HTML, ogranicz PHP do minimum.
Na szczęście PHP zawiera przyjazne narzędzia, dzięki którym PHP jest łatwiejszy do odczytania po zmieszaniu z HTML.
Alternatywna składnia
Najlepszą praktyką jest używanie zwykłej składni PHP przy pisaniu czystego PHP, ale alternatywnej przy mieszaniu PHP i HTML.
W zwykłych plikach PHP bez HTML:
Jest to piękne dla czystego PHP, ale nie jest idealne, gdy uciekasz od HTML. W szczególności nawiasy zamykające są często trudne do zrozumienia, gdy pojawiają się w dużych stosach HTML.
Wydaje się, na podstawie twojego pytania, które napisałeś, w pliku mieszającym HTML i PHP, to:
Z powodów opisanych powyżej chcemy, aby HTML nie był wysyłany do PHP. Robimy to tak:
Wyciągnęliśmy HTML z naszych tagów PHP, co jest ulepszeniem. Ale możemy pójść dalej.
Zauważ, jak mało pouczający jest nawias zamykający? Nie wiemy, czy zamyka pętlę, czy instrukcję if. W powyższym przykładzie wydaje się to trywialne, ale w tekście if / endif wewnątrz pętli / endloopa często znajdują się dziesiątki linii HTML.
Najlepszą praktyką jest to, że w pliku mieszającym PHP i HTML używasz alternatywnej składni, która pomija otwieranie i zamykanie nawiasów klamrowych (
{ }
):Oprócz semantyki nowej składni (
:
iendif;
zamiast{
i}
) powinieneś zauważyć dwie rzeczy:<?php ?>
tagami, więc nie są interpretowane. Z powodów opisanych powyżej jest to dobre.<?php } ?>
) zamykające rzeczy, które trudno znaleźć w miejscu, w którym się otworzyły (ponieważ są zmieszane z dużą ilością niechlujnie wyglądającego HTML). Ponownie wyobraź sobie duży plik HTML z pętlami i instrukcjami if. Określanie tego, co zamykasz, może wiele wyjaśnić.Ta sama przyjazna dla szablonu składnia może być również używana w przypadku pętli:
Krótkie tagi
Innym świetnym narzędziem dostarczanym przez PHP, którego znowu chcesz używać tylko do mieszania PHP i HTML razem, są krótkie tagi. Może być konieczne włączenie krótkich tagów w pliku php.ini. Po włączeniu krótkie tagi sprawiają, że wszystko jest jeszcze bardziej czytelne.
Bez krótkich znaczników musisz pisać,
<?php echo $something; ?>
ale przy użyciu krótkich znaczników możesz pisać,<?=$something?>
a uzyskasz dokładnie taki sam wynik.Łącząc krótkie znaczniki i alternatywną składnię PHP, możesz naprawdę pisać eleganckie pliki HTML, które zawierają elementy PHP. Biorąc nasz ostatni przykład pętli (tylko część wewnątrz pętli), krótkie znaczniki pozwalają nam zmniejszyć:
do
co jest znacznie bardziej czytelne.
Czy możemy pójść dalej? Tak. Korzystając z różnych systemów szablonów, możesz wykonywać następujące czynności:
Co jest niezwykle czytelne. Systemy szablonów są jednak znacznie poza zakresem pierwotnego pytania (które zresztą zostawiłem jakiś czas temu).
źródło
short_open_tag
dyrektywa będzie zawsze włączona. PHP 5.4<?=$thing?>
udostępnia cały czas, nawet gdyshort_open_tag
jest wyłączony. Ponadto,short_open_tag
jest domyślnie wyłączona, aby uniknąć konfliktów z XML.<?php $foo='ABC'; echo '<div>', $foo, '</div>'
i<?php $foo='ABC'; ?><div><?=$foo?></div>
dają dokładnie te same kody, tj. są identyczne.<li>{$thing}</li>
tak, jak pokazano, z przewagą nad podwójnymi cudzysłowami, że nie musisz uciec przed podwójnymi cudzysłowami. Możesz także przypisać heredoc lub przekazać go do funkcji, więc jest o wiele czystsze niż php / html, jeśli używasz go w blokach, np.array_reduce($items, function($s, $item) { $name = htmlspecialchars($item['name']); return $s . <<< EOT <li>{$name}: {$item['price']}</li> EOT; })
Uczysz się, zapomnij o wydajności na stronach PHP. Zamiast tego wybierz najłatwiejszy do odczytania .
Patrząc na twoje dwa przykłady, drugi jest zdecydowanie najłatwiejszy do odczytania, chociaż myślę, że wynika to z zastosowanych odstępów. Mówisz, że od samego początku szukasz dobrych nawyków. Myślę, że lepiej jest spędzić czas, poprawiając kod. Może to oznaczać kilkakrotne przepisanie sekcji, dopóki nie będziesz z niej zadowolony.
Jeśli naprawdę lubisz się za kulisami, postaram się wyjaśnić, co dzieje się z treściami statycznymi na stronie PHP. Jedną z pierwszych rzeczy jest „parsowanie” całej strony na kod wykonywalny (tak jak widać między
<?php ?>
tagami). Jednym z nich jest zamiana dowolnego tekstu statycznego naecho
.Więc to:
przekształca się w coś takiego:
Przetwarzanie jest bardzo małe, ale nie ma różnicy w wykonywaniu wynikowego kodu. Jeśli używasz akceleratora PHP, parsowanie jest wykonywane tylko raz, a następnie buforowane, więc po załadowaniu pierwszej strony nie zobaczysz żadnej różnicy w wydajności.
Pamiętaj: łatwy do odczytania!
źródło
echo
, jeśli masz na myśli dosłownie (co sugeruje twój język). Wynik jest taki sam, ale metody są bardzo różne. To, co nazywacie „tekstem statycznym”, w rzeczywistości ucieka z PHP do HTML. Kiedy tak się dzieje, serwer zaczyna wysyłać nieprzetworzony tekst. Nie analizuje go za pośrednictwem PHP, tak jak by to robiłecho
. Wpływ na wydajność jest prawdopodobnie niewielki w dowolnych okolicznościach, ale różnica mechanistyczna jest ważna.Jedną z najlepszych cech PHP jest to, że jest przeznaczony do osadzania w HTML. Zwykle służy do tworzenia szablonów. Ułatwia odczyt i konserwację kodu, ponieważ oddziela kod PHP od HTML.
Ale jeśli drukujesz tylko statyczną stronę, taką jak „Hello World!” to zły pomysł.
źródło
Aby odpowiedzieć na twoje pytanie po prostu: biorąc pod uwagę twój przykładowy kod, nie będzie żadnej różnicy w wydajności. PHP jest przetwarzany na poziomie serwera / hosta, podczas gdy HTML jest przetwarzany przez agenta użytkownika / osobę przeglądającą twoją stronę w przeglądarce. Kto będzie szybszy? Trudne do ustalenia.
Zgadzam się z innymi, mówiąc, że każdy ma swoje mocne i słabe strony i może naprawdę dobrze ze sobą współpracować. PHP jest programowalny i może wykonywać obliczenia i pracować ze zmiennymi. Z tego powodu wszystkie moje strony są w końcu PHP i wywołują fragmenty kodu HTML - szablony, jak wspomniano, i wstawiają zmienne, dzięki czemu mój HTML staje się dynamiczny.
W twoim przykładzie możesz połączyć HTML razem w jedną instrukcję PHP w następujący sposób:
Mam nadzieję, że to trochę wyjaśni.
źródło
istnieją ograniczenia w używaniu HTML w PHP.
Przez większość czasu będziesz mieć swój HTML na zewnątrz. Utworzyłbyś stronę tak samo, jak gdybyś nie korzystał z PHP, a następnie dodaj PHP do obszarów dokumentu, w których potrzebujesz. W dokumencie może znajdować się kilka fragmentów PHP.
źródło
Ogólnie uważa się, że wyjściem kodu HTML z PHP jest zła forma. Jest tego kilka przyczyn, ale głównym z nich jest to, że łatwiej, szczególnie na dłuższą metę, utrzymać kod, jeśli kod HTML i PHP są oddzielone.
To jest tak jak HTML, CSS i JavaScript; oddzielenie go jest po prostu o wiele łatwiejsze i bardziej praktyczne.
Z technicznego punktu widzenia nie ma to jednak absolutnie żadnej różnicy w sposobie wyświetlania danych. Dla PHP to tylko bajty z rzędu.
źródło
<?php echo 'hello'; ?>
przechodzi do PHP.hello
nie jest przekazywane do PHP. Wszystko, co jest przekazywane do PHP, jest konwertowane na kod bajtowy, a następnie interpretowane. Wymaga to czasu, mocy przetwarzania i energii elektrycznej.