Bir internet sitesi yapabilmeniz için php ya da html öğrenmeniz şart değil; pek çok popüler web sitesi python, C, ruby on rails, java gibi dillerde kodlanmıştır (google, twitter, youtube, vs vs vs).

Aslında tüm olayın sırrı da bu, bir işi yapmanın tek bir yolu yok, bir sürü yolu var; en uygun şekilde yapabilmek sizin olaya ne kadar hakim olduğunuzun ölçütüdür.

Arkadaşın algoritmadan bahsettiği; temel programlama mantığı. Bir işi nasıl yaparsınız, ilgili kontrolleri nasıl sağlarsınız? Örneğin; nesne tabanlı programlama yapıyorsunuz, siteadresi .com/profil şeklinde bir link yapısıyla üyelerin profillerini göstermek istiyorsunuz. Bu link yapısıyla bu sayfayı nasıl çağırabileceğinizi biliyorsanız temel programlama mantığına az ya da çok bir şekilde hakimsiniz demektir. Ne kadar kısa yoldan basitçe yapabiliyorsanız o kadar iyidir.

Bence hiç PHP gibi bir dil ile uğraşmayın, uğraşacaksanız da direk OOP (object oriented programming - nesne yönelimli programlama) seviyesine geçin; bir kere nesne tabanlı yazılıma alışırsanız çok zor gelecektir. Ya da PHP yerine python gibi çok güzel ve geniş kütüphaneleri olan diller var onları öğrenebilirsiniz. OOP nedir?

Frameworklere gelecek olursak; programlama dillerinde bazı tekrarlanan işleri yapmak için fonksiyonlar yazarız. Bir çok fonksiyon kullanmamız gereken yerlerde ise sınıflar yani class yapısı devreye girer. Sadece birden çok fonksiyon kullanmanın yanı sıra class yapısı sade bir kodlama yapısı da sunar. OOP de class yapısı kullanır. Birden fazla class yapısını bir arada kullanmamıza olanak veren ve pek çok hazır class barındıran sistemlere de framework denir. Bu frameworklerden en popülerleri CodeIgniter, Laravel, Symfony ve CakePHP olarak sıralanabilir. Ben pek çok projemde codeigniter kullanıyorum, bazı arkadaşlar eleştirecek olsa da sadece yapısı sayesinde öğrenmeyi çok kolaylaştıracaktır, framework öğrenmek istersen denemeni öneririm.


Frameworkler genelde MVC tasarım şablonu kullanır. MVC Model-View-Controller kelimelerinin baş harfleridir. Program işleyiş olarak 3 ana gruba ayrılır. View, kullanıcı tarafından görüntülenen şablondur. Biz genelde view dosyalarında HTML kullanırız. Model, tüm hesaplamaları yapan kısımdır. Controller ise veri trafiğini sağlayan kısımdır. Yani ilk olarak controller adındaki kontrolcü çalışır, verileri alır ve işlemesi için model dosyasına gönderir, model dosyasından gelen cevabı tekrar kontrolcü alır ve view dosyasına göndererek kullanıcıya sunar. Aşağıda örnek vereceğim daha iyi anlayabilirsin.

Örneğin bir kullanıcı siteadresi .com/profil linkine girdi. Bu link ile framework otomatik olarak Profil adlı controller dosyasını çalıştırır. Profil adlı controller dosyası ise öncelikle Profil adlı model dosyasını çağırır. Model dosyası açılırken oturum (session) kontrolü yapar ve kullanıcı giriş yapmadıysa false değerini, kullanıcı giriş yaptıysa kullanıcı bilgilerini değer olarak geri döndürür. (Bazı arkadaşlar oturum kontrollerini controller dosyası içinde yapıyorlar, bu MVC yapısına uygun değildir ve framework kullanma amacını da saptırmış olan bir durumdur.) Sonra controller dosyası model dosyasından gelen veriyi kontrol eder ve ona göre gereken şablonu çağırarak kullanıcıya gösterir.

Mümkün olduğunca kafanı karıştırmadan anlatmaya çalıştım umarım yardımcı olabilmişimdir. Takıldığın yerde özelden de mail ile de ulaşabilirsin. Başarılar dilerim


Düzenleme Notu: Bu kadar çok programlama dili ve framework neden var diye düşünüyor olabilirsin. Bunun cevabı çok basit aslında, arayışlar. Bir dilin yeterli olmadığı noktada bir başkası ortaya çıkmış. Bir işlevi daha kolay ve daha fonksiyonel yapmaya çalışmaktan başka bir şey değil aslında. Frameworkler de benzer şekillerde oluşuyor, tümünün amacı kodlamacıya kolaylık sağlamak, bazı çok kullanılan işlemleri (kullanıcı, oturum, sepet,vs vs) içinde hazır bulundurarak kullanımasunmak, olmayan işlemleri kolayca hazırlayabilmek (bir yerden veri çekerek yazmak), 3-5 sene sonra bir sorun olduğunda binlerce satır kodu analiz etmek yerine sorunu kolayca bulabilmek, yine benzer şekilde başka birileri koda baktığında da kodlarınızı kolayca anlamasını sağlamak.