Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Użycie { w ciągu znaków
Forum PHP.pl > Forum > Przedszkole
zbygal83
W książce, którą obecnie studiuję mam podany przykład:
CODE
public function sayHello() {
echo "Cześć {$this->getName()}";
}

Wiem że zapis echo "Cześć {$this->getName()}"; jest jednoznaczny z echo "Czesc " . $this->getName();. Nigdy wcześniej się z tym nie spotkałem, więc chciałbym wiedzieć jak taka składnia się nazywa i z czego wynika. Może pytanie banalne, ale jak chłonę wiedzę to nie lubię zostawiać czegoś niedopowiedzianego. I jeszcze jedno pytanie: który z tych zapisów jest częściej stosowany przez doświadczonych programistów?
cycofiasz
Complex (curly) syntax

http://www.php.net/manual/en/language.type...parsing.complex
nekomata
Ja osobiście nie lubię stosować takiego zapisu ponieważ jeśli używasz cudzysłowia(") to parser przeszukuje całą zawartość w poszukiwaniu zmiennych a jeśli używasz apostrofu (') to paser traktuje całą zawartość jako tekst.
Czyli (dla przykladu użyje Marka) :
  1. echo "Cześć {$this->getName()}"; //wyświetli Cześć Marek
  2. echo "Czesc " . $this->getName(); //wyświetli Cześć Marek
  3. // A z apostrofem jest tak
  4. echo 'Cześć {$this->getName()}'; //wyświetli Cześć {$this->getName()}
  5. echo 'Czesc ' . $this->getName(); //wyświetli Cześć Marek

Według mnie opłaca się używać apostrofów, czemu?Każda setna sekundy się liczy.
vermis
Cytat(nekomata @ 19.01.2011, 20:09:30 ) *
Według mnie opłaca się używać apostrofów, czemu?Każda setna sekundy się liczy.

Taaaa a potem i tak korzysta się z frameworków, ORM'ów, Smartów i innych pożeraczy czasu procesora i pamięci, bo tak jest wygodniej.
Ale w teorii masz rację winksmiley.jpg
Mephistofeles
Nawet teoria mówi, że to nie ma znaczenia. Mimo to ja i tak używam wersji "optymalnej", z przyzwyczajenia.
Crozin
Cytat
Każda setna sekundy się liczy.
Łączenie tekstu na poziomie PHP jest z reguły wolniejsze, niż skorzystanie z dodatkowego parsera na poziomie C. Więc jak Ci tak na tych setnych częściach sekundy bardzo zależy to zacznij korzystać z cudzysłowów.
zbygal83
@nekomata: wiem o tym, że parser przeszukuje "" pod względem zmiennych i że obciąża to procesor. Pytałem, bo na początku nauki chciałbym przyswoić sobie dobre nawyki programistyczne, a o takie muszę pytać ludzi siedzących w programowaniu.

@Mephistofeles: co dla Ciebie znaczy wersja "optymalna"?
nekomata
Cytat(Crozin @ 19.01.2011, 20:36:19 ) *
Łączenie tekstu na poziomie PHP jest z reguły wolniejsze, niż skorzystanie z dodatkowego parsera na poziomie C. Więc jak Ci tak na tych setnych częściach sekundy bardzo zależy to zacznij korzystać z cudzysłowów.

Szczerze mówiąc nie byłem pewny więc sprawdziłem.Używając :
  1. <!-- put this at the top of the page -->
  2. <?php
  3. $mtime = microtime();
  4. $mtime = explode(" ",$mtime);
  5. $mtime = $mtime[1] + $mtime[0];
  6. $starttime = $mtime;
  7. ;?>
  8.  
  9. <!-- put other code and html in here -->
  10. <?php
  11.  
  12. $marek = 'zygmunt';
  13. $zosia = 'kunegunda';
  14. $kruk = 'maciej';
  15.  
  16. while($i <100000){
  17. echo $marek.' posiada 15 tysięcy pomarańczowych żołędzi, jednak owe zostały mu skradzione.'.$zosia.'Stara się pomoć zygmuntowi, jednak '.$kruk.' się tylko smieję bo wie że '.$marek.' tylko schował zołedzie w puszcze po czekoladzie i zakopał w rzece.<br/>';
  18. $i++;
  19. }
  20. ?>
  21. <!-- put this code at the bottom of the page -->
  22. <?php
  23. $mtime = microtime();
  24. $mtime = explode(" ",$mtime);
  25. $mtime = $mtime[1] + $mtime[0];
  26. $endtime = $mtime;
  27. $totaltime = ($endtime - $starttime);
  28. echo "This page was created in ".$totaltime." seconds";
  29. ;?>

wynik..(pomijając tonę textu)
This page was created in 50.307214975357 seconds
a wersja z cudzysłowem czyli
  1. <!-- put this at the top of the page -->
  2. <?php
  3. $mtime = microtime();
  4. $mtime = explode(" ",$mtime);
  5. $mtime = $mtime[1] + $mtime[0];
  6. $starttime = $mtime;
  7. ;?>
  8.  
  9. <!-- put other code and html in here -->
  10. <?php
  11.  
  12. $marek = 'zygmunt';
  13. $zosia = 'kunegunda';
  14. $kruk = 'maciej';
  15.  
  16. while($i <100000){
  17. echo "$marek posiada 15 tysięcy pomarańczowych żołędzi, jednak owe zostały mu skradzione.$zosia Stara się pomoć zygmuntowi, jednak $kruk się tylko smieję bo wie że $marek tylko schował zołedzie w puszcze po czekoladzie i zakopał w rzece.<br/>';
  18. $i++;
  19. }
  20. ?>
  21. <!-- put this code at the bottom of the page -->
  22. <?php
  23. $mtime = microtime();
  24. $mtime = explode(" ",$mtime);
  25. $mtime = $mtime[1] + $mtime[0];
  26. $endtime = $mtime;
  27. $totaltime = ($endtime - $starttime);
  28. echo "This page was created in ".$totaltime." seconds";
  29. ;?>

This page was created in 50.989140033722 seconds

Odpaliłem to na localhoscie i mój komputer jest już starszego pokolenia ale.. wychodzi praktycznie to samo. różnica to tylko 0.6 sekundy.
Jednak ja i tak zostanę przy apostrofach.Czemu?Bo mi ładniej koloruję wszystko w dreamweaverze.
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.