Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Return, jaki sens, jakie zadania?
Forum PHP.pl > Forum > PHP > Object-oriented programming
teez
Witam!

Właśnie rozpoczynam naukę OOP z książką PHP obiekty, wzorce, narzędzia. Po paru lekcjach otrzymałem m.innymi taki kod:

  1. <?php
  2. class ShopProduct {
  3. public $numPages;
  4. public $playLength;
  5. public $title;
  6. public $producerMainName;
  7. public $price;
  8.  
  9. function __construct($title, $firstName, $price, $numPages = 0, $playLength = 0){
  10. $this->title = $title;
  11. $this->producerMainName = $firstName;
  12. $this->price = $price;
  13. $this->numPages = $numPages;
  14. $this->playLength = $playLength;
  15. }
  16. function getProducer() {
  17. return "{$this->producerMainName}";
  18. }
  19. function getSummaryLine() {
  20. $base = "{$this->title} ( {$this->producerMainName} )";
  21. return;
  22. }
  23. }
  24.  
  25.  
  26. ?>


I teraz mam pytanie, po co return? Do czego tu służy? Jakie ma zadanie? Pewnie błaha sprawa, ale przeszukując google natrafiam jedynie na zagraniczne witryny. Pozdrawiam.
buliq
hmm, metoda jest niepełna. Co chcesz zrobić z tym $base? Co to za próba wywołania?

$this->title ( {$this->producerMainName} )

To przecież nie ma sensu.
teez
Mniejsza o kod, chodzi mi o zadania return. Kiedy go używać i do czego głównie służy.

Trochę potestowałem i użyłem return do
  1. function drukuj(){
  2. return "{$this->title}</br>".
  3. "{$this->producerMainName}</br>".
  4. "{$this->price}</br>".
  5. "{$this->numPages}</br>";
  6. }


Lecz, czy ma ono jeszcze jakieś inne zadania?
viking
Do natychmiastowego przerwania wykonywania funkcji i zwrócenia wartości. Jeśli tak wygląda kod w kursie to go zwyczajnie wyrzuć do kosza.
teez
Kod w kursie tak nie wygląda. Sam po prostu pomieszałem. Ok, temat do zamknięcia.
buliq
Polubiłbym post wyżej.

To co wyrzuca return uzyskujesz w miejscu wywołania, musisz tego jeszcze użyć jakoś np echo $this->drukuj();
Fifi209
I takie coś:
  1. return "{$this->producerMainName}";


Polecałbym zmienić na:
  1. return $this->producerMainName;


Unikniesz wielu kłopotów, a poza tym... Doczytaj o używaniu cudzysłowów "
matix
A ja od siebie dorzucę:

  1. function getSummaryLine() {
  2. return sprintf("%s (%s)", $this->title, $this->producerMainName);
  3. }


Cóż za code review:D
Fifi209
@up
To akurat jest poprawne, mam na myśli sposób formatowania.
thek
True... Poprawny i często stosowany, zwłaszcza w przypadku wyjątków.
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.