Merhaba, arkadaşlar.
Başlıktan da anlaşılacağı üzere PHP ile kendi Mvc framework yapımızı oluşturmayı öğreneceğiz. Buradaki anlatım, PHP bilen ve OOP (İngilizce: Object - Oriented Programming, Kısaltma: OOP) mantığına hakim kişilere yönelik olduğunu belirtmek isterim. İnternet dünyasında PHP bilmeyenlere yönelik hazırlanmış çok fazla kaynak var. PHP bilmeyen kişilerin, o kaynaklara yönelmeleri daha doğru bir adım olacaktır. Buradaki anlatılanları internette bu şekilde makale olarak uzun uzadıya anlatan tek bir kaynak bulamazsınız. Bu yüzden umarım kodlamasını bir üst seviyeye çıkarmak isteyen herkesin işine yarar.
PHP (Hypertext Preprocessor), web tabanlı uygulamalar geliştirmek için kullanılan bir programlama dilidir. PHP, özellikle dinamik içerik üreten web siteleri ve web uygulamaları için çok yaygın olarak kullanılmaktadır.
Sunucu Tarafında Çalışma: PHP, sunucu tarafında çalışan bir betik dildir. Bu, kullanıcı tarafındaki tarayıcıda değil, web sunucusunda çalıştığı anlamına gelir. Kullanıcılar, tarayıcıları aracılığıyla PHP kodunu doğrudan görmezler; sadece sonuçları tarayıcılarına görüntülenir.
Dinamik İçerik Oluşturma: PHP, HTML içine gömülerek kullanılabilir ve bu sayede dinamik web sayfaları oluşturmak için kullanılır. Veritabanı bağlantıları, form işleme, dosya işlemleri gibi birçok web geliştirme görevini kolaylaştırmak için tasarlanmıştır.
Geniş Kütüphane Desteği: PHP'nin geniş bir standart kütüphane desteği vardır. Bu kütüphaneler, dosya işlemleri, veritabanı etkileşimi, XML işleme, ağ işlemleri ve daha birçok konuda fonksiyonlar içerir.
Çok Platformlu Desteği: PHP, birçok işletim sistemi ve web sunucu platformu üzerinde çalışabilir. Apache, Nginx gibi popüler web sunucuları ile uyumludur.
Açık Kaynak ve Ücretsiz: PHP, özgür ve açık kaynak bir yazılımdır. Bu, geliştiricilere kodlarını düzenleme ve dağıtma konusunda geniş bir özgürlük sağlar.
Kolay Öğrenme ve Kullanım: PHP, öğrenmesi nispeten kolay olan bir dil olarak bilinir. Bu, yeni başlayanlar için genellikle erişilebilir olmasını sağlar.
PHP'nin tarihinde birçok sürümü bulunmaktadır ve geliştirilme süreci devam etmektedir. Web uygulamaları, CMS (Content Management System) sistemleri, e-ticaret platformları gibi birçok alanda yaygın olarak kullanılmaktadır.
PHP'nin maalesef yazım konusunda diğer dillerde olduğu gibi merkezi bir standardı olmadı. Her ne kadar öğrenilmesi kolay olduğu söylense de bana göre PHP'nin öğrenilmesi kimler tarafından öğretildiğine bağlı olarak süreci uzatabiliyor ve zorlaştırabiliyor. Bunu biraz açmak gerekirse, bir şirketiniz var ve PHP ile web tabanlı uygulamalar geliştiriyorsunuz. Haliyle şirketinizde bu geliştirmeleri yapan yazılımcılara da ihtiyacınız olduğu için yazılımcı çalışanlarınıza bu uygulamaları yazdırmanız gerekiyor. Her yazılımcı kendi PHP bilgisine göre yazılımı ortaya çıkartıyordu. Bu durum 2010 hatta 2012 öncesine kadar PHP tarafında böyle ilerliyordu. Yazılan kodun herhangi bir standardı olmadığı için yani kod nasıl olsa çalışıyor mantığıyla yazıldığı için, şirket içerisinde sorunları da beraberinde getiriyordu. Bu sorunların en başında şirket o yazılımcılara bağlı kalabilir, tavizler verebilir, yazılımcı şirket işlerini aksatabilir, yazılımcı işi bırakabilir. Yazılımcı işi bıraktığında, bir başka yazılımcının gelip o standardı olmadan yazılan kodu çözmesi aylarını alabilir veya o yapıyı sıfırdan kendi bilgisine göre tekrar yazması gerekebilir. Bu da yaşanan bu sorunun sürekli tekrar etmesine neden olur. Bu şirketler için büyük bir sorundur. Bu yüzden büyük şirketler PHP dilini pek tercih etmiyor. İşte bu PHP'nin en büyük dezavantajlarından bir tanesi.
PHP dilinde PSR (PHP Standard Recommendations) standardına uyulması gerektiği ve yazdığım kod nasıl olsa çalışıyor mantığıyla kod yazmamayı bilmemiz gerekiyor. PSR (PHP Standard Recommendations) PHP projeleri arasında bir uyumluluk sağlamak için belirli kurallar ve standartlar içermektedir. Bu yüzden bu standartlara uymak gereklidir.
PHP üzerine geliştirme yaparken, ben framework kullanılmasından yanayım. Standardı olan, en azından bir yazılımcıya bağlı kalmadan, o yazılımcı işi bıraktığında o frameworke hakim olan bir başka yazılımcıyı işe alarak, standardı olan bir projeye kaldığı yerden devam ettirebilirim. Bu yüzden frameworkler kullanılmalıdır ve her zaman bir standarda bağlı kalınmalıdır. Nasıl olsa çalışıyor mantığıyla yazılan kodun maalesef günümüzde bir karşılığı yoktur. Kendi frameworkleri ile proje çıkaran şirketler de var tabii ki burada anlatacağım yapıda tam olarak bunu anlatıyor. Aslında burada Laravel gibi, Symfony frameworklere geçmeden önce basit bir yapıda bu frameworklerin nasıl çalıştığı ile alakalı da bilgi sahibi olacaksınız. Php diline ve OOP (İngilizce: Object - Oriented Programming, Kısaltma: OOP) kavramlarına hakim olmadan direkt frameworklerle başlamak hatalı bir tercih olur. Unutmayın sizi yazılımcı yapan o dile olan hakimiyetinizdir. Frameworkler sadece tercihtir ve sizin işlerinizi bir standarda sokmak ve hızlandırmak için tasarlanmıştır. XenForo tarafına gelecek olursak, burada anlatacağım mantığı bilmiyorsanız xenforo'a eklenti vs yazamazsınız. Burada anlatacağım mantığı zaten biliyorsanız ilgili yazılımın dökümanlarına bakarak istediğiniz geliştirmeyi yapabilirsiniz. Ayrıca burada anlatılanları hiçbir yerde anlatılmadığını da bilin. Yani bu bilgiler gerçekten bu yapıyı merak edenler için bulunmaz bir nimet.
Başlıktan da anlaşılacağı üzere PHP ile kendi Mvc framework yapımızı oluşturmayı öğreneceğiz. Buradaki anlatım, PHP bilen ve OOP (İngilizce: Object - Oriented Programming, Kısaltma: OOP) mantığına hakim kişilere yönelik olduğunu belirtmek isterim. İnternet dünyasında PHP bilmeyenlere yönelik hazırlanmış çok fazla kaynak var. PHP bilmeyen kişilerin, o kaynaklara yönelmeleri daha doğru bir adım olacaktır. Buradaki anlatılanları internette bu şekilde makale olarak uzun uzadıya anlatan tek bir kaynak bulamazsınız. Bu yüzden umarım kodlamasını bir üst seviyeye çıkarmak isteyen herkesin işine yarar.
PHP (Hypertext Preprocessor), web tabanlı uygulamalar geliştirmek için kullanılan bir programlama dilidir. PHP, özellikle dinamik içerik üreten web siteleri ve web uygulamaları için çok yaygın olarak kullanılmaktadır.
Sunucu Tarafında Çalışma: PHP, sunucu tarafında çalışan bir betik dildir. Bu, kullanıcı tarafındaki tarayıcıda değil, web sunucusunda çalıştığı anlamına gelir. Kullanıcılar, tarayıcıları aracılığıyla PHP kodunu doğrudan görmezler; sadece sonuçları tarayıcılarına görüntülenir.
Dinamik İçerik Oluşturma: PHP, HTML içine gömülerek kullanılabilir ve bu sayede dinamik web sayfaları oluşturmak için kullanılır. Veritabanı bağlantıları, form işleme, dosya işlemleri gibi birçok web geliştirme görevini kolaylaştırmak için tasarlanmıştır.
Geniş Kütüphane Desteği: PHP'nin geniş bir standart kütüphane desteği vardır. Bu kütüphaneler, dosya işlemleri, veritabanı etkileşimi, XML işleme, ağ işlemleri ve daha birçok konuda fonksiyonlar içerir.
Çok Platformlu Desteği: PHP, birçok işletim sistemi ve web sunucu platformu üzerinde çalışabilir. Apache, Nginx gibi popüler web sunucuları ile uyumludur.
Açık Kaynak ve Ücretsiz: PHP, özgür ve açık kaynak bir yazılımdır. Bu, geliştiricilere kodlarını düzenleme ve dağıtma konusunda geniş bir özgürlük sağlar.
Kolay Öğrenme ve Kullanım: PHP, öğrenmesi nispeten kolay olan bir dil olarak bilinir. Bu, yeni başlayanlar için genellikle erişilebilir olmasını sağlar.
PHP'nin tarihinde birçok sürümü bulunmaktadır ve geliştirilme süreci devam etmektedir. Web uygulamaları, CMS (Content Management System) sistemleri, e-ticaret platformları gibi birçok alanda yaygın olarak kullanılmaktadır.
PHP'nin maalesef yazım konusunda diğer dillerde olduğu gibi merkezi bir standardı olmadı. Her ne kadar öğrenilmesi kolay olduğu söylense de bana göre PHP'nin öğrenilmesi kimler tarafından öğretildiğine bağlı olarak süreci uzatabiliyor ve zorlaştırabiliyor. Bunu biraz açmak gerekirse, bir şirketiniz var ve PHP ile web tabanlı uygulamalar geliştiriyorsunuz. Haliyle şirketinizde bu geliştirmeleri yapan yazılımcılara da ihtiyacınız olduğu için yazılımcı çalışanlarınıza bu uygulamaları yazdırmanız gerekiyor. Her yazılımcı kendi PHP bilgisine göre yazılımı ortaya çıkartıyordu. Bu durum 2010 hatta 2012 öncesine kadar PHP tarafında böyle ilerliyordu. Yazılan kodun herhangi bir standardı olmadığı için yani kod nasıl olsa çalışıyor mantığıyla yazıldığı için, şirket içerisinde sorunları da beraberinde getiriyordu. Bu sorunların en başında şirket o yazılımcılara bağlı kalabilir, tavizler verebilir, yazılımcı şirket işlerini aksatabilir, yazılımcı işi bırakabilir. Yazılımcı işi bıraktığında, bir başka yazılımcının gelip o standardı olmadan yazılan kodu çözmesi aylarını alabilir veya o yapıyı sıfırdan kendi bilgisine göre tekrar yazması gerekebilir. Bu da yaşanan bu sorunun sürekli tekrar etmesine neden olur. Bu şirketler için büyük bir sorundur. Bu yüzden büyük şirketler PHP dilini pek tercih etmiyor. İşte bu PHP'nin en büyük dezavantajlarından bir tanesi.
PHP dilinde PSR (PHP Standard Recommendations) standardına uyulması gerektiği ve yazdığım kod nasıl olsa çalışıyor mantığıyla kod yazmamayı bilmemiz gerekiyor. PSR (PHP Standard Recommendations) PHP projeleri arasında bir uyumluluk sağlamak için belirli kurallar ve standartlar içermektedir. Bu yüzden bu standartlara uymak gereklidir.
PHP üzerine geliştirme yaparken, ben framework kullanılmasından yanayım. Standardı olan, en azından bir yazılımcıya bağlı kalmadan, o yazılımcı işi bıraktığında o frameworke hakim olan bir başka yazılımcıyı işe alarak, standardı olan bir projeye kaldığı yerden devam ettirebilirim. Bu yüzden frameworkler kullanılmalıdır ve her zaman bir standarda bağlı kalınmalıdır. Nasıl olsa çalışıyor mantığıyla yazılan kodun maalesef günümüzde bir karşılığı yoktur. Kendi frameworkleri ile proje çıkaran şirketler de var tabii ki burada anlatacağım yapıda tam olarak bunu anlatıyor. Aslında burada Laravel gibi, Symfony frameworklere geçmeden önce basit bir yapıda bu frameworklerin nasıl çalıştığı ile alakalı da bilgi sahibi olacaksınız. Php diline ve OOP (İngilizce: Object - Oriented Programming, Kısaltma: OOP) kavramlarına hakim olmadan direkt frameworklerle başlamak hatalı bir tercih olur. Unutmayın sizi yazılımcı yapan o dile olan hakimiyetinizdir. Frameworkler sadece tercihtir ve sizin işlerinizi bir standarda sokmak ve hızlandırmak için tasarlanmıştır. XenForo tarafına gelecek olursak, burada anlatacağım mantığı bilmiyorsanız xenforo'a eklenti vs yazamazsınız. Burada anlatacağım mantığı zaten biliyorsanız ilgili yazılımın dökümanlarına bakarak istediğiniz geliştirmeyi yapabilirsiniz. Ayrıca burada anlatılanları hiçbir yerde anlatılmadığını da bilin. Yani bu bilgiler gerçekten bu yapıyı merak edenler için bulunmaz bir nimet.