• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Symfony - typ return controllera - response

VPS Starter Arubacloud
0 głosów
150 wizyt
pytanie zadane 19 stycznia 2019 w PHP przez niezalogowany

hej, mam jedno pytanie.

Przerabiam kursy symfony ze strefy kursów.  Niestety prowadzący lubi nie wytłumaczyć niektórych rzeczy, po prostu robi i nie mówi co to jest "tak ma być i koniec".

Pierwszy controller.

namespace AppBundle\Controller;


use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class AuctionController extends Controller
{
    /**
     * @Route("/", name="auction_index")
     *
     * @return Response
     */
    public function indexAction(){

        $auctions = Array(
            'title' => 'Samochód',
            'description' => 'Opis samochodu jest tutaj',
            'price' => "250.000 PLN"
        );

        return $this->render("Auction/index.html.twig", $auctions);
    }
}

Pytanie:

Po co mi "use Symfony\Component\HttpFoundation\Response;" oraz "@return Response"?

Usunałem to, sprawdziłem działanie strony, wszystko zachowuje się tak samo, czy ktoś może w krótki sposób mi to wyjaśnić?

2 odpowiedzi

0 głosów
odpowiedź 19 stycznia 2019 przez Arkadiusz Waluk Ekspert (287,550 p.)
To jest komentarz phpDocumentora. To takie specjalne komentarze, dzięki którym można np. później wygenerować dokumentację projektu czy też IDE na ich podstawie może sugerować określone rzeczy (w przypadku return chyba wiadomo - co jest zwracane).
komentarz 19 stycznia 2019 przez niezalogowany
Nie zrozumieliśmy się zupełnie :)
Wiem co to jest php doc, chodziło mi o ten use bardziej :)
komentarz 19 stycznia 2019 przez Arkadiusz Waluk Ekspert (287,550 p.)
No... nie wiesz co to use? :P Importuje klasę. Jest @return w phpDocumentorze, tam wskazuje jaką klasę zwraca. Mogłoby być od razu z pełną przestrzenią nazw, np. @return Symfony\Component\HttpFoundation\Response, równie dobrze może być @return Response + wcześniejsze zaimportowanie tej klasy (tak jak masz). Bez znaczenia, po prostu ma to wskazać na klasę, którą zwraca metoda.
komentarz 19 stycznia 2019 przez niezalogowany
Też nie o to chodziło, moje pytanie odnosi się konkretnie do symfony.

dlaczego autor kursu w tym przypadku zastosował tego use'a skoro nic nie zmieniał w końcowym wyniku na stronie
komentarz 19 stycznia 2019 przez Arkadiusz Waluk Ekspert (287,550 p.)
No to tak jak napisałem. Metoda render() zwraca obiekt Response (w tym możesz się utwierdzić sprawdzając źródło tej metody). Pokazana przez Ciebie metoda kontrolera też więc zwraca obiekt Response (robi tylko return na $this->render()). Stąd zaznaczył to tym komentarzem. Istnienie czy nie use nie ma tu żadnego znaczenia, równie dobrze mógł zapisać tak jak podałem: @return \Symfony\Component\HttpFoundation\Response wyszłoby to samo. Najwyraźniej jednak stwierdził, że czytelniejszym zapisem jest zaimportowanie klasy raz i używanie dalej samej jej nazwy. Albo po prostu generował ten komentarz z automatu i tak się wygenerowało. Zapis z use czy bez nie ma tu znaczenia, istotą jest zaznaczenie w @return tego, co zwraca metoda.
komentarz 19 stycznia 2019 przez niezalogowany
Rozumiem, czyli use został tu dodany tylko w celu czytelności i nie ma wpływu na działanie aplikacji
komentarz 19 stycznia 2019 przez Arkadiusz Waluk Ekspert (287,550 p.)
Tak; sam use tak bezpośrednio nigdy nie ma wpływu. Problem się pojawia, gdy chcesz użyć klasy, której nie ma w danej przestrzeni nazw i jej nie zaimportujesz (nie zrobisz use) ;) Standardowo obiektu takiej klasy nie mógłby utworzyć, więc będzie to błąd.  W tym przypadku używany jest on w komentarzu phpdoca, a więc nawet usunięcie use nie zepsuje kodu. Co najwyżej IDE nie będzie sugerowało Ci co zwraca dana metoda (będzie szukał klasy Response, a ta nie istnieje w tej samej przestrzeni nazw zapewne) albo przy generowaniu jakiejś dokumentacji z phpDocumentora się posypie.
0 głosów
odpowiedź 19 stycznia 2019 przez ShiroUmizake Nałogowiec (46,300 p.)
Ten controler również potrafi odpowiedzieć na request. Na jaki?  Sprawdż pod funkcją auction_index, albo to co jest zarejestrowane pod tą akcję. Tak imo pamiętam było Symfony.

Podobne pytania

0 głosów
0 odpowiedzi 138 wizyt
pytanie zadane 25 października 2019 w PHP przez michal_php Stary wyjadacz (13,700 p.)
0 głosów
1 odpowiedź 478 wizyt
pytanie zadane 17 lutego 2018 w PHP przez sapero Gaduła (4,100 p.)
0 głosów
1 odpowiedź 306 wizyt
pytanie zadane 5 stycznia 2019 w Sieci komputerowe, internet przez luna22 Obywatel (1,420 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...