Dahil Etme Yöntemleri


    × Bunları biliyor muydunuz?
"ZN Framework 2011 senesinden beri geliştirilmeye devam etmektedir."


Bu kütüphane görünüm, js, css, font gibi varlık dosyalarını dahil etmek için kullanılır. Kütüphanelerin ise ZN Framework'ün oto yükleyici özelliğinden dolayı dahil edilmesine gerek yoktur.

 

 

# Dahil Edilme Önceliği


Dosyalar genellikle External/ ve Projects/ dizininde yer alan ilgili dizinlerden dahil edilir. Ama burada bilmeniz gereken aynı isimli dosyaların varlığı durumunda öncelikle hangi dizindeki dosyanın dahil edileceğidir. Bu sıralama;

1 - Projects
2 - External

gibidir. Dosya yükleme önceliği Internal (Dahili) yapılardır. Eğer burada dosya mevcut değilse bu defa External (Harici) dizine bakılır. Dosya her 2 dizin de mevcut değilse herhangi bir dahil edilme işlemi yapılmaz.

 

 

# Yöntemler


Import::usable(bool $usable = true) : this
Import::data(array $data) : this
Import::view(string $page, array $data = NULL, bool $contents = false) : mixed
Import::template(string $page, array $data = NULL, bool $contents = false) : mixed
Import::style(string ...$styles) : string
Import::script(string ...$scripts) : string
Import::font(string ...$fonts) : string
Import::something(string $page, array $data = NULL, bool $contents = false) : mixed
Import::recursive(bool $recursive = true) : this
Import::theme(mixed $theme, bool $recursive = false, bool $contents = false) : mixed
Import::plugin(mixed $plugin, bool $recursive = false, bool $contents = false) : mixed
Import::handload(string ...$args) : mixed

 

 

# Usable [3.0.0]


Dahil edilen dosyaların içeriğinin değişkene aktarılabilmesine olanak sağlar. Peki neden böyle bir kullanıma ihtiyaç duyulur sorusu aklımıza gelebilir. Bazen bir sayfanın içeriğini başka bir sayfaya veri olarak göndermek gerekebilir. Özellikle kendi masterpage'inizi tasarlamışsanız masterpage olarak ayarlanan sayfaya içerik sayfalarını veri olarak gönderebilmenizi sağlar. Opsiyonel yöntem olduğu için kullanılmak zorunda değildir.

Parametreler

bool $usable = true Aktarılabilir olsun mu?
return this

Kullanımı

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

use Import;

class Home extends Controller
{
    public function main()
    {
        $content = Import::usable()->view('content');
        $styles  = Import::usable()->styles('mystyle', 'sitestyle');
        
        View::content($content)->styles($styles);
    }
}

 

 

# Data [3.0.0]


Dahil edilen PHP sayfalarına veri göndermek için kullanılır. Opsiyonel yöntem olduğu için kullanılmak zorunda değildir.

Parametreler

array $data Görünüm sayfalarına gönderilecek veriler dizisidir.
return this

Aşağıda belirtilen yöntemlerin 2. parametresi yerine kullanılır.

Kullanımı

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

use Import;

class Home extends Controller
{
    public function main()
    {
        $data = 
        [
            'content' => Import::usable()->view('content'),
            'styles'  => Import::usable()->styles('mystyle', 'sitestyle')
        ];

        Import::data($data)->view('home');
    }
}

 

 

# View (1.0.0)


Views/ dizini içerisindeki sayfaların dahil edilmesi veya çağrılması için kullanılır.

Parametreler

string $page Views/ dizininden çağrılacak görünüm sayfasının yolu. .php veya .wizard uzantısı eklemeye gerek yok.
array $data = NULL Görünüme gönderilecek veriler dizisi.
bool $usable = false Görünümün içeriği aktarılabilir olsun mu?
return mixed

Kullanımı

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

use Import;

class Home extends Controller
{
    public function main()
    {
        Import::view('home');
    }
}
Data Gönderimi

