Yii Framework’te Detaylar #2

Y

(Dikkat: Yazılanların daha anlaşılır olması için serinin önceki yazılarını okumanız gerekebilir veya gerekmeyebilir.)

Yii’ye ufak bir giriş yaptık ardından ilk projeyi oluşturduk ve sıra geldi proje üzerinde çeşitli değişiklikler yaparak projeyi özelleştirme ve geliştirme aşamalarına.

Yii projelerini özelleştirmek için birkaç farklı yöntem bulunmakta. Bunların başında “protected/config/main.php” dosyası geliyor. Öntanımlı ayarların büyük bir kısmı buradan değiştirilebilir durumda.

Fakat main.php’nin detaylarına geçmeden önce ana dizindeki index.php dosyasından bahsedelim. Yii’ye gelen her istek (request) önce bu index.php geliyor ve dosya üzerinden yönlendiriliyor. Birkaç satırdan oluşan index.php’ye bir göz atalım:

[code lang=”php”]

// change the following paths if necessary
$yii=dirname(__FILE__).’/../yii/framework/yii.php’;
$config=dirname(__FILE__).’/protected/config/main.php’;

// remove the following lines when in production mode
defined(‘YII_DEBUG’) or define(‘YII_DEBUG’,true);

// specify how many levels of call stack should be shown in each log message
defined(‘YII_TRACE_LEVEL’) or define(‘YII_TRACE_LEVEL’,3);

require_once($yii);
Yii::createWebApplication($config)->run();

[/code]

Açıklayalım:

[code lang=”php”] $yii=dirname(__FILE__).’/../yii/framework/yii.php’;
[/code]

İlk satırdaki $yii, proje oluşturulurken frameworkün bulunduğu dizindeki yii.php dosyasını yani frameworkü çağırmak için kullanılmak üzere set ediliyor. Proje oluşturulduktan sonra framework dizini değiştirilirse bu da satırın düzenlenmesi gerekir.

[code lang=”php”] $config=dirname(__FILE__).’/protected/config/main.php’;
[/code]

İkinci satırdaki $config, yazının başında da belirttiğim konfigürasyon ayarlarını içeren dosyanın yolu tutuyor.

[code lang=”php”] defined(‘YII_DEBUG’) or define(‘YII_DEBUG’,true);
[/code]

Sonraki satır ise, üzerindeki yorum satırından da anlaşılacağı üzere, geliştirme süresince açık kalması gereken debug modu. Yayına aldıktan false yapılması gerek.

[code lang=”php”] defined(‘YII_TRACE_LEVEL’) or define(‘YII_TRACE_LEVEL’,3);
[/code]

Diğer defined satırı ise çağırılan ve/veya dahil edilen fonksiyonların, dosyaların geçmişini tutmak için gerekli. 3 değeri ise her işlem için tutulacak geçmiş limitine karşılık geliyor. Değiştirmek mümkün.

Sondaki iki satır ise, ilk satırda dizini tutulan yii.php’nin çağırılması ve uygulamanın çalışmaya başlamasını sağlıyor. Üzerinde değişiklik yapmayın (zaten mümkün değil).

4 satırdan oluşan index.php bu kadar, bir de index.php ile aynı dizinde bulunan ve yalnızca bir satırı farklı index-test.php var. Bu dosyanın farklı tek satırı konfigürasyon için “config/main.php” yerine “config/test.php” dosyasını çağırması dahil etmesi.

İki konfigürasyon dosyası arasındaki fark ise, test.php’nin trace_level değerini yok sayması ve unit test bileşenini kullanması.

Projede main.php “protected/config” içerisinde yer almakta. Bu dosya, çağırıldığı yere; array olarak projenin gerekli ayarlarını göndermekte. Geçelim incelemeye:

[code lang=”php”] ‘name’=>’Hello Uygulaması’,
[/code]

Projenin adını (hazır gelen şablon içerisinde h1 ve title etiketlerinde çağırılıyor) değiştirir.

[code lang=”php”] ‘gii’=>array(
‘class’=>’system.gii.GiiModule’,
‘password’=>’1234’,
),
[/code]

Proje geliştirirken en çok kullanılacak modüllerden biri olan Gii’nin (sonraki yazının konusu) aktifleştirilmesi ve giriş için gereken parolayı buradan değiştirebilirsiniz.

