Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Zend Expressive'e Giriş

Zend Expressive'e Giriş

Zend Expressive nedir? Neye çözüm sunmaktadır? Hangi modullerden oluşmaktadır?

Haydar Külekci

May 17, 2016
Tweet

More Decks by Haydar Külekci

Other Decks in Technology

Transcript

  1. 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)
  2. 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.
  3. 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.)
  4. 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.
  5. 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.
  6. 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
  7. 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.
  8. 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.
  9. 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