Giriş

RESTful mimarilerle çalışmaya başladığımdan beri, front-end ve back-end’in keskin çizgilerle birbirinden izole olabileceğini fark etmiştim. İki tarafın da kendine has iş yükü olduğunu gördüğümde, back-end tarafında web için yükü en aza indirmenin çözümlerini aramaya başladım.


Kurumsal, bireysel, blog, forum ve e-ticaret gibi alanlarda çalıştıktan sonra, PHP benim için web tarafında ikinci plana düşmüştü. Çünkü JavaScript ile yol alıp sadece gelen veriyi manipüle etmek, her geliştirici gibi benim de işimi kolaylaştırıyordu.


Bu yüzden PHP tarafında, web tarafına sadece veriyi çıktılayıp web tarafına sunacak bir model geliştirdim.


Çözüm

Bu modeli ilk defa PHP ile uygulamanın heyecanını tarif edemem. Bugün bu modeli ve RESTful API mimarisini temel alarak geliştirdiğim açık kaynaklı bir projeden bahsetmek istiyorum.

Temelde yapmak istediğim şey, belirli çekirdek modüller temelinde inşa edilmiş bir sistemdi. Bu modüller, proje için temel yapı taşları olarak işlev görüyor. Yani sistem, farklı bölümlerden oluşsa da, bu bölümler birbirleriyle ortak parçalar üzerinden iletişim kurarak tek bir uyumlu modül olarak çalışmaktadır.

Bu yapı, her modülün kendi sorumluluk alanında bağımsız çalışabilmesini sağlarken, gerektiğinde diğer modüllerle entegrasyon ve iş birliği yapabilmesini de mümkün kılar. Dolayısıyla, proje genelinde modülerlik ve esneklik sağlanmış olur. Her modül, belirli bir işlevi yerine getirirken, ortak bir altyapıyı kullanarak diğer modüllerle uyum içinde çalışır.

Bu model, paket programlama ile proje arasında bir köprü görevi görür. Yani, sadece paket programlama mantığı ile hareket etsek, tüm parçaları ayrı ayrı ele alır ve izole ederdik. Ancak bu modelde, her modül hem bağımsız olarak geliştirilebilir hem de diğer modüllerle entegre çalışabilir.

Ben OOP programlama ile geliştirilen herhangi bir proje arasında kodlama tabanlı değil, mantık tabanlı bir ilişki kuruyorum. Bu prensibi temel aldığımda bir sistemde bulunması gereken alanları şu şekilde sıralıyorum.


Sistemin Bileşenleri


Hata Yönetimi

Sistemin hem client taraflı hata yönetiminin yapılması. En önemli konulardan biri olan bu kısım, pek çok projede tam olarak bir standart değil. Hata yönetiminin hem front-end hem de back-end tarafında keskin çizgilerle iki taraflı olarak ayrılması.

Yerelleştirme Yönetimi

Çoklu dil desteğinin sistemin tüm dinamik parçaları üzerinde sağlanması. Sistemin temelinden itibaren dil altyapısı ile geliştirilmesi, hem tek dil hem de çoklu dile göre davranabilmesi yeteneği.

Modül Yönetimi

Sistemde kullanılan modüllerin altyapısının hazırlanması ve geliştirilecek olan modüllerin bu altyapı üzerine inşa edilmesi.

Veritabanı Yönetimi

Veritabanı yönetiminin OOP tabanlı olarak sağlanabilmesi ve sistemin genelinde modüler yapılar içerisindeki yapılarla entegre olabilmesi.

Opsiyon Yönetimi

Bir sistemin en çok kullanılan kısımları, özelleştirilebilir olan özellikleridir. Opsiyonel olan alanların artırılarak gruplandırılması ve tek bir yerden yönetilebilmesini kapsar.

Ayar Yönetimi

Varsayılan olarak ayar mekanizmasının oluşturulması.

Girdi Yönetimi ve Bağlam Yönetimi

Girdi ve bağlam alanları temelde request, response konularını ilgilendirir, front-end tarafından alınan istek mekanizmasının REST API mimarisi tabanında işlenmesini kapsar.


Sonuç

Sonuç olarak dosya tabanlı olarak istekleri işleyen bir PHP projesi ortaya çıktı :) Mevcut method ve controller yapısı ile gelen tüm HTTP isteklerini server tarafında istenilen biçimde handle etmeyi amaçlıyorum.

Henüz tam olarak tüm özellikleri sağlamasa da slim versiyon bir API projesi geliştirdim. Projenin detaylarına ve dökümantasyonuna aşağıdan ulaşabilirsiniz.


Github Repository - UltraFastApi - Ultra Fast API Based on PHP