KKUT Docs

Akışın Modellemesi

Modeller genellikle MVC mimarisinin en karmaşık kısmıdır. Kod yoğunluğunun en fazla olduğu ve görünümlere gönderilmek üzere verilerin depolandığı bölümdür. Gerek PHP kodları gerekse de Datab…

This article is currently available in Turkish. Its English translation is being prepared.

Modeller genellikle MVC mimarisinin en karmaşık kısmıdır. Kod yoğunluğunun en fazla olduğu ve görünümlere gönderilmek üzere verilerin depolandığı bölümdür. Gerek PHP kodları gerekse de Database komutları bu yapılar üzerinde tasarlanır. Genellikle kullanıcıların en çok yaptığı hata bir modelin alması gereken sorumluluğu kontrolcüye vermeleridir. Bir kontrolcü sadece kullanıcı girdilerine göre süreci yönlendirmek gibi basit kodların yer aldığı bölüm olmalıdır. Bunların dışında kalan tüm kodsal işlemler model içerisinde yer alır. 

Model dosyaları Models/ dizini içerisinde oluşturulur.

Bölüm Başlıkları

# Model Dosyası Oluşturmak

# Modelin Kontrolcüye Dahili

# internal Model Tasarımı
# Dev Model Genişletmesi

# Model Dosyası Oluşturmak

Aşağıdaki gibi örnek bir model dosyası oluşturabilirsiniz.

File: Projects/Any/Models/UsersModel.php
 
class UsersModel extends Model
{
    public static function rowId(int $id)
    {
         return DB::whereId($id)->users()->row();
    }
}
Modelin Kontrolcüye Dahili

Tek yapmanız gereken modelinizi kontrolcü içinde çağırmaktır. Eğer model ile kontrolcü adı aynı olursa model sınıfınızı kontrolcüde takma isimle kullanmanız gerekmektedir. Bu durum zaten Nesne Yönelimli Programlamanın bir kuralıdır. 

File: Projects/Any/Controllers/Users.php
 namespace Project\Controllers;

use UsersModel;

class Users extends Controller
{
    public function main()
    {
         output( UsersModel::rowId(5) );
    }
}

# Internal Model Tasarımı

Oluşturacağınız dinamik model sınıflarınızı Model::method() formunda kullanmak için class adının başına internal ön getirerek tanımlayınız. Normal şartlarda sınıf yöntemi statik değilse yukarıdaki formda erişilemez. Ancak statik tanımlamalar bazı kullanımları kısıtladığı için sınıf tasarımları dinamik formda gerçekleştirilir. Bu dinamik tanımlamalara rağmen yöntemlere statik erişmeniz bu ön ek sayesinde mümkündür.


class FacadeUsersModel extends Model
{
    public function rowId(int $id)
    {
        return DB::whereId($id)->users()->row();
    }
}

Yukarıdaki tanımlamadan sonra model dosyasını aşağıdaki gibi kullanabilirsiniz.

File: Projects/Any/Controllers/Users.php
 namespace Project\Controllers;

use UsersModel;

class Users extends Controller
{
    public function main()
    {
         output( UsersModel::rowId(5) );
    }
}

# Dev Model Genişletmesi

Grand Model genişletmesi veritabanı yöntemlerini daha kullanışlı ve pratik hale getirmek için tasarlanmıştır. Konunun devamı için {{tıklayınız}}. Yine de örnek vermek gerekirse  bu genişletme ile yukarıda rowId() için yaptığımız tanımlamalara gerek kalmıyor.


class FacadeUsersGrand extends GrandModel
{
    
}

Yukarıdaki tanımlamadan sonra model dosyasını aşağıdaki gibi kullanabilirsiniz.

output( UsersGrand::rowId(1) );
KUT Framework 1.0Katmanlı Uygulama Tabanı

Kur. Uyarla. Türet.