PHP 8 ve özellikle Laravel framework'ü ile birlikte kullanılan Controllers (kontrolcüler), web uygulamalarında gelen HTTP isteklerini işlemek için tasarlanmış sınıflardır. Kontrolcüler, uygulamanızın iş mantığını ve veri akışını yönetirken, verileri toplamak, işlemler yapmak ve uygun görünümleri döndürmek gibi görevleri üstlenir.
1. Controller Nedir?
Controller, kullanıcı isteklerini yönlendiren ve bu isteklere uygun yanıtları üreten bir bileşendir. Genellikle bir kontrolcü, bir veya daha fazla HTTP isteğini (GET, POST, PUT, DELETE) yönetir ve bu isteklere karşılık gelen işlemleri gerçekleştirir.
2. Controller Oluşturma
Laravel'de yeni bir kontrolcü oluşturmak için Artisan komutunu kullanabilirsiniz. Örneğin, terminalde aşağıdaki komutu çalıştırarak bir HomeController
oluşturabilirsiniz:
php artisan make:controller HomeController
Bu komut, app/Http/Controllers
dizininde HomeController.php
adlı bir dosya oluşturur.
3. Controller Yapısı
Bir kontrolcünün temel yapısı aşağıdaki gibi görünür:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
class HomeController extends Controller {
public
function index(
) {
return view('home'); // 'home' görünümünü döndür
}
public
function show(
$id
) {
// Belirtilen ID'ye göre bir kaydı göster
$item = Item::find($id);
return view('item.show', ['item' => $item]);
}
public
function store(Request $request
) {
// Yeni bir kayıt oluştur
$item = new Item();
$item->name = $request->input('name');
$item->save();
return redirect()->route('items.index'); // Yönlendirme
}
}
?>
4. Controller Metotları
Bir kontrolcü içinde farklı yöntemler tanımlayarak çeşitli HTTP isteklerini işleyebilirsiniz. Yaygın olarak kullanılan metotlar şunlardır:
- index: Tüm kayıtları listelemek için kullanılır (GET).
- show: Belirli bir kaydı görüntülemek için kullanılır (GET).
- create: Yeni bir kayıt oluşturma formunu göstermek için kullanılır (GET).
- store: Yeni bir kaydı veritabanına kaydetmek için kullanılır (POST).
- edit: Var olan bir kaydı düzenleme formunu göstermek için kullanılır (GET).
- update: Var olan bir kaydı güncellemek için kullanılır (PUT/PATCH).
- destroy: Bir kaydı silmek için kullanılır (DELETE).
5. Routing ile Controller Entegrasyonu
Bir kontrolcüyü kullanmak için, Laravel’in routing sistemi ile entegrasyon sağlamanız gerekir. Örneğin, routes/web.php
dosyasına aşağıdaki gibi rota tanımlamaları ekleyebilirsiniz:
use AppHttpControllersHomeController;
Route::get('/', [HomeController::class, 'index']);
Route::get('/item/{id}', [HomeController::class, 'show']);
Route::post('/item', [HomeController::class, 'store']);
6. Resource Controllers
Laravel, CRUD (Create, Read, Update, Delete) işlemleri için hızlı bir şekilde resource controller oluşturmanıza olanak tanır. Aşağıdaki komut ile bir resource controller oluşturabilirsiniz:
php artisan make:controller ItemController --resource
Bu, aşağıdaki gibi tüm temel yöntemleri içeren bir kontrolcü oluşturur:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
class ItemController extends Controller {
public
function index(
) {}
public
function create(
) {}
public
function store(Request $request
) {}
public
function show(
$id
) {}
public
function edit(
$id
) {}
public
function update(Request $request, $id
) {}
public
function destroy(
$id
) {}
}
?>
Ardından, bu kontrolcüyü kullanarak tüm CRUD işlemleri için otomatik olarak route'lar oluşturabilirsiniz:
Route::resource('items', ItemController::class);
7. Middleware Kullanımı
Kontrolcülerde middleware kullanarak, belirli işlevselliği uygulayabilir veya isteklere öncelik verebilirsiniz. Örneğin, kimlik doğrulaması yapmak için bir middleware kullanabilirsiniz:
public
function __construct(
) {
$this->middleware('auth');
}
Bu, kontrolcüdeki tüm yöntemlere erişmeden önce kullanıcıların kimlik doğrulaması yapılmasını gerektirir.
Sonuç
Controllers, PHP 8 ve Laravel ile web uygulamaları geliştirirken önemli bir rol oynar. HTTP isteklerini işlemek ve verileri yönetmek için kullanılırlar. İyi yapılandırılmış bir kontrolcü, uygulamanızın kodunu daha düzenli ve bakımı daha kolay hale getirir. Laravel’in sunduğu resource controller ve middleware gibi özellikler, kontrolcü yönetimini kolaylaştırır ve geliştirmenin hızını artırır.