Prawie wszędzie widziałem tę konwencję i czasami zbliża mnie to do doprowadzenia mnie do szału:
<?php //The loop ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php the_content(); ?>
<?php endwhile; // end of the loop. ?>
Gdzie <?php
i zamknięcie ?>
znajduje się w każdym wierszu, nawet jeśli nie ma interweniującego kodu HTML.
Moje pytanie brzmi: dlaczego? Dlaczego warto uwzględnić wszystkie te dodatkowe tagi?
Wydaje mi się, że ta konwencja dodaje znacznej ilości bałaganu do kodu, jest przede wszystkim denerwująca i dodaje, że o wiele więcej miejsc przypadkowo pomija tag otwierający lub zamykający.
UWAGA
Jest to kod pobrany z motywu Dwadzieścia Dwanaście, przykład podany przez WordPress.
php
theme-development
customization
Indigencja
źródło
źródło
Odpowiedzi:
Nie jest to zalecane w żadnym przewodniku po stylu WordPress i myślę, że jest to zły styl kodowania. Początkujący używają tego stylu, może dlatego, że bardziej przypomina HTML…
Niestety, domyślne motywy zbyt często używają tego stylu, więc niektórzy początkujący mogą pomyśleć, że jest to część stylu kodu.
Wadą tego stylu jest obsługa komentarzy. Przyjrzyj się uważnie poniższemu przykładowi i temu, że nie robi tego, czego autor może się spodziewać:
Powodzenia w debugowaniu tego. :)
Reguła: Przełączaj między kontekstem PHP i HTML tylko wtedy, gdy musisz utworzyć dane wyjściowe w obu językach. Używaj regularnych podziałów linii we wszystkich innych przypadkach.
Aktualizacja, dalsze przemyślenia: Każdy prawidłowy plik HTML jest kompletnym i poprawnym programem PHP. Tak, nawet jeśli nie zawiera ani jednego wiersza rzeczywistego kodu PHP.
Jeśli zaczniesz od HTML i dodasz małe fragmenty PHP krok po kroku… możesz skończyć ze stylem, o którym tutaj rozmawiamy. W tym momencie w grę wchodzi refaktoryzacja : gdy wszystko działa zgodnie z oczekiwaniami, przepisz kod, aż będzie tak czytelny, jak to możliwe, łatwy w utrzymaniu i rozszerzaniu, bez powtarzania części.
Myślę, że niektórzy ludzie są szczęśliwi bez tego ostatniego kroku i dlatego wkrótce nie umrze.
źródło
<? ... ?>
aby ułatwić zagnieżdżanie. Jedną rzeczą, którą zrobiłbym inaczej niż w przykładzie PO, jest to, że postawiłemthe_post();
własną linię.Chociaż unikam tego w komentarzach PHP, jestem zapalonym otwieraczem PHP / bliżej w plikach szablonów. Alternatywą jest echo HTML za pomocą ciągów PHP, co moim zdaniem wygląda jeszcze gorzej. Jako prymitywny przykład:
Czy przykład 2 jest bardziej szczegółowy? Być może? Ale moim zdaniem łatwiejsze do odczytania i edycji. Możesz sobie wyobrazić, jak brzydka może być dla złożonego HTML.
Dodatkowo, na marginesie: używanie
endforeach
iendif
pisanie HTML między logiką PHP poprawia czytelność o tonę w porównaniu do}
.źródło
}
ciąguendif
jednak jest to, że (w wielu edytorów) można łatwo zobaczyć, gdzie otwór{
jest, a zatem, czy wszystko zostało prawidłowo zamknięte. Spróbuj toendif
foreach ( $list_items as $list_item ) printf( '<li><a href="%1$s">%2$s</a></li>', $list_item->url, $list_item->name );
- dwie linie, HTML i PHP ładnie rozdzielone. : P<? ... ?>
i<?= ... ?>
.endif
w dowolnym przyzwoitym edytorze.Chodzi o wybór między wyświetlaniem strony jako:
Różni ludzie zwykle myślą o tym inaczej. Pamiętaj, że funkcje rzadko używają tego stylu, ponieważ bardziej przypominają blok czystego PHP. Z drugiej strony szablony nie są rzadkie, ponieważ są one bardziej rozłożone na pliki, a ilość czystego HTML może być z łatwością większa niż w przypadku PHP.
Jeśli spojrzysz na silniki szablonów (Mustache, Twig itp.) - wyglądają bardzo podobnie do tego stylu, z wyjątkiem tego, że ich składnia eliminuje gadatliwość zwykłego PHP.
PS Chcę zauważyć, że mówię o rozsądnym osadzaniu PHP w HTML, a nie o dosłownie otwieranie i kończenie znaczników w każdej linii tylko ze względu na to.
źródło
Odpowiedź jest dość prosta: publiczność. Gdy ludzie (nie programiści) chwytają motyw, a następnie przesyłając FTP na swoją instalację, uruchamiając konfigurację 5min i tak dalej, wydaje się, że programuje. Kiedy następnie chcą dodać lub zmienić jeden wiersz dowolnego motywu, być może już zorientowali się, czym jest HTML. PHP wciąż będzie poza ich zasięgiem. Sądzę więc, że ideą tego jest umożliwienie łatwiejszego dodawania lub usuwania elementów bez przerywania wszystkiego, gdy popełniają błąd.
Uwaga: to nie jest to, co lubię, wolę lub polecam. Myślę, dlaczego tak się dzieje.
źródło
Przekonałem się, że niektórzy nowi programiści są szkoleni w ten sposób. Uczęszczam na 40-godzinny kurs na temat Lyndy, a instruktor upuszcza tagi PHP w każdej linii, z wyjątkiem definicji funkcji. Prawdopodobnie jest to wyraźne rysowanie linii między HTML a PHP, co prawdopodobnie pomaga nowym ludziom zrozumieć, gdzie kończy się HTML, a zaczyna PHP. Po tym prawdopodobnie jest to nawyk. Zaczynałem się tym denerwować i postanowiłem sprawdzić, czy ktoś jeszcze narzeka.
źródło