Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP5] - dziwna składnia
Forum PHP.pl > Forum > Przedszkole
dzesi
Witam was jeśli ktos mi odpowie to prosze wykasowac ten temat . Bo będzie chyba niepotrzeby , pisze dla tego ze nie wiem co znacza {} w manualu nic nie znalazłem albo zle patrzałem
przykład
  1. <?php
  2. class CdProduct {
  3. public $playLength;
  4. public $title;
  5. public $producerMainName;
  6. public $producerFirstName;
  7. public $price;
  8.  
  9. function __construct(  $title, $firstName, 
  10. $mainName, $price, 
  11. $playLength ) { 
  12. $this->title  = $title;
  13. $this->producerFirstName = $firstName;
  14. $this->producerMainName = $mainName;
  15. $this->price  = $price;
  16. $this->playLength = $playLength;
  17.  
  18. }
  19.  
  20. function getPlayLength() {
  21. return $this->playLength;
  22. }
  23.  
  24. function getSummaryLine() {
  25. $base = "$this->title ( $this->producerMainName, ";
  26. $base .= "$this->producerFirstName )"; 
  27. $base .= ": czas nagrania - $this->playLength";
  28. return $base;
  29. }
  30.  
  31. function getProducer() {
  32. return "{$this->producerFirstName}".
  33.  " {$this->producerMainName}";
  34. }
  35. }
  36.  
  37. class BookProduct {
  38. public $numPages;
  39. public $title;
  40. public $producerMainName;
  41. public $producerFirstName;
  42. public $price;
  43.  
  44. function __construct(  $title, $firstName, 
  45. $mainName, $price, 
  46. $numPages ) { 
  47. $this->title  = $title;
  48. $this->producerFirstName = $firstName;
  49. $this->producerMainName = $mainName;
  50. $this->price  = $price;
  51. $this->numPages = $numPages;
  52. }
  53.  
  54. function getNumberOfPages() {
  55. return $this->numPages;
  56. }
  57.  
  58. function getSummaryLine() {
  59. $base = "$this->title ( $this->producerMainName, ";
  60. $base .= "$this->producerFirstName )"; 
  61. $base .= ": liczba stron - $this->numPages";
  62. return $base;
  63. }
  64.  
  65. function getProducer() {
  66. return "{$this->producerFirstName}".
  67.  " {$this->producerMainName}";
  68. }
  69.  
  70. }
  71.  
  72. $product1 = new BookProduct( "Moja Antonia", "Willa", "Cather", 59.99, 300 );
  73. $product2 =  new CdProduct( "Exile on Coldharbour Lane", 
  74. "The", "Alabama 3", 25.99, 60.33 );
  75.  
  76. print "Autor: ".$product1->getProducer()."\n";
  77. print "Liczba stron:  ".$product1->getNumberOfPages()."\n";
  78. print "Opis:  ".$product1->getSummaryLine()."\n";
  79. print "Wykonawca: ".$product2->getProducer()."\n";
  80. print "Czas nagrania: ".$product2->getPlayLength()."\n";
  81. print "Opis:  ".$product2->getSummaryLine()."\n";
  82. ?>

Co maja oznaczać return "{$this->producerFirstName}".
" {$this->producerMainName}";
{} w returnie , echo itd bo te nawiasy wogole sie nie wyswietlaja wieć jaka one funkcje pełnia ?
pojas
Według mnie nawiasy klamrowe oddzielają nazwę zmiennej od tekstu, który jest przy niej.

  1. <?php
  2.  
  3. $iLiczba = 13;
  4.  
  5. echo("Moja liczba to $iLiczba\n<br>"); // -> Moja liczba to 13
  6.  
  7. echo("Moja liczba to $iLiczbanascie\n<br>"); // -> Moja liczba to
  8.  
  9. echo("Moja liczba to {$iLiczba}naście"); // -> Moja liczba to 13naście
  10.  
  11. ?>


Jednak nie przeczytałem tego w poradniku/manualu czy książce, ale sam wydedukowałem, więc...
dzesi
Tez sam do tego doszedłem ,ale nigdzie na ten temat nic nie znalazłem , czy to nie dziwne ?.Nadal bede szukał bo to dość interesujące i wiecej coś o tym sie dowiedzieć by można
em1X
ale co w tym dziwnego? wszystko jest opisane w manualu
Cysiaczek
@dzesi - poco tworzyć topic, który chcesz za chwilę usuwać?

Przenoszę na Przedszkole
dzesi
Po to żeby sie dowiedzieć , nie sądzę żeby komuś było to potrzebne smile.gif
Zick4
Dobra po krótce wyjaśnię po co są magiczne { oraz }.
  1. <?php
  2. echo "jakiś text plepleple $obiekt->zmienna jakiś text plepleple ";
  3. ?>

Ten kod działa tak: znak cala czyli " informuje interpreter php ahaaa czyli teraz będzie łańcuch o kurde w dodatku muszę go dokładnie przeanalizować, bo może sa w nim zmienne ale narazie wyswietlam ciąg. ooo znak dolara świetnie mamy zmienną ok znalazłem całą nazwę zmiennej $obiekt i pod nią podstawię wartość kryjącą się pod nią, a potem wyświetlę reszte łańcucha. Zatem PHP nie uważa, że $obiekt->zmienna to zmienna, a uważa samo $obiekt za zmienną. Aby zmienić to standardowe myślenie musimy użyć właśnie { oraz }. Gdy teraz damy:
  1. <?php
  2. echo "jakiś text plepleple {$obiekt->zmienna} jakiś text plepleple ";
  3. ?>

To PHP się domyśli, żę PEŁNĄ nazwa zmiennej to $obiekt->zmienna i poprawnie ją obsłuży.
mls
Oczywiście to samo możnaby zapisać w postaci
  1. <?php
  2. return $this->producerFirstName . ' ' . $this->producerMainName;
  3. ?>

i byłoby to lepszym rozwiązaniem, jeśli chodzi o wydajność...
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.