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 …
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ı
# Görünümlerde Erişim KUT 1.0’da desteklenir
# Parametrik Erişim KUT 1.0’da desteklenir
# 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.
namespace Project\Controllers;
use DB;
class Home extends Controller
{
public function main()
{
output( DB::persons()->result() );
}
}
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.
class FacadeMyClass
{
public function run()
{
# Your codes...
}
}
Yukarıdaki tanımlamadan sonra sınıfınızı aşağıdaki gibi kullanabilirsiniz.
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.
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.
namespace Project\Controllers;
use My;
class Home extends Controller
{
public function main()
{
echo My::run();
}
}
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.
namespace Project\Controllers;
class Home extends Controller
{
public function main()
{
output( $this->my->run() );
}
}
Şablon sihirbazı kullanılan görünümlerde $this nesnesine erişim sağlayabilirsiniz.
{| $this->my->run() |}
# Parametrik Erişim KUT 1.0’da desteklenir
Kontrolcü yöntemlerinin parametrelerine nesne enjekte ederek erişim sağlayabilirsiniz.
namespace Project\Controllers;
use My;
use DB;
class Home extends Controller
{
public function main(My $my, DB $db)
{
output( $my->run() );
}
}
Parametre ile oluşturulan sınıf örneklerine aynı değişken isimleri ile görünümlerde erişebilirsiniz.
{| $my->run() |}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.