Controller

Controller'lar kendisine route edilen HTTP isteklerinin nasıl işleneceğini belirten nesnelerdir. /App/Controllers dizininde yer alırlar ve router'dan gelen isteğe göre belirlenmiş methodları çalıştırırlar.

Titan Framework, varsayılan olarak Home controller'ı ile birlikte gelir ve karşılama sayfasını çalıştırır.

  1. Controller Oluşturma
  2. Parametre Gönderimi
  3. Çoklu Uygulama Geliştirme

Controller Oluşturma

Controller'lar /App/Controllers dizininde yer alırlar. Aşağıda örnek bir controller nesnesi görülmektedir;

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

use System\Kernel\Controller;
					
class Sample extends Controller
{
	public function index()
	{
		echo 'Merhaba Dünya!';
	}
}

Yukarıdaki controller'ı çalıştırmak için ayrıca route tanımlaması yapılmalıdır. Bunun için /App/Config dizininde bulunan Routes.php dosyasına aşağıdaki ekleme yapılır;

Route::get('/sample', 'Sample@index');

Parametre Gönderimi

Bir controller'daki herhangi bir methoda gönderilecek parametreler, /App/Config dizinindeki Routes.php dosyasında tanımlanır.

Aşağıda, parametre alan bir controller methodu ve route tanımlaması görülmektedir;

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

use System\Kernel\Controller;

class Sample extends Controller
{
	public function user($id)
	{
		echo 'Kullanıcı ID : ' . $id;
	}
}

//--- [*] /App/Config/Routes.php ---//
Route::get('/user/(\d+)', 'Sample@user');

Çoklu Uygulama Geliştirme

Titan Framework üzerinde birden fazla uygulama geliştirmek ya da yönetici paneli ile önyüzü birbirinden ayırmak için /App/Controllers dizini içerisinde alt dizinler oluşturabilirsiniz. İlk kurulumda varsayılan olarak Frontend ve Backend olmak üzere 2 adet alt dizin bulunmaktadır.

Örneğin, Frontend ve Backend dizinlerinde bulunan iki ayrı controller'ın namespace tanımlaması aşağıdaki gibi olmalıdır;

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

use System\Kernel\Controller;

class Home extends Controller
{
	public function index()
	{
		echo 'Burası frontend açılış sayfasıdır';
	}
}

//--- [*] /App/Controllers/Backend/Dashboard.php ---//
namespace App\Controllers\Backend;

use System\Kernel\Controller;

class Dashboard extends Controller
{
	public function index()
	{
		echo 'Burası backend açılış sayfasıdır';
	}
}

Yukarıdaki controller'ların çalıştırılması için gerekli route tanımlamaları da aşağıdaki gibi olmalıdır;

//--- [*] /App/Config/Routes.php ---//
Route::namespace('frontend')->group(function(){
	Route::get('/home', 'Home@index');
});

Route::namespace('backend')->group(function(){
	Route::get('/dashboard', 'Dashboard@index');
});