Kütüphane Entegrasyonu
"Başlangıç dosya ve kontrolcüleri üzerinden tüm kontrolcü ve görünümlere veri gönderilebilir."
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;
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
# Proje Kütüphaneleri
Projelerinize özgü kütüphanelerinizin bulunacağı dizindir.
# Harici Kütüphaneler
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.
Ö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.
'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 kurulu ise composer paketleri Devtools'un araçlarında bulunan packages/ menüsü üzerinden arayüz kullanarak da gerçekleştirilebilir.
# 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.
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.
<?php namespace Project\Controllers;
class Home extends Controller
{
public function main()
{
Import::view('example'); # artık use ile tanımlanmaya ihtiyaç duymuyor.
}
}
# 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.
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.
public function main()
{
$this->restart();
Example::run();
}
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.
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.