KKUT Docs

Nesne Erişimi

KUT Framework'te nesnelere (Library, Model, Controller, Command) genellikle static türde erişim sağlanır. Bunun yanında farklı olarak bir kaç yol daha mevcuttur. # Bölüm Başlıkları # Statik …

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

KUT Framework'te nesnelere (Library, Model, Controller, Command) genellikle static türde erişim sağlanır. Bunun yanında farklı olarak bir kaç yol daha mevcuttur. 

Bölüm Başlıkları

# Statik Erişim

# Statik Dönüşüm

# Sınıf İçi Erişim

# Görünümlerde Erişim KUT 1.0’da desteklenir

# Parametrik Erişim KUT 1.0’da desteklenir

# Görünümlerde Erişim

# Statik Erişim

KUT Framework'ün tüm kütüphanelerine statik formda erişilir. Bu yöntemle erişimde herhangi bir kısıtlama yoktur. Erişilecek sınıfların OOP kuralı olarak namespace (isim alanı) içeren sınıflar içerisinde eğer aynı isim alanına sahip değilse çağrımdan önce mutlaka use ile namespace tanımlamasının hemen altında belirtilmelidir. Aksi halde "Class 'ClassName' not found" gibi bir hata ile karşılaşırsınız.

Dosya: Controllers/Home.php
 namespace Project\Controllers;

use DB;

class Home extends Controller
{
    public function main()
    {
         output( DB::persons()->result() );
    }
}
Statik Dönüşüm

Kişisel olarak geliştirdiğiniz statik olmayan sınıflara statik erişim sağlayabilmek için KUT Framework 2 farklı yol sunar;

** Sınıf isimlerinin internal ön eki ile belirtilmesi.
** Facade sabitinin kullanımı.

internal Ön Eki

Oluşturacağınız sınıfın ismini internal ön eki başlayacak şekilde belirtirseniz sınıfının bir statik görünümü oluşur. Bu statik görünüm ilgili projenin Resources/Statics/ dizinine oluşturulur. İsim alanı (namespace) kullanımı statik erişimi engellemez. 

Dosya: Libraries/MyClass.php
 

class FacadeMyClass
{
    public function run()
    {
         # Your codes...
    }
}

Yukarıdaki tanımlamadan sonra sınıfınızı aşağıdaki gibi kullanabilirsiniz.

Dosya: Controllers/Home.php
 namespace Project\Controllers;

use MyClass;

class Home extends Controller
{
    public function main()
    {
         echo MyClass::run();
    }
}

MyClass::run() yöntemi statik olarak tanımlanmamasına rağmen bu yönteme erişim statik olarak gerçekleştirilmiştir.

Facade Sabiti KUT 1.0’da desteklenir

Oluşturacağınız sınıf bir const facade = 'ClassName' tanımlaması içerirse bu sınıfınızın statik (cephe) görünümü oluşur. Bu kullanımda statik görünüm ilgili sınıfın bulunduğu dizine Facade son eki almış hali ile oluşturulur.

Uyarı: Facade sınıf ile orijinal sınıf farklı isim alanına (namespace) sahip değilse her iki sınıf için aynı ismi kullanmamaya dikkat ediniz.
Dosya: Libraries/MyClass.php
 

class MyClass
{
    # İsim alanı içermeyen veya aynı isim alanına sahip sınıflar için
    # Facade sınıf isminin farklı olmasına dikkat ediniz.
    const facade = 'My'; 

    public function run()
    {
         # Kodlarınız ...
    }
}

Yukarıdaki tanımlamadan sonra sınıfınızı aşağıdaki gibi kullanabilirsiniz.

Dosya: Controllers/Home.php
 namespace Project\Controllers;

use My;

class Home extends Controller
{
    public function main()
    {
         echo My::run();
    }
}
Öneri: Bizim tercihimiz orijinal sınıf adında değişlik gerektirmediği için facade sabiti kullanarak statik erişim sağlamanız yönündedir.

Tanımlamalar Arasındaki Fark

Yukarıdaki tanımlamaların her ikisi de bir statik olmayan bir sınıfa statik olarak erişebilmeyi sağlamasına rağmen arlarında bazı farklar vardır. Bu farklılıklar kullanıma yönelik olmasa bile bilinmesi gereken önemli farklardır.

  internal Facade
Dosya İsmi Sınıfın adı değişir. Sınıfın adı değişmez.
İsim Alanı (Namespace) İsim alanı kullanımından etkilenmez. İsim alanı kullanımından etkilenir.
Dosya İsimlendirmesi internalSınıfAdı.php formunda isimlendirilir. SınıfAdıFacade.php formunda isimlendirilir.
Dosya Konumu Resources/Statics/ Orijinal sınıf ile aynı konumda yer alır.

# Sınıf İçi Erişim

KUT Framework'te sınıflara statik erişebileceğiniz gibi kontrolcüler içerisinde $this nesnesi ile de erişebilirsiniz. Erişmek istediğiniz sınıfın isim alanı içermesi $this nesnesi ile erişime engel olmaz. Yani isim alanını belirtmeye gerek kalmadan sadece sınıf adını kullanarak erişim sağlayabilirsiniz. OOP kuralı olarak $this iler erişimde sınıfların use ile isim alanı altında tanımlanmasına gerek yoktur.

Dosya: Controllers/Home.php
 namespace Project\Controllers;

class Home extends Controller
{
    public function main()
    {
         output( $this->my->run() );
    }
}
Görünümlerde Erişim KUT 1.0’da desteklenir

Şablon sihirbazı kullanılan görünümlerde $this nesnesine erişim sağlayabilirsiniz.

Dosya: Views/Home/main.wizard.php
{| $this->my->run() |}
Uyarı: Bu kullanım sadece şablon sihirbazı kullanılan görünümler için geçerlidir.

# Parametrik Erişim KUT 1.0’da desteklenir

Kontrolcü yöntemlerinin parametrelerine nesne enjekte ederek erişim sağlayabilirsiniz.

Dosya: Controllers/Home.php
 namespace Project\Controllers;

use My;
use DB;

class Home extends Controller
{
    public function main(My $my, DB $db)
    {
         output( $my->run() );
    }
}
Görünümlerde Erişim

Parametre ile oluşturulan sınıf örneklerine aynı değişken isimleri ile görünümlerde erişebilirsiniz.

Dosya: Views/Home/main.wizard.php
{| $my->run() |}
KUT 1.0

Facade statik erişim öneki

KUT çekirdeğinde otomatik statik sarmalayıcı üreten sınıfların öneki Facade’dır. Örneğin class FacadeReport sınıfı uygulamada Report::method() şeklinde kullanılabilir. Eski Internal öneki kullanılmaz.

Bu önek bir namespace veya dizin adı değildir; yalnızca otomatik statik erişim sınıflarının adlandırma kuralıdır.

KUT Framework 1.0Katmanlı Uygulama Tabanı

Kur. Uyarla. Türet.