Model

Model'ler genellikle veritabanı işlemlerinin yapıldığı nesnelerdir. /App/Models dizininde bulunurlar. Sadece veritabanı işlemlerini değil, harici olarak dahil edilebilecek farklı kodlar da içerebilirler.

  1. Model Oluşturma
  2. Model Kullanımı
  3. Model'de Namespace Kullanımı

Model Oluşturma

Model dosyaları /App/Models dizininde yer almalıdır. Aşağıda basit bir model örneği görülmektedir;

//--- [*] App/Models/Blog.php ---//
namespace App\Models;

use DB;

class Blog
{
	public function posts()
	{
		return DB::select('*')->from('posts')->getAll();
	}
}
					

Model Kullanımı

Oluşturulan bir model'in methodlarına erişmek için Model nesnesi kullanılır.

Aşağıdaki örnekte, Blog controller'ı içerisinde, yukarıda oluşturulan Blog modeline ait posts() methodu çalıştırılıyor. Bunun için de Model nesnesi kullanılıyor.

//--- [*] /App/Controller/Blog.php ---//
namespace App\Controllers;

use View;
use Model;

class Blog
{	
	public function index()
	{
		$data['posts'] = Model::run('blog')->posts();
		View::render('blog', $data);
	}
}

Model'de Namespace Kullanımı

Model dosyaları, /App/Models dizini içerisinde oluşturulacak alt dizinlerde de bulunabilir. Böyle durumlarda, alt dizin içerisinde oluşturulan model dosyasının namespace'i App\Models\Alt_Dizin şeklinde olmalıdır.

//--- [*] /App/Models/Frontend/Home.php ---//
namespace App\Models\Frontend;

class Home
{
	public function foo()
	{
		return 'bar';
	}
}

Yukarıdaki örnekte yer alan model'e erişmek ve içerisindeki herhangi bir methodu çalıştırmak için, Model nesnesinin run() methoduna, ikinci parametre olarak namespace adı girilmeli ya da namespace() methodu ile tanımlama yapılmalıdır.

//--- [*] /App/Controller/Frontend/Blog.php ---//
namespace App\Controllers\Frontend;

use Model, View;

class Blog
{
	public function posts()
	{
		// --- Örnek 1 --- //
		$data['posts'] = Model::run('blog', 'frontend')->posts();

		// --- Örnek 2 --- //
		$data['posts'] = Model::namespace('frontend')->run('blog')->posts();

		View::render('home', $data);
	}
}

Yukarıdaki örnekte /App/Controllers/Frontend dizinindeki Blog controllerı içerisinde, önceki örneklerde oluşturulan ve /App/Models/Frontend dizininde yer alan Blog modeli kullanılıyor ve posts() methodu çalıştırılıyor.