Data gönderimi 2. parametre ile yapılır. Bu parametreye gönderilecek datalar anahtar => değer formunda yazılan bir dizi gönderilmelidir.

<?php namespace Project\Controllers;

use Import;

class Home extends Controller
{
    public function main()
    {
        $content = Import::usable()->view('content');
        $styles  = Import::usable()->styles('mystyle', 'sitestyle');

        Import::view('home',
        [
            'content' => $content,
            'styles'  => $styles
        ]);
    }
}
Değişkene Aktarılabilirlik

Değişkene aktarım için 3. parametrenin true olarak ayarlanması ya da usable(true) yönteminin kullanılması gerekir. Eğer 3. parametreyi kullanıyor ve data göndermiyorsanız 2. parametreyi NULL ya da [] ayarlamanız gereklidir.

<?php namespace Project\Controllers;

use Import;

class Home extends Controller
{
    public function main()
    {
        $content = Import::view('content', NULL, true);

        Import::view('home',
        [
            'content' => $content
        ]);
    }
}

 

 

# Template (1.0.0)


Bu yöntem görünüm kullanımına benzer olup 2 dizinden çağrım yapar. Çağrım önceliğine göre bu dizinler aşağıdaki gibidir.

Dosya: Projects/Any/Resources/Templates/
Dosya: External/Resources/Templates/

Genellikle bu dizinlerde .php uzantılı html içerikli tablolar, şemalar, formlar yer alır.

Parametreler

string $page Resources/Templates/ dizininden çağrılacak şablon dosyasının yolu. .php veya .wizard uzantısı eklemeye gerek yok.
array $data = NULL Görünüme gönderilecek veriler dizisi.
bool $usable = false
Görünümün içeriği aktarılabilir olsun mu?
return mixed

Kullanımı

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

use Import;

class Home extends Controller
{
    public function main()
    {  
        $templateData  =

        [
            'subject' => 'Example Subject',
            'message' => 'Example Message'      
        ];
      
        $emailTemplate = Import::template('MyEmailTemplate', $templateData, true);
        
        View::emailTemplate($emailTemplate);
    }
}


 

# Style / Script (1.0.0)


Harici olarak .css veya .js uzantılı stil ve script dosyalarını görünüme dahil etmek için kullanılır. Import::style() ve Import::script() yöntemlerinin kullanımları bire bir aynı olduğu için anlatım sadece Import::style() üzerinden götürülmüştür.

Theme::active() yöntemi ile herhangi bir tema dizini (Resources/Themes/Default/) aktif edilmişse yol bilgisi bu aktif edilen dizini gösterecek şekilde içerisine oluşturulmuş stil dosyalarını dahil etmek için kullanılır. Bu yöntem ile herhangi bir tema aktive işlemi yapılmamışsa yol bilgisi belirtmeye Resources/Themes/ dizini içerisinden başlar. Aynı anda birden fazla dosyayı dahil edebilmeniz mümkündür.

Aşağıdaki gibi örnek bir dosya dizin yapısına sahip olduğumuzu varsayalım;

Resources/Themes/Blue/

site.css
contact.css
panel.css

Parametreler

mixed ...$args Resources/Themes/ dizininden çağrılacak css dosyasının yolu.
return mixed

Kullanımı

Herhangi bir tema ative işlemi gerçekleştirilmemişse aşağıdaki kullanımlar yukarıdaki örnek dizin yapısına göre yol bilgisi Resources/Themes/ dizinini gösterecek şekilde belirtilerek dahil edilir.

Import::style('Blue/site');

Birden çok stil dosyasını aynı anda dahil etmek istersek aşağıdaki şekilde kullanırız.

Import::style('Blue/site', 'Blue/contact', 'Blue/panel');
Tema Aktivasyonu

Eğer tema aktif edilmişse bu defa yol bilgisi aktif edilen bu tema dizini gösterecek şekilde belirtilir.

Dosya: Controllers/Initialize.php
Theme::active('Blue');
Dosya: Views/Sections/head.wizard.php
Import::style('site', 'contact', 'panel');
Değişkene Aktarılabilirlik