Varsayılan olarak (1.1.8’de) yorum satırına alınmış halde gelir. Komut satırlarını kaldırın ve kullanacağınız bir parola verin. Artık gii kullanıma hazır: http://localhost/hello/index.php?r=gii adresinden erişebilirsiniz. Detaylarına sonraki yazılarda değineceğiz.

Gii 1.1.2 sürümüyle Yii’ye eklendi, öncesinde ise komut satırı kullanılıyordu.

Sıra geldi bileşenlere (components):

[code lang=”php”] ‘urlManager’=>array(
‘urlFormat’=>’path’,
‘rules’=>array(
‘<controller:\w+>/<id:\d+>’=>'<controller>/view’,
‘<controller:\w+>/<action:\w+>/<id:\d+>’=>'<controller>/<action>’,
‘<controller:\w+>/<action:\w+>’=>'<controller>/<action>’,
),
),
[/code]

urlManager bileşeni Yii’ye gelen isteklerin yapısını değiştirmek için kullanılır. Kısaca index.php?r=site/contact yapısını index.php/site/contact haline çevirir (çevirebilir). Varsayılan olarak yorum satırına alınmıştır, aktifleştirmek için komut satırlarını kaldırmak gerekir. Detaylarını yine daha sonraki yazılarda göreceğiz.

[code lang=”php”] ‘db’=>array(
‘connectionString’ => ‘mysql:host=localhost;dbname=testdrive’,
’emulatePrepare’ => true,
‘username’ => ‘root’,
‘password’ => ”,
‘charset’ => ‘utf8’,
),
[/code]

Yii’nin birçok veritabanına desteği olduğundan önceki yazılarda bahsetmiştim. Bunlardan birisi olan SQLite, main.php içerisinde yer alıyor. MySQL kullanacaksanız yapmanız gereken SQLite’ı satırlarını yoruma alıp hemen altındaki db arrayini yorumdan çıkartmak. Kullanıcı adı şifreyi de mysql kurulumunuza göre düzenledikten sonra veritabanını kullanabilirsiniz.

Ayrıca connectionString üzerinden dbname parametresini değiştirmeyi de unutmayın.

[code lang=”php”] ‘log’=>array(
‘class’=>’CLogRouter’,
‘routes’=>array(
array(
‘class’=>’CFileLogRoute’,
‘levels’=>’error, warning’,
      ),
array(
‘class’=>’CWebLogRoute’,
‘levels’=>’error’,
),
),
),
[/code]

Yii’nin başka bir güçlü yanı da gelişmiş bir log bileşenine sahip olması. Veritabanından, emaile kadar projenin olağan akışında gerçekleşen (hata, uyarı veya bilgi) her şeyi loglamak oldukça basit.

Örnekte hata (error) ve uyarıları (warning) dosyaya, yalnızca hataları da geliştirme süresince sayfaya logluyor. WebLog geliştirme dışında kullanılmıyor tabii. CEmailLogRoute kullanırsanız örneğin hataları e-posta ile iletiyor.

CFileLogRoute için varsayılan log dizini “protected/runtime/application.log”. Belirtilen seviyeye (level) göre çıkan logları oradan inceleyebilirsiniz.

[code lang=”php”] ‘params’=>array(
// this is used in contact page
‘adminEmail’=>’webmaster@example.com’,
),
[/code]

Projeyle birlikte gelen iletişim sayfasından (contact) gönderilecek iletilerin varsayılan adresi “adminEmail” alanından değiştirilebilir.

[code lang=”php”] ‘defaultController’ => ‘login’,
[/code]

Son olarak; projenin varsayılan controller dosyası SiteController olarak tanımlanmıştır. Bunu değiştirmek için main.php içerisine yukarıdaki satırı, istediğiniz Controller ismiyle birlikte ekleyebilirsiniz. Değiştirirken controllerın dosya adını değil, sadece controller adını yazmaya dikkat edin.

Bir sonraki yazıda Gii’den bahsedeceğim.

Soru ve eklemeler için yorum gönderebilirseniz memnun olurum.

3 Yorum

Oğulcan

Arşivler

Kategoriler