Kontrolcüler

Eklentiler üzerinde kontrolcülerin kullanımından ve nasıl çalıştıklarından bahsedilecektir.

Kontrolcü Nedir?

Controller, MVC’de projenin iç süreçlerini kontrol eden bölümdür. Bu bölümde View ile Model arasındaki bağlantı kurulur. Kullanıcılardan gelen istekler (request) Controller’larda değerlendirilir, isteğin detayına göre hangi işlemlerin yapılacağı ve kullanıcıya hangi View’ın döneceği veya JSON response belirtilir.

Eklentilerde Kontrolcüler

Kontrolcüler, MVC yapısındaki ingilizce ismiyle Controller yapısıdır. MVC yapısına aşina olanlar bilecektir ki arka yüz işlemlerini kontrolcüler ile gerçekleştiriyoruz. Gelin birlikte temel bir kontrolcüyü inceleyelim.

<?php
namespace App\Controllers;

class HomeController
{
	public function index()
	{
		return view('index');
	}
}

Gördüğümüz üzere kontrolcü aslında bir PHP nesnesidir. Bu nesne içinde fonksiyon/fonksiyonlar saklamaktadır. Bu fonksiyonları daha sonra rotalar ile birlikte işlerimiz için kullanacağız.

Kontrolcümüzün fonksiyonları içerisinde çalıştırılması gereken arka yüz işlemlerini yapabiliriz. Daha spesifik bir örnek vermemiz gerekirse Liman ile sisteme bir kullanıcı ekleme işlemini şu şekilde gerçekleştirebiliriz.

<?php
namespace App\Controllers;

use Liman\Toolkit\Shell\Command;

class UserController
{
	public function add()
	{
		 $command = Command::runSudo("useradd -p $(echo @{:password} | openssl passwd -1 -stdin) -s /bin/bash -g users @{:username}", [
         "username" => request("username"),
         "password" => request("password")
     ]);

     Command::runSudo("mkhomedir_helper @{:username}", [
         "username" => request("username")
     ]);

     return respond(__("Başarıyla eklendi"), 200);
	}
}

Yukarıdaki kod bloğunda görebileceğimiz üzere UserController nesnemizin içerisinde add() fonksiyonu bulunmaktadır. Bu fonksiyon daha sonra bahsedeceğimiz Liman Toolkitini kullanarak sistem üzerinde bir komut çalıştırmaktadır. Çalıştırdığı komutların ardından işlemin başarılı olduğuna dair bir yanıt döndürmektedir.

Liman eklentilerinde kontrolcüler genelde POST requestlerine yanıt vermek için kullanılır. Nadir durumlarda view döndürülmektedir.

Kontrolcülerde tanımladığımız fonksiyonları daha sonra rotalar ile çağırarak yardımcı fonksiyonlar sekmesinde göreceğimiz request() fonksiyonumuz ile kullanacak, işlemlerin çalıştırılmasını sağlayacağız.

Kontrolcülerin yaşam döngüsü Liman üzerinde aşağıdaki şekilde kullanmayı tercih ediyoruz. İsterseniz View/Controller ve sayfalı yapı da oluşturabilirsiniz ancak biz daha çok REST API olarak kullanmayı tercih ettik.

Daha önceden index kontrolcüsü tarafından render edilmiş interaktif öğeleri kullanarak bir request gönderimi yaparız. Ardından kontrolcümüz bu requestleri alarak yönetilen sistemde veya başka bir işlem için kullanarak değişiklikler yapar. Ardından kontrolcü işlemin durumuna göre başarılı veya başarısız diye bir yanıt gönderir. Yanıt, arayüz tarafından alındıktan sonra kontrolcünün yaşam döngüsü tamamlanmıştır.

Last updated