Eğer import edilen stil dosyasını bir değişkene veri olarak aktarmak istersek son parametre true olarak girilmelidir.

$style = Import::style('site', 'contact', 'panel' , true);
Uzak Bağlantılı Linkler

Settings/CDNLinks.php yapılandırma dosyasında yer alan link anahtarları ilgili stili yüklemek için kullanılabilir.

Import::style('bootstrap', 'awesome');

 

 

# Font (1.0.0)


Resources/Themes/Any/ dizini içerisine eklenmiş font dosyalarını dahil etmek için kullanılır. Desteklenen fontlar SVG, WOFF, OTF, TTF, EOT uzantılı fontlardır. Istenirse Settings/Expressions.php ayar dosyasında yer alan 'differentFontExtensions' => [] ayarından desteklenmesi istenen farklı bir font türleri belirtilebilir.

Parametreler

mixed ...$args Resources/Themes/ dizininden çağrılacak font dosyasının yolu.
return mixed

Kullanımı

Değişkene aktarılabilirlik ve Tema aktivasyonu kullanımları Import::style() gibidir. 

Import::font('Elips');

Birden çok font dosyasını aynı anda dahil etmek istersek aşağıdaki şekilde kullanırız. Aynı anda birden fazla font dahil edilebilir.

Import::font('Elips', 'Abode', 'Secrcode/secrcode');
Farklı Uzantılar

Eğer font dosyanızın farklı uzantılı türleri de varsa onlarda yüklenir.

Aşağıdaki gibi örnek bir font dosyalarınızın olduğunu varsayalım;

Resources/Themes/Blue/fonts/

akrobat.svg
akrobat.ttf
akrobat.eot

Aşağıdaki kullanım bu fontların hepsini dahil eder.

Import::font('fonts/akrobat');
Uygulama

Kullanımı daha iyi anlamanız için basit bir kod üzerinde inceleyelim.

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

use Import;

class Home extends Controller
{
    public function main()
    {
        Import::font('Akrobat/Black');
    }
}
View File: Views/Home/main.php
<div style="font-family:AkrobatBlack">Font Example</div>

 

 

# Something (1.0.0)


Daha çok standart dizinler (Views/, Resources/) dışından .php, .css veya .js uzantılı dosyaları dahil etmek için kullanılır.

Parametreler

string $page Herhangi bir dizinden çağrılacak dosyanın yolu.
array $data = NULL Görünüme gönderilecek veriler dizisi.
bool $usable = false Görünümün içeriği aktarılabilir olsun mu?
return mixed

Kullanımı

Import::something(THEMES_DIR . 'site.css');
Import::something(EXTERNAL_THEMES_DIR . 'site.js');
Import::something(VIEWS_DIR. 'contact.php', ['data1' => 1, 'data2' => 2]);
Uyarı: Bu kullanımda dosyanın tam konumu ve uzantısı belirtilmelidir.
Değişkene Aktarılabilirlik
$page = Import::something(VIEWS_DIR . 'contact.php', NULL, true);

Bu kullanım css ve js yüklemeleri içinde geçerlidir.

 

 

# Recursive [3.0.0]


İç dizin taramasını yapılıp yapılmayacağını belirlemek için kullanılan opsiyonel yöntemdir. Import::plugin() ve Import::theme() yöntemlerinin 2. parametresi yerine kullanılır.

Parametreler

bool $recursive = true İç içe dizin taraması yapılsın mı?
return this

Kullanımı

Import::recursive()->plugin('Bootstrap');
Import::recursive()->theme('BluePrint');

 

 

# Theme [3.0.0]


Aşağıdaki dizinlerin içinde yer alan tema dizininin adı belirtilerek dizin içindeki tema ile alakalı her dosyanın otomatik olarak yüklenmesi sağlanır.

Proje: Projects/Any/Resources/Themes/
Ortak: External/Resources/Themes/
Uyarı: Theme::active() yönteminin kullanımından etkilenmez.

Parametreler

