Laravel Rehberi – Controller Sistemi (Temel Seviye)

Başlarken;

Laravel Framework’ün dosya ve dizinlerini incelemiştik. Eğer hâlâ bu dosya ve dizinleri bilmiyorsanız ” Laravel Rehberi – Temel Dosya ve Dizin Yapısı “ makalemi inceleyebilirsiniz.

Laravel Framework üzerinde ulaştığımız noktaya bir donüp bakalım. Elimizde neler var? Artık bir Rota oluşturabiliyoruz. Bu oluşturduğumuz rotalara da görüntüleyecek View dosyalarını bağlayabiliyoruz. Evet bir yol kat ettik fakat hâlâ eksik bir yapı var. Controller nerede? Bir iskelet var fakat yürümüyor sanki. Hadi şu yapıya biraz hareket verelim.

Bu makalede Laravel Framework üzerinde Controller tanımlamaya odaklanacağız. Bu makalenin amacı Laravel Framework yardımıyla “Temel Controller” kavramını öğretmek ve kullanmaktır. Bu makale size yeterli gelmediyse yakın zamanda yayınlayacağım “Laravel Rehberi – Controller Sistemi (İleri Seviye)” başlığını inceleyebilirsiniz.

Temel Gereksinimler;

İzlenecek Yol Haritası;

  1. Controller Nedir?
  2. Yeni bir Controller nasıl oluşturulur?
  3. Oluşturulan Controller’lar nasıl çalışır?

Controller Nedir?

” MVC 5N1K? “ makalesinde temel olarak Controller kavramına değinmiştik. Burada da üzerinden kısaca bir geçelim.

  • Controller: Model ve View arasındaki ilişkiyi sağlayan katmandır. Nesnesel programlamadan bilindiği üzere sınıflar metotlardan oluşur. Controller aslında bir sınıftır. içerisindeki metotlar ise “Action” olarak adlandırılır. Model katmanından bilgileri alır ve View katmanına yönlendirir ya da View katmanından bilgileri alır ve Model katmanına yönlendirir.
Temel olarak MVC yapısının görsel şeması.
Temel MVC Yapısı Diyagramı

Yeni Bir Controller Nasıl Oluşturulur?

Bir Controller dosyası iki şekilde oluşturulabilir. Zor yola bir örnek verelim. Controller dosyalarımızın dizini “proje_adi/app/Http/Controllers” idi. Bu dizin içerisinde yeni bir dosya oluşturup isimlendirebilirsiniz. Fakat sağlıklı bir yol olduğu pek söylenemez. Çünkü Laravel Framework her Controller için belirli “namespaces” bölümleri oluşturuyor. Bu sebeple ikinci yol olan konsol kısmını kullanacağız.

Artık Laravel Framework ile proje geliştirirlen unutmamamız gereken bir adım olmalı. El altında her zaman açık bir konsol uygulaması bulundurun. Bu uygulama CMD, Powershell, Bash gibi herhangi biri olabilir. Size kalmış. Ben rehberlerimde CMD kullanacağım. Başlayalım.

“php artisan” bize Laravel Framework tarafından sunulan tüm konsol işlemlerini çalıştırmamızı sağlar. Biz bu makalede “make:controller” komutunu kullanacağız.

php artisan make:controller controller_adi
Örneğin => php artisan make:controller YeniBirController

Laravel kullanırken dikkat etmemiz gereken bir ince detay daha şuan karşımızda. Diğer yazılımcıların ve sizin projenizin devamında daha rahat kontrol sağlaması için “BilmemNeController” şeklinde tanımlanır. Yani Controller isminizin sonuna o dosyanın bir Controller olduğunu belirten bir tanımlama yapıyoruz. Kullanıma karşı hiçbir etkisi yoktur. Fakat kullanıcılara etkisi çoktur 🙂

Bu komut sonrasında neler oluyor? Controller dizinimizde “YeniBirController” adında dosya oluştuğunu göreceğiz. İçeriğinde neler var? İrdeleyelim…

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class YeniBirController extends Controller
{
    //
}

Laravel bir Controller oluştururken dikkat ettiği ilk nokta “namespace” alanıdır. Fark ettiyseniz bu sınıfa verilen namespace dosya yolumuzu içeriyor. Evet! Zaten olay da bu. Laravel bir Controller dosyasına erişmek için dosya yolunu içeren bu namespace alanını kullanıyor.

Peki ya “use…” ? İleri konularda buna bol bol değineceğiz. Fakat kısaca bahsedelim. “Http/Request” bölümüne dikkat edelim. WEB sayfasına gelen isteklere erişmemiz için oluşturulmuş hazır bir sınıf demek yeterli olacaktır.

Temel de olsa OOP biliyorsanız “YeniBirController” adında bir sınıfın “Controller” sınıfından türediğini görebilirsiniz. Hâlâ eksikler var evet. Akıllarda “Methodlar nerede?” sorusu olabilir. Onu da Laravelden beklemiyoruz artık 😀 Elleri usulca klavyeye alalım artık…

Oluşturulan Controller’lar Nasıl Çalışır?

Controller tarafına erişmemi sağlayan kısım “Router” yapısıydı. Rotaları da biz “web.php” de tanımlıyorduk. Bir rotadan istenilen Controller’a erişme işini “ Laravel Rehberi – Rota Sistemi (Temel Seviye) “ rehberinde yapmıştık. Daha ayrıntılı anlatımımı bu rehberden inceleyebilirsiniz. Bu makalede sadece işimize yarayacak tek bir rota kullanacağım.

Route::get('/yenibirsayfa', 'YeniBirController@Index');

Ne demek istiyor şair? İstek yöntemi GET olan bir rota tanımla. Adı da “yenibirsayfa” olsun. Eğer birisi bu yola girerse onu “YeniBirController” içerisinde bulunan “Index” methoduna yönlendir. Fakat biz daha method oluşturmadık. “YeniBirController” dosyamıza dönelim. Yeni kodumuz şu şekilde olmalı;

class YeniBirController extends Controller
{
    // INDEX METHOD TANIMLAMASI
    public function Index(){
        echo "Ah Sonunda Beni Buldun. Ben YeniBirController@Index Methoduyum!";
    }
}

Artık projemizi “php artisan serve” ile çalıştırıp “yenibirsayfa” rotasına erişirsek çıktımız şu şekilde olacak;

Rehber Kaynakları;

Method dediğin nedir gülüm? Altı üstü bir “public function”. Umarım ki “Laravel Rehberi – Controller Sistemi (Temel Seviye)” makalesi hoşunuza gitmiştir. Keyifli ve Bol Bug’lu Günler Dilerim 🙂

Yasin Erarslan

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir