Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]PHP żegna się z klamrami?
Forum PHP.pl > Forum > Przedszkole
fiszol
Zajrzałem pierwszy raz od kilku lat do manuala php i zauważyłem tam takie zapisy:
  1. <?php
  2. while($a < $b):
  3. if($b):
  4. // bla bla
  5. endif;
  6. endwhile;
  7. ?>

Czy to ma jakąś przewagę nad zastoswaniem klamry? Który sposób zapisu instrukcji teraz jest "bardziej" prawidłowy?
Salvation
Nie jest "bardziej prawidłowy". To jest po prostu inny zapis tego samego.
A powstał (chyba) w czasach jak spaghetti code był powszechny i w pliku z rozszerzeniem `.php` mogłeś znaleźć fragment HTML-a, CSS-a i JS-a.

Taki zapis:
  1. <?php
  2. $var = true;
  3.  
  4. if ($var): ?>
  5. <h1>Hello World!<h1><br>I inny kod HTML / JS
  6. <?php endif;


Jest równoważny z tym:
  1. <?php
  2. $var = true;
  3.  
  4. if ($var) {
  5. echo '<h1>Hello World!<h1><br>I inny kod HTML / JS';
  6. }


Przy czym ten pierwszy zachowa dodatkowo wcięcie od lewej (` <h1>`), a drugi będzie zaczynał się skrajnie z lewej.
fiszol
Mógłbym godzinę przysięgać, że kilka lat temu takich przykładów w manualu nie było biggrin.gif
while
Generalnie odniosłem wrażenie, że to jest coś nowego. Zaintrygowało mnie to na tyle, by po kilku latach odwiedzić to forum.
Dziękuję za wyjaśnienie.
Tomplus
Ogólnie, to że jest możliwe stosowanie takiego stylu, to nie jest on zalecany przez rekomendacje standardu PHP. PSR-12 jasno mówi że bloki kodu muszą być objęte nawiasami klamrowymi.
https://www.php-fig.org/psr/psr-12/
fiszol
Przekopałem manual php na https://web.archive.org/ i taki zapis był w każdym zapisanym zrzucie (od 2001 po dzisiaj). Nie wiem czemu nigdy wcześniej nie zwróciłem na to uwagi.
Tomplus
Nie trzeba przekopywać archiwów, to jest nadal w dokumentacji:

while
  1. $i = 1;
  2. while ($i <= 10):
  3. echo $i;
  4. $i++;
  5. endwhile;


elseif
  1. if ($a > $b):
  2. echo $a." is greater than ".$b;
  3. elseif ($a == $b): // Note the combination of the words.
  4. echo $a." equals ".$b;
  5. else:
  6. echo $a." is neither greater than or equal to ".$b;
  7. endif;



switch
  1. switch ($i):
  2. case 0:
  3. echo "i equals 0";
  4. break;
  5. case 1:
  6. echo "i equals 1";
  7. break;
  8. case 2:
  9. echo "i equals 2";
  10. break;
  11. default:
  12. echo "i is not equal to 0, 1 or 2";
  13. endswitch;


To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.