0 0 O K C o n t e n t - T y p e : t e x t / p l a i n T h i s i s t h e r e s p o n s e b o d y 1. Status line 2. Headers 3. Empty line 4. Message body
\ M e s s a g e \ M e s s a g e I n t e r f a c e Psr\Http\Message\RequestInterface Psr\Http\Message\ServerRequestInterface Psr\Http\Message\ResponseInterface
s t - > g e t M e t h o d ( ) ; / / " G E T " $ r e q u e s t - > w i t h M e t h o d ( ' P O S T ' ) ; e c h o $ r e q u e s t - > g e t M e t h o d ( ) ; / / G E T Pogrešno Poruke su imutabilne.
s t - > g e t M e t h o d ( ) ; / / " G E T " $ r e q u e s t = $ r e q u e s t - > w i t h M e t h o d ( ' P O S T ' ) ; e c h o $ r e q u e s t - > g e t M e t h o d ( ) ; / / P O S T Pravilno Korisitimo novu instancu dobijenu od mutator metode.
request/response instanci koje mogu biti korišćeni kao osnove za kreiranje drugih poruka. Promenjeni objekat se mora eksplicitno zameniti sa prethodnim.
M v c E v e n t $ e ) { $ r e s p o n s e = $ e - > g e t R e s p o n s e ( ) ; $ r e s p o n s e - > s e t H e a d e r L i n e ( ' x - f o o ' , ' b a r ' ) ; }
c t i o n ( M v c E v e n t $ e ) { $ r e s p o n s e = $ e - > g e t R e s p o n s e ( ) ; $ e - > s e t R e s p o n s e ( $ r e s p o n s e - > w i t h H e a d e r ( ' x - f o o ' , ' b a r ' ) ) ; }
g e = $ m e s s a g e - > w i t h H e a d e r ( ' f o o ' , ' b a r ' ) ; e c h o $ m e s s a g e - > g e t H e a d e r L i n e ( ' f o o ' ) ; / / O u t p u t s : b a r e c h o $ m e s s a g e - > g e t H e a d e r L i n e ( ' F O O ' ) ; / / O u t p u t s : b a r $ m e s s a g e = $ m e s s a g e - > w i t h H e a d e r ( ' f O O ' , ' b a z ' ) ; e c h o $ m e s s a g e - > g e t H e a d e r L i n e ( ' f o o ' ) ; / / O u t p u t s : b a z
g e = $ m e s s a g e - > w i t h H e a d e r ( ' f o o ' , ' b a r ' ) - > w i t h A d d e d H e a d e r ( ' f o o ' , ' b a z ' ) ; $ h e a d e r = $ m e s s a g e - > g e t H e a d e r L i n e ( ' f o o ' ) ; / / $ h e a d e r c o n t a i n s : ' b a r , b a z ' $ h e a d e r = $ m e s s a g e - > g e t H e a d e r ( ' f o o ' ) ; / / [ ' b a r ' , ' b a z ' ] s t r i n g M e s s a g e I n t e r f a c e : : g e t H e a d e r L i n e ( ) s t r i n g [ ] M e s s a g e I n t e r f a c e : : g e t H e a d e r ( )
t e r f a c e : : w i t h U r i ( U r i I n t e r f a c e $ u r i , $ p r e s e r v e H o s t = f a l s e ) će po default-u zameniti originalni H o s t sa H o s t header- om koji se nalazi u UriInterface instanci Moguće je promeniti ovo ponašanje koristeći drugi argument $ p r e s e r v e H o s t
Problemi sa preteranim konzumiranjem dostupne memorije jer je sadržaj pročitan i sačuvan kompletno u memoriji. Implementacija varira od veličine poruke.
e s s a g e \ S t r e a m I n t e r f a c e Skriva implementacije operacija čitanja i pisanja stream-a. Implementacije mogu koristiti ugrađene PHP stream wrapper-e: p h p : / / m e m o r y i p h p : / / t e m p Nudi javne metode za proveru mogućnosti stream-a: i s R e a d a b l e ( ) , i s W r i t a b l e ( ) i i s S e e k a b l e ( ) _ _ t o S t r i n g ( ) vraća kompletan sadržaj tela odjedanput.
e s s a g e \ U r i I n t e r f a c e "efektivni URL" je modelovan pomoću U r i I n t e r f a c e OOP pristup raznim delovima URI-a Definiše _ _ t o S t r i n g ( ) metodu za jednostavan string prikaz modelovanog URI-a
e s s a g e \ S e r v e r R e q u e s t I n t e r f a c e OOP pristup superglobalima i lakša manipulacija istim Promoviše testiranje Definiše takozvane "atribute" koji služe za komunikaciju unutar same aplikacije.
I L E S superglobalu. a r r a y ( ' a v a t a r ' = > a r r a y ( ' t m p _ n a m e ' = > ' p h p U x c O t y ' , ' n a m e ' = > ' m y - a v a t a r . p n g ' , ' s i z e ' = > 9 0 9 9 6 , ' t y p e ' = > ' i m a g e / p n g ' , ' e r r o r ' = > 0 , ) , )
e s ' = > a r r a y ( ' n a m e ' = > a r r a y ( 0 = > ' f i l e 0 . t x t ' , 1 = > ' f i l e 1 . h t m l ' , ) , ' t y p e ' = > a r r a y ( 0 = > ' t e x t / p l a i n ' , 1 = > ' t e x t / h t m l ' , ) , / * e t c . * / ) , ) WTH!
e s ' = > a r r a y ( 0 = > a r r a y ( ' n a m e ' = > ' f i l e 0 . t x t ' , ' t y p e ' = > ' t e x t / p l a i n ' , / * e t c . * / ) , 1 = > a r r a y ( ' n a m e ' = > ' f i l e 1 . h t m l ' , ' t y p e ' = > ' t e x t / h t m l ' , / * e t c . * / ) , ) , ) Očekivano...
l e I n t e r f a c e kao rešenje! < i n p u t t y p e = " f i l e " n a m e = " a v a t a r " > / / S e r v e r R e q u e s t I n t e r f a c e : : g e t U p l o a d e d F i l e s ( ) a r r a y ( ' a v a t a r ' = > / * U p l o a d e d F i l e I n t e r f a c e i n s t a n c e * / )
s r \ H t t p \ M e s s a g e ; i n t e r f a c e M e s s a g e I n t e r f a c e { p u b l i c f u n c t i o n g e t P r o t o c o l V e r s i o n ( ) ; p u b l i c f u n c t i o n w i t h P r o t o c o l V e r s i o n ( $ v e r s i o n ) ; p u b l i c f u n c t i o n g e t H e a d e r s ( ) ; p u b l i c f u n c t i o n h a s H e a d e r ( $ n a m e ) ; p u b l i c f u n c t i o n g e t H e a d e r ( $ n a m e ) ; p u b l i c f u n c t i o n g e t H e a d e r L i n e ( $ n a m e ) ; p u b l i c f u n c t i o n w i t h H e a d e r ( $ n a m e , $ v a l u e ) ; p u b l i c f u n c t i o n w i t h A d d e d H e a d e r ( $ n a m e , $ v a l u e ) ; p u b l i c f u n c t i o n w i t h o u t H e a d e r ( $ n a m e ) ; p u b l i c f u n c t i o n g e t B o d y ( ) ; p u b l i c f u n c t i o n w i t h B o d y ( S t r e a m I n t e r f a c e $ b o d y ) ; }
s r \ H t t p \ M e s s a g e ; i n t e r f a c e R e q u e s t I n t e r f a c e e x t e n d s M e s s a g e I n t e r f a c e { p u b l i c f u n c t i o n g e t R e q u e s t T a r g e t ( ) ; p u b l i c f u n c t i o n w i t h R e q u e s t T a r g e t ( $ r e q u e s t T a r g e t ) ; p u b l i c f u n c t i o n g e t M e t h o d ( ) ; p u b l i c f u n c t i o n w i t h M e t h o d ( $ m e t h o d ) ; p u b l i c f u n c t i o n g e t U r i ( ) ; p u b l i c f u n c t i o n w i t h U r i ( U r i I n t e r f a c e $ u r i , $ p r e s e r v e H o s t = f a l s e ) ; }
s r \ H t t p \ M e s s a g e ; i n t e r f a c e R e s p o n s e I n t e r f a c e e x t e n d s M e s s a g e I n t e r f a c e { p u b l i c f u n c t i o n g e t S t a t u s C o d e ( ) ; p u b l i c f u n c t i o n w i t h S t a t u s ( $ c o d e , $ r e a s o n P h r a s e = ' ' ) ; p u b l i c f u n c t i o n g e t R e a s o n P h r a s e ( ) ; }
s r \ H t t p \ M e s s a g e ; i n t e r f a c e S e r v e r R e q u e s t I n t e r f a c e e x t e n d s R e q u e s t I n t e r f a c e { p u b l i c f u n c t i o n g e t S e r v e r P a r a m s ( ) ; p u b l i c f u n c t i o n g e t C o o k i e P a r a m s ( ) ; p u b l i c f u n c t i o n w i t h C o o k i e P a r a m s ( a r r a y $ c o o k i e s ) ; p u b l i c f u n c t i o n g e t Q u e r y P a r a m s ( ) ; p u b l i c f u n c t i o n w i t h Q u e r y P a r a m s ( a r r a y $ q u e r y ) ; p u b l i c f u n c t i o n g e t U p l o a d e d F i l e s ( ) ; p u b l i c f u n c t i o n w i t h U p l o a d e d F i l e s ( a r r a y $ u p l o a d e d F i l e s ) ; p u b l i c f u n c t i o n g e t P a r s e d B o d y ( ) ; p u b l i c f u n c t i o n w i t h P a r s e d B o d y ( $ d a t a ) ; p u b l i c f u n c t i o n g e t A t t r i b u t e s ( ) ; p u b l i c f u n c t i o n g e t A t t r i b u t e ( $ n a m e , $ d e f a u l t = n u l l ) ; p u b l i c f u n c t i o n w i t h A t t r i b u t e ( $ n a m e , $ v a l u e ) ;
s r \ H t t p \ M e s s a g e ; i n t e r f a c e S t r e a m I n t e r f a c e { p u b l i c f u n c t i o n _ _ t o S t r i n g ( ) ; p u b l i c f u n c t i o n c l o s e ( ) ; p u b l i c f u n c t i o n d e t a c h ( ) ; p u b l i c f u n c t i o n g e t S i z e ( ) ; p u b l i c f u n c t i o n t e l l ( ) ; p u b l i c f u n c t i o n e o f ( ) ; p u b l i c f u n c t i o n i s S e e k a b l e ( ) ; p u b l i c f u n c t i o n s e e k ( $ o f f s e t , $ w h e n c e = S E E K _ S E T ) ; p u b l i c f u n c t i o n r e w i n d ( ) ; p u b l i c f u n c t i o n i s W r i t a b l e ( ) ; p u b l i c f u n c t i o n w r i t e ( $ s t r i n g ) ; p u b l i c f u n c t i o n i s R e a d a b l e ( ) ;
s r \ H t t p \ M e s s a g e ; i n t e r f a c e U p l o a d e d F i l e I n t e r f a c e { p u b l i c f u n c t i o n g e t S t r e a m ( ) ; p u b l i c f u n c t i o n m o v e T o ( $ t a r g e t P a t h ) ; p u b l i c f u n c t i o n g e t S i z e ( ) ; p u b l i c f u n c t i o n g e t E r r o r ( ) ; p u b l i c f u n c t i o n g e t C l i e n t F i l e n a m e ( ) ; p u b l i c f u n c t i o n g e t C l i e n t M e d i a T y p e ( ) ; }
s r \ H t t p \ M e s s a g e ; i n t e r f a c e U r i I n t e r f a c e { p u b l i c f u n c t i o n g e t S c h e m e ( ) ; p u b l i c f u n c t i o n g e t A u t h o r i t y ( ) ; p u b l i c f u n c t i o n g e t U s e r I n f o ( ) ; p u b l i c f u n c t i o n g e t H o s t ( ) ; p u b l i c f u n c t i o n g e t P o r t ( ) ; p u b l i c f u n c t i o n g e t P a t h ( ) ; p u b l i c f u n c t i o n g e t Q u e r y ( ) ; p u b l i c f u n c t i o n g e t F r a g m e n t ( ) ; p u b l i c f u n c t i o n w i t h S c h e m e ( $ s c h e m e ) ; p u b l i c f u n c t i o n w i t h U s e r I n f o ( $ u s e r , $ p a s s w o r d = n u l l ) ; p u b l i c f u n c t i o n w i t h H o s t ( $ h o s t ) ; p u b l i c f u n c t i o n w i t h P o r t ( $ p o r t ) ;
biblioteke potrebne za rad (cURL) Projekti imaju svoju HTTP apstrakciju Direktan pristup superglobalima Projekti se oslanjaju na sopstvene implementacije Neki projekti su prinuđeni da prave adaptere ukoliko žele da koriste implementaciju drugog projekta