mixed $theme Tema adı.
bool $recursive = false İç içe dizin taraması yapılsın mı?
bool $usable = false Görünümün içeriği aktarılabilir olsun mu?
return mixed

Kullanımı

Import::theme('MyTheme');
Alt Dizin Taraması

Belirtilen dizin içindeki tüm alt dizinlerde bulunan dosyaları yüklemek için kullanılır. Yani alt dizinlerin içerisinde de tarama yapar. 2. parametre true olarak ayarlanmalı veya recursive() yönteminden yararlanılmalıdır.

Import::theme('Slider', true);
Değişkene Aktarılabilirlik

Bir değişkene aktarılarak kullanılmak istenirse 3. parametre true olarak ayarlanmalı veya usable() yönteminden yararlanılmalıdır.

Import::theme('Slider', false, true);
Seçime Göre Yükleme

Birden fazla dosya veya dizin de dahil etme işlemi yapabilmek için 1. parametre array veri türünde belirtilir. Dizi içerisinde bir tema dizini veya tema dizine bağlı dosyalar yer alabilir.

Dikkat: Theme::active() yöntemi kullanılıyorsa seçili tema dizini kök dizin kabul edilir.
Import::theme(['BlueTheme', 'RedTheme', 'BlackTheme/black.css', 'style.css']);

Yukarıdaki örnek kullanımda aşağıdaki dosyaların yüklenmesi sağlanmıştır. 

Resources/Themes/BlueTheme/ içindeki .css ve .js dosyaları.
Resources/Themes/RedTheme/ içindeki .css ve .js dosyaları.
Resources/Themes/BlackTheme/black.css dosyası.
Resources/Themes/style.css dosyası.

 

 

# Plugin [3.0.0]


Aşağıdaki dizinlerin içinde yer alan eklenti dizininin adı belirtilerek dizin içindeki eklenti ile alakalı her dosyanın otomatik olarak yüklenmesi sağlanır.

Proje: Projects/Any/Resources/Plugins/
Ortak: External/Resources/Plugins/

Parametreler

mixed $plugin Eklenti adı.
bool $recursive = false İç içe dizin taraması yapılsın mı?
bool $usable = false Görünümün içeriği aktarılabilir olsun mu?
return mixed

Kullanımı

Import::plugin('MyPlugin');
Alt Dizin Taraması

Belirtilen dizin içindeki tüm alt dizinlerde bulunan dosyaları yüklemek için kullanılır. Yani alt dizinlerin içerisinde de tarama yapar. 2. parametre true olarak ayarlanmalı veya recursive() yönteminden yararlanılmalıdır.

Import::plugin('Slider', true);
Değişkene Aktarılabilirlik

Bir değişkene aktarılarak kullanılmak istenirse 3. parametre true olarak ayarlanmalı veya usable() yönteminden yararlanılmalıdır.

Import::plugin('Slider', false, true);
Seçime Göre Yükleme

Birden fazla dosya veya dizinde dahil etme işlemi yapabilmek için 1. parametre array veri türünde belirtilir.

Import::plugin(['MyPlugins', 'bootstrap/bootstrap.css', 'bootstrap/boostrap.js']);

Yukarıdaki örnek kullanımda aşağıdaki dosyaların yüklenmesi sağlanmıştır.

Resources/Plugins/MyPlugins/ içindeki .css ve .js dosyaları.
Resources/Plugins/bootstrap/bootstrap.css dosyası.
Resources/Plugins/bootstrap/bootstrap.js dosyası.

 

 

# Handload [3.0.0]


Aşağıdaki dizinlerin içerisinde yer alan fonksiyon içerikli dosyaları dahil etmek için kullanılır. Uzantı belirtmeye gerek yoktur. Özellikle projeniz için gerekli fonksiyon tanımlamaları yapmak için kullanışlıdır.

Proje: Projects/Any/Starting/Handload/
Ortak: External/Starting/Handload/

Parametreler

mixed ...$args Dosya adı.
return mixed

Kullanımı

Import::handload('funcFile1', 'funcFile2');