MVC’de Giriş Sayfası, Ayarlamalar ve İlk Controller

2 Aralık 2016 Cuma günü PHP başlığında

MVC’de Giriş Sayfası, Ayarlamalar ve İlk Controller

PHP ile bir uygulama yapmaya başlarken öncelikle yapmamız gereken dizin veveritabanı gibi birçok etkenin hiyerarşisini kafamızda tahayyül etmektir. Ardından dosya ve dizinleri oluşturarak işe başlarız. İşte bunların yapısını, sistem içerisinde de rahatça kontrol edebilmek için bazı sabitlere ihtiyaç duyarız. Sabit tanımlamalar ile dizinlerdeki dosyaları rahatça sayfaya dahil edebilecek (require, include) ve işlemlerimizi yapabileceğiz. Basit bir MVC sistemi kodladığımız için bunu en basit haliyle, index.php içerisinde yapacağız. Başlayalım:

define('ROOT_DIR', __DIR__); // Kök dizin
define('APP_DIR', ROOT_DIR.'/app'); // Uygulama dizini
define('CORE_DIR', APP_DIR.'/core'); // Çekirdek dizini
define('MDIR', APP_DIR.'/models'); // Model dizini
define('VDIR', APP_DIR.'/views'); // View dizini
define('CDIR', APP_DIR.'/controllers'); // Controller dizini
define('URL', 'http://localhost'); // Sistemin çalışacağı URL

Bu tanımlamalar sırasıyla, kök dizini, uygulama dizinini, çekirdek dizinini, model/view/controller dizinlerini işaret ediyor. Bunları daha ileride işimizi kolaylaştırmaları açısından kullanacağız. Peki neden böyle bir şeye ihtiyaç duyuyoruz? Olası bir dizin değişikliği durumunda örneğin; uygulama dizininin yerini değiştirdiğimizde uygulama içindeki birçok kod satırından değiştirmek yerine, index.php içerisinde kontrol edebilmiş olacağız.

// Veritabanı ayarlamalarını yapıyoruz
// Eğer ki veritabanı işlemi yapmayacaksak ayarlamak şart değil
define('DB_DSN', 'mysql:host=localhost;dbname=blog;charset=utf8');
define('DB_USR', 'root');
define('DB_PWD', 'root');

Model dosyamızla haşır neşir olduğumda bu veritabanı bilgileri ile çalışacağız, bunlar da bir kenarda dursun.

Şimdi gelelim çekirdek dizinindeki dosyalara. /core dizininde app.php oluşturmuştuk, aynı zamanda üç tane daha dosya oluşturalım ve adları model.php, view.php, controller.php olsun.

// Çekirdek sınıflarımızı dahil ediyoruz
// Bu uygulamanın çalışması için mecburi
require CORE_DIR.'/app.php';
require CORE_DIR.'/model.php';
require CORE_DIR.'/view.php';
require CORE_DIR.'/controller.php';

Sistemi çalıştıran noktaya gelelim ve yazalım:

// Uygulamamızı oluşturuyoruz
$app = new app;

// Oluşturduğumuz uygulamayı çalıştırıyoruz
$app->run();

index.php içeriği şu şekilde olacak:

define('ROOT_DIR', __DIR__); // Kök dizin
define('APP_DIR', ROOT_DIR.'/app'); // Uygulama dizini
define('CORE_DIR', APP_DIR.'/core'); // Çekirdek dizini
define('MDIR', APP_DIR.'/models'); // Model dizini
define('VDIR', APP_DIR.'/views'); // View dizini
define('CDIR', APP_DIR.'/controllers'); // Controller dizini
define('URL', 'http://localhost'); // Sistemin çalışacağı URL

// Veritabanı ayarlamalarını yapıyoruz
// Eğer ki veritabanı işlemi yapmayacaksak ayarlamak şart değil
define('DB_DSN', 'mysql:host=localhost;dbname=blog;charset=utf8');
define('DB_USR', 'root');
define('DB_PWD', 'root');

// Çekirdek sınıflarımızı dahil ediyoruz
// Bu uygulamanın çalışması için mecburi
require CORE_DIR.'/app.php';
require CORE_DIR.'/model.php';
require CORE_DIR.'/view.php';
require CORE_DIR.'/controller.php';

// Uygulamamızı oluşturuyoruz
$app = new app;

// ve oluşturduğumuz uygulamayı çalıştırıyoruz
$app->run();

Geçerli Controller dosyamızı hazırlayalım. App sınıfı başlatıcısında geçerli controller’ı defaultController olarak tanımlamıştık. Şimdi bunu biraz daha somutlaştıralım:

/app/controllers/defaultController.php:

class defaultController
{
  /**
   * indexAction metodu, giriş aksiyonudur
   * eğer sorgu dizgesinde (/?url=sorgu/digesi) hiçbir şey
   * belirtilmemişse bu sınıf ve metod tetiklenir
   */
  public function indexAction()
  {
    echo 'Merhaba Dünya!';
  }

  public function fooAction()
  {
    echo 'Burası fooAction!';
  }
}

Buraya kadar her şey yolunda! Ama büyük eksiklikler var. Controller dosyamızda view ve model kullanabilmek/çağırabilmek için sınıfımızı genişletmemiz gerekiyor. Bunu da bir sonraki yazıda işleyeceğiz.

Kolay gelsin.


Adım adım:

  1. Yeni Başlayanlar İçin PHP'de MVC
  2. MVC Uygulaması İçin İlk Adımlar: App Sınıfı
  3. MVC’de Giriş Sayfası, Ayarlamalar ve İlk Controller (Şu an buradasınız)
  4. Controller ve View Çekirdek Sınıflarını Oluşturmak
  5. Model Katmanı ve Veritabanı İşlemlerini Kolaylaştırmak
  6. Proje/Uygulamanın Deposu
  7. Uygulamanın bitmiş halini indirin

Yorumlar