Yii Uygulamalarının Yapısı





        Bir önceki yazımda Yii Framework ile bir uygulamaya nasıl başlanılacağından bahsetmiştim. Bu yazım ise geçen yazıda oluşturduğum 'sbun' ismindeki uygulamanın yapısı hakkında olacak.

        sbun uygulama dizinimizin içerisindeki dizinler / dosyalar;
  • assets/: Dizini JavaScript ve statik dosyaları bulundurur.
  • css/: Dizini stil dosyalarını bulundurur.
  • images/: Uygulamadaki görsel içeriklerin bulunduğu dizindir.
  • protected/: Dizini Model - View - Controller dosyalarını ve diğer önemli değiştirilebilir dosyaları içerir. İleriki bölümde içeriği daha detaylı anlatılmıştır.
          Sırası gelmişken ileride kullanacağımız Gii Modülünde yazma hatası almamak için bu dosyaya yazma izni verilmelidir. Aşağıdaki kodu eğer sadece localhost'da çalışıyorsanız çalıştırın. Yerelde değilseniz sadece yazılması gereken dosyalara izin verin. Güvenlik sorunları ile karşılaşmak istemeyiz. Ubuntu'da terminale:

          sudo chmod 775 -R /var/www/html/gosmin/protected komutunu yazarak dosyamıza yazma izni veriyoruz.
  • themes/: Adından da anlaşılacağı gibi arayüzün değiştirildiği dizin.
  • index.php: Uygulama çalıştırıldığında çalışan asıl script'tir. Bütün uygulama bu dosyadan başlar.
  • index-test.php: Bu dosyanın index.php'den tek farkı konfigürasyon için 'config/main/.php' yerine 'config/test.php' dosyasını çağırıyor olmasıdır. Bu dosyalar arasındaki gark ise unit test bileşenlerinin kullanılıyor olmasıdır.
        Kısaca dosya yapısından bahsettikten sonra; localhost/sbun adresine giderek, oluşturduğumuz uygulamayı görebilirsiniz. Bu adres aslında localhost/sbun/index.php adresiyle aynı yeri gösterir. Varsayılan olarak bize ana dizindeki index.php sayfasının içeriği gösterilir. Peki bu index.php dosyası nerede?

        /var/www/html/sbun/index.php

        Bu dosya Yii FW için Entry Script denilen bir dosya. Uygulama çalıştırıldığında çalışan asıl script bu dosyadır. Bütün uygulamalar buradan başladığını söylemiştik. Bu dosyanın içeriği;


  • $yii=dirname(__FILE__).'/../yii/framework/yii.php';
    • Framework dizinin altındaki yii.php dosyasını kullanılmak üzere set eder.
  • $config=dirname(__FILE__).'/protected/config/main.php';
    • Konfigürasyon ayarlarının yapıldığı dosyayı set eder.
  • defined('YII_DEBUG') or define('YII_DEBUG',true);
    • Debug modunun açık veya kapalı olmasıını sağlar. Geliştirirken açık, yayındayken kapalı olması gerekir.
  • defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
    • Fonksiyonların, dosyaların limite göre (3) geçmişinin tutulmasını sağlar.

        index.php dosyasından biraz bahsettikten sonra, birazda 'protected/' dizininin içeriğinde önemli olanlardan bahsetmek istiyorum. 
  • 1) sbun/protected/controllers/: Dizinin içerisinde adres satırında yer alan controller/method yönlendirmesini yapan ve varsayılan olarak oluşturulmuş SiteController.php gibi controller dosyaları bulunduran dizindir. Peki nedir bu yönlendirme?
Not: Bu ve bundan sonraki yazılarda MVC ile ilgili konuların bilinmesi gerektiği için herhangi bir bilginiz yoksa bakmanız gerekebilir.

        Uygulamayı başlattığımızda karşımıza Home, About, Contact, Login bölümlerinin geldiğini görmüştük.
    • Home'a tıkladığımızda adres satırında;
localhost/sbun/index.php?r=site/index adresini görürüz. Bu adres bize site controller'ının index action'ını (metodunu, fonksiyonunu) çalıştırdığını gösterir.
    • About'a tıkladığımızda adres satırında;
localhost/sbun/index.php?r=site/page adresini görürüz. Bu adres bize site controller'ının page action'ını (metodunu, fonksiyonunu) çalıştırdığını gösterir.
    • Contact'a tıkladığımızda adres satırında;
localhost/sbun/index.php?r=site/contact adresini görürüz. Bu adres bize site controller'ının contact action'ını (metodunu, fonksiyonunu) çalıştırdığını gösterir.
    • Login'e tıkladığımızda adres satırında;
localhost/sbun/index.php?r=site/login adresini görürüz. Bu adres bize site controller'ının login action'ını (metodunu, fonksiyonunu) çalıştırdığını gösterir.
  • 2) /sbun/protected/views/: SiteController.php dosyasındaki tüm action'lar bu dizinin altında ayrı birer PHP dosyası şeklinde oluşturulurlar ve uygulama çalıştığında adres satırındaki action isteklerine göre içeriklerinde ne varsa onu gösterirler. Bu işleme controller'ın view dosyasını render etmesi denir.
  • 3) /sbun/protected/models/: Veritabanından alınan verileri karşılayacak olan model yapısı bu dizinde tutulur. Model veritabanın tüm ilişkilerini içerir.
  • 4) /sbun/protected/config/: Daha önce de söylediğim gibi konfigürasyon ayarları bu dizinde main.phpdosyası adı altında yapılır.

        Genel olarak oluşturduğumuz uygulamanın yapısı bu şekilde. Bir sonraki yazıda Yii'de MVC bağından bahsetmeyi düşünüyorum. İyi çalışmalar.