Slide 1

Slide 1 text

Zend Expressive

Slide 2

Slide 2 text

Neler Sunuyor ▸ Zend Diactoros ile PSR-7 Request ve Response arayüzünü sağlar. Yani PSR-7 desteği olan kütüphaneler ile rahatça çalışabilir. ▸ Zend Stratigility ile bir middleware altyapısı sunuyor. ▸ Routing altyapısı ve bir bunun için bir abstraction sunuyor. ▸ Dependency Injection için altyapı sunuyor. ▸ Templating için soyut bir arayüz (abstraction) sunuyor. ▸ Hata işleme/yönetme için Zend Stratigility sayesinde bir katman sunar. (ErrorHandler Middleware)

Slide 3

Slide 3 text

Zend Diactoros ve PSR-7 ▸ Zend Diactoros bir PSR-7 uygulaması içeren PHP paketidir. ▸ Node’daki gibi http.Server gibi bir paradigma sunuyor. ▸ Request’leri ve Response’ları PSR-7 standartlarına uygun hale getiriyor. ▸ Sadece Zend Framework için değil bir çok yerde kullanılabilecek genel bir yapı sunuyor.

Slide 4

Slide 4 text

PSR-7 ▸ RFC 7230 ve RFC 7231’de HTTP mesajlarının sunumu için bir arayüzdür. ▸ Neler var : ▸ Psr\Http\Message\MessageInterface (İstek ve cevap için ortak olan HTTP mesaj bilgilerini içerir) ▸ Psr\Http\Message\RequestInterface (Alıcı(Client) tarafındaki istektir) ▸ Psr\Http\Message\ServerRequestInterface (Sunucu tarafındaki(Server-Side) HTTP isteğidir.) ▸ Psr\Http\Message\ResponseInterface (Sunucu tarafı cevaptır.) ▸ Psr\Http\Message\StreamInterface (PHP Stream’ı kapsayan bir veri akış yapısıdır.) ▸ Psr\Http\Message\UriInterface (URI arayüzü) ▸ Psr\Http\Message\UploadedFileInterface (Dosya yükleme için oluşturulmuş arayüzdür.)

Slide 5

Slide 5 text

Zend Stratigility ve Middleware ▸ Sencha Connect’in PHP’de uygulanmış halidir diyebiliriz. ▸ Middleware yapısı ile 
 uygulama geliştirmenizi 
 sağlar. ▸ Bir PSR-7 kütüphanesine 
 ihtiyaç duyar. Tabiki 
 önerilenler arasında 
 Zend Diactoros var.

Slide 6

Slide 6 text

Middleware

Slide 7

Slide 7 text

Middleware

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

Routing ▸ Zend Stratigility basit bir routing (pipe) hizmeti sunmaktadır. ▸ Zend Expressive ise daha dinamik bir routing yapısı sunmaktadır. ▸ Routing yapısı Expressive içerisinde Abstract haldedir. Yani bu yapıyı kullanarak başka Routing Kütüphanelerini Expressive içerisinde kullanabilirsiniz. ▸ Şu anda Aura.Router, FastRoute, ve Zend-MVC hali hazırda entegre edilmiş halde.

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

Routing ve Piping ▸ Zend Expressive middleware’larınızı uygulamanıza dahil etmeniz için iki yöntem sunmaktadır. ▸ Piping (Stratigility) : ▸ Her çalışma zamanında çalıştırılacaksa ▸ Hata ayıklamak için kullanılacaksa ▸ Uygulamaları ayırmak için ▸ Routing (Expressive) : ▸ Belirli bir istekte çalışması için ▸ Dinamik routing için ▸ HTTP metodlarını ayırmak için ▸ URL katmanlarını oluşturmak için

Slide 13

Slide 13 text

Bagımlılık Enjeksiyonu (Dependency Injection) ▸ Zend Expressive Dependency Injection kullanımına teşvik eder. ▸ ExpressiveApp “Container Interop” arayüzünü implement eden DI Container’a ihtiyaç duyar. Bu Container middleware’ları LazyLoad etmek için kullanılır. ▸ zend-servicemanager, pimple-interop, aura.di şu anda hali hazırda kullanılabilir durumda. Container Interop arayüzünü implement eden diğer DI kütüphaneleri için bir wrapper yazmanız gerekebilir.

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

Templating ▸ Zend Expressive aslında bir template altyapısı gerektirmez ancak isteğe göre kullanabilirsiniz. ▸ Hali hazırda Plates, Twig ve ZendView, Expressive ile entegre edilebilir. ▸ Başka bir template engine kullanmak istiyorsanız 
 Zend\Expressive\Template\TemplateRendererInterface arayüzünü implement eden bir yapı kurmanız yeterlidir.

Slide 16

Slide 16 text

Hata Yönetimi ▸ Zend Stratigility’nin sağladığı FinalHandler ile hatalarınızı yönetebilirsiniz. `FinalHandler` aşağıdaki durumlarda çalıştırılacaktır: ▸ Hiçbir middleware bir response dönmediğinde ▸ `$next()` methodu ile bir hata gönderildiğinde

Slide 17

Slide 17 text

Hata Yönetimi - Whoops

Slide 18

Slide 18 text

Tesekkürler Blog : http://kulekci.net Twitter : http://twitter.com/kulekci Github : http://github.com/hkulekci Geri bildirimde bulunun : http://bit.ly/zffeedback