Kütüphane Entegrasyonu


    × Bunları biliyor muydunuz?
"Veritabanından sorgu isteğini tamamlamak için kullanılan get() yöntemi yerine doğrudan tabloismi() biçiminde tanımlama yapabilirsiniz. Örnek: DB::users();"


ZN Framework iş ve işlemlerinizi kolaylaştırmak adına bir çok kütüphane sunar. Bunun yanı sıra kendi veya dışarıdan kullanmaya alışkın olduğunuz kütüphanelerinizi ZN Framework'e dahil edip kullanmak isteyebilirsiniz. Bu entegrasyon işlemi çok kolaydır. Tek yapmanız gereken kütüphanenizi indirip ZN Framework'te ilgili dizine sürükleyip bırakmanızdır. ZN Framework'te harici kütüphanelerinizi 2 yerde bulundurabilirsiniz. Bunlar;

Dizin: Projects/Any/Libraires/
Dizin: External/Libraries/

Bu dizinler içerisinde oluşturulan kütüphaneler herhangi bir ayar gerekmeden proje içinde kullanılabilir hale gelir.

 

 

# Bölüm Başlıkları


# Proje Kütüphaneleri
# Harici Kütüphaneler
# Composer Kütüphaneleri

Devtools ile Kurulum

# Takma İsim (Alias Name)
# Sınıf Haritası (ClassMap)

Tarama Alanını Genişletme

 

 

# Proje Kütüphaneleri


Dizin: Projects/ProjectDirectory/Libraries/

Projelerinize özgü kütüphanelerinizin bulunacağı dizindir.

 

 

# Harici Kütüphaneler


Dizin: External/Libraries/

Bu dizine atacağınız kütüphaneleriniz tüm projelerde geçerli olur. Böylece projeden projeye değişmeyen kütüphanelerinizi bu dizine atarak kullanabilirsiniz.

 

 

# Composer Kütüphaneleri


Packagist'ten composer ile indirilen paketler herhangi bir ayar gerekmeksizin kullanılabilir.

packagist -> symfony/translation

Örneğin yukarıdaki symfony/translation paketini indirdiniz bu işlemden sonra projenin bulunduğu dizine vendor/ isimli bir dizin ve indirdiğiniz paketin dizin ve dosyaların oluştuğunu görebilirsiniz. Bu özelliği kapatmak veya farklı bir dizin belirtmek isterseniz aşağıda yolu belirtilen yapılandırma dosyası üzerinden işlemleri gerçekleştirebilirsiniz.

Yapılandırma Dosyası: Settings/Autoloader.php
'composer' => true

Eğer vendor/ dizini yerine farlı bir dizin veya yol kullanılıyorsa bu anahtara autoload.php dosyasının konumunu tanımlanır.

'composer' => 'External/vendor/autoload.php'
Devtools ile Kurulum

Devtools kurulu ise composer paketleri Devtools'un araçlarında bulunan packages/ menüsü üzerinden arayüz kullanarak da gerçekleştirilebilir.

URL: yoursite.com/Devtools/packages

 

 

# Takma İsim (Alias Name)


ZN Framework'te dahil edilen sınıflara kolay erişim için takma isim verebilirsiniz. Yapılandırma için aşağıdaki dosyayı kullanın.

Dosya: Settings/Autoloader.php -> aliases

Yapılandırma

array
$aliases = ['alias name' => 'origin name']
Takma isim verilecek sınıflar dizisi. Dizi anahtarı olarak takma isim değer olarak gerçek ismi belirtilmelidir.
'aliases' => 
[
    # alias name                 => origin name
    'Project\Controllers\Import' => 'Import',
    'U'                          => 'User'
];

Yukarıdaki örnekte Import:: kütüphanesini kontrolcüler içinde use ile tanımlamadan ve User:: kütüphanesini artık U:: olarak kullanabileceğimiz belirtik.

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

class Home extends Controller
{
    public function main()
    {
        Import::view('example'); # artık use ile tanımlanmaya ihtiyaç duymuyor.
    }
}
Bilgi: Takma isim vermek sınıfların orijinal isimleri ile kullanımını engellemez.

 

 

# Sınıf Haritası (ClassMap) 


ZN Framework'te dahil edilen sınıfların otomatik olarak çağrılabilmesi için yol bilgileri her proje içinde yer alan map.php dosyasına yazılır. Bir sınıfın dosya adı map.php dosyasına yazıldıktan sonra dosya adı değiştirilmeden sınıf adı üzerinde değişiklik yapılması durumunda yeniden yazma işlemi yapılmaz. Bu gibi durumlarda ilgili kontrolcü içinde sınıf çağrımından hemen önce $this->restart() yöntemi çalıştırılarak map.php dosyasına yeniden yazılması sağlanır. Ya da manuel olarak map.php dosyasını silebilirsiniz. Bir sonraki çalıştırma aşamasında bu dosya yeniden oluşturulur. Sınıf haritası dosyasının konumu aşağıdaki gibidir.

Dosya: Projects/ProjectDirectory/map.php

Sınıf oluşturma işleminin yukarıda belirtilen durum nedeni ile oluşturulamaması halinde ilgili kontrolcüde aşağıdaki örnekte gösterildiği gibi bu dosyanın yeniden oluşturulmasını sağlayabilirsiniz.

Dosya: Controllers/Home.php
public function main()
{
    $this->restart();

    Example::run();
}
Tarama Alanını Genişletme

Oto yükleyicinin sınıf tarama alanı varsayılan olarak Controllers/, Models/, Commands/ vs Libraries/ dizinlerini tarar. Bu dizinlerin yanı sıra istediğiniz başka dizinlerin de taranmasını sağlayabilirsiniz.

Dosya: Settings/Autoloader.php -> classMap

Yapılandırma

array
$classMap = ['directory']
Taranması istenen dizinler dizisi.
'classMap' => 
[
    'MyClasses/',
    LIBRARIES_DIR,
    EXTERNAL_LIBRARIES_DIR,
    CONTROLLERS_DIR,
    EXTERNAL_CONTROLLERS_DIR,
    MODELS_DIR,
    EXTERNAL_MODELS_DIR,
    COMMANDS_DIR,
    EXTERNAL_COMMANDS_DIR
];

Yukarıdaki örnekte taranması için varsayılan olarak belirtilen dizinlerin yanı sıra MyClasses/ isimli bir dizin daha ekledik. Böylece MyClasses/ dizini içine oluşturacağınız sınıflarda artık otomatik olarak yüklenecektir.