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.
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');
Controller oluştururken dosya ve class isimleri büyük harfle başlamalıdır.
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.
Alt dizinlerde bulunan controller'ların namespace tanımlamaları, bulundukları dizini işaret etmelidir.
Ö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');
});