Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Fragment PSR-7
Forum PHP.pl > Forum > PHP > Object-oriented programming
trzczy
Znam trochę angielski, ale jakoś nie rozumiem tego fragmentu PSR-7. A ciekawi mnie on, bo zastanawiam się, czy powinno się implementować MessageInterface również, kiedy implementuje się RequestInterface. Wydaje mi się, że w tym fragmencie o tym jest. Proszę o wytłumaczenie tego fragmentu:


'
Both Psr\Http\Message\RequestInterface and Psr\Http\Message\ResponseInterface extend Psr\Http\Message\MessageInterface.

While Psr\Http\Message\MessageInterface MAY be implemented directly, implementors SHOULD implement Psr\Http\Message\RequestInterface and Psr\Http\Message\ResponseInterface.

'

Z góry dziękuję
lukaskolista
Tak trochę wyrwane z kontekstu, jednak patrząc na cały tekst odnośnie tych interface'ów (http://www.php-fig.org/psr/psr-7/#1-1-messages) można to zinterpretować tak:

Można implementować bezpośrednio interface Psr\Http\Message\MessageInterface, jednak zaleca się implementację (osobno) Psr\Http\Message\RequestInterface i Psr\Http\Message\ResponseInterface.

Jak się mylę, to mnie poprawcie.
trzczy
Problem w tym, że ten fragment po przetłumaczeniu na polski jest wciąż niezrozumiały. Podszedłem do sprawy od drugiej strony. Skoro podawany przez FIG RequestInterface rozszerza MessageInterface, to nie powinno się stosować RequestInterface bez MessageInterface.

  1. interface RequestInterface extends MessageInterface
Comandeer
Tak po mojemu ten tekst oznacza tyle, co "nie powinno się tworzyć klas bezpośrednio implementujących interfejsu MessageInterface".
lukaskolista
Cytat
Skoro podawany przez FIG RequestInterface rozszerza MessageInterface, to nie powinno się stosować RequestInterface bez MessageInterface.
Nie tyle "nie powinno się stosować", po prostu nie da się tego niezastosować smile.gif

Od początku:
Masz 3 intarface'y:
MessageInterface
RequestInterface extends MessageInterface
ResponseInterface extends MessageInterface

Albo robisz 1 implementację MessageInterface i używasz jej dla zapytań i odpowiedzi, albo robisz 2 implementacje (jedna RequestInterface i jedna ResponseInterface) i implementacji RequestInterface używasz do przyjmowania zapytań, a implementacji ResponseInterface używasz do zwracania odpowiedzi.

Edit:
W końcu znalazłem: zend-diactoros
Zwróć uwagę na klasy Request i Response - implementują odpowiednie interface'y i nigdzie nie ma bezpośredniej implementacji MessageInterface, ponieważ inteface'y Request i Response ją wymuszają.
trzczy
Rzeczywiście się nie da implementować RequestInterface z pominięciem MessageInterface. Pozostaje tylko pytanie o zakres przyzwolenia na implementowanie MessageInterafce takie, że implementowanie RequestInterface lub ResponseInterface zostaje pominięte.
Comandeer, zdaje się, nie widzi takiego przyzwolenia.
lukaskolista
Przecież przetłumaczyłem Ci treść dokumentacji PSR-7, jest tam wyraźnie napisane, że można implementować bezpośrednio MessageInterface, ale się nie powinno i lepiej implementować osobno RequestInterface i ResponseInterface.
trzczy
Ok, ale nie trzeba tak personalnie: ja, ty. Przecież mówimy o zagadnieniach, które samodzielnie funkcjonują bez nas :-)
lukaskolista
Nie było nic personalnego w mojej wypowiedzi (a jak tak, to przepraszam), po prostu odniosłem się do Twojego pytania i mojego pierwszego postu w tym wątku.
Comandeer
@trzczy czy "nie powinno" oznacza "nie wolno"?
com
to oznacza tyle, ze można wstawić tam coś co implementuje MessageInterface, ale powinniśmy użyć RequestInterface, lub ResponseInterface. Chodzi o to, że obiekt ten nie może nie implementować MessageInterface wink.gif
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-2024 Invision Power Services, Inc.