Ön Tanımlı Sabit ve Fonksiyonlar


    × Bunları biliyor muydunuz?
"Başlangıç kontrolcüsü üzerinden $this nesnesini data olarak göndererek statik olmayan sınıflara ilgili data üzerinden erişebilirsiniz."


ZN Framework'te ön tanımlı yer alan sabit ve fonksiyonların listesi aşağıda verilmiştir.

{INFO}_VERSION : string
{DIRECTORY_NAME}_DIRS : string
CURRENT_C{CONSTS} : string
{SPACE_CHARS} : string
{INFO}_PROJECT : string
SYSTEM_CONSTS : mixed
CSRFInput() : string
output(mixed $data, array $settings = [], bool $content = false) : mixed
redirect(string $url, int $time = 0, array $data = [], bool $exit = true) :
against(mixed $data, array $match) : mixed
length(mixed $data) : int
wizard(string $content, array $data = [], array $config = []) : string
once(string $key, callable $data) : mixed

 

 

# {INFO}_VERSION


Versiyon bilgileri ile ilgili sabitler.

ZN_VERSION

ZN Framework'ün mevcut version bilgisini verir.

echo ZN_VERSION;
4.5.0
REQUIRED_PHP_VERSION

ZN Framework'ün kullanılabilir minimum PHP versiyon bilgisini verir.

echo REQUIRED_PHP_VERSION;
7.0.0

 

 

# {DIRECTORY_NAME}_DIRS


ZN Framework'ün her bir dizininin yol bilgisini tutan bir sabit mevcuttur. Bu sabitin tuttuğu yol bilgisi ilgili projeye göre değişmektedir.

Sabitler

Proje Dizini Sabitleri Karşılıkları External Dizini Sabitleri Karşılıkları
BUTCHERY_DIR Projects/Any/Butchery/ EXTERNAL_BUTCHERY_DIR Extenal/Butchery/
CONTROLLERS_DIR Projects/Any/Controllers/ EXTERNAL_CONTROLLERS_DIR Extenal/Controllers/
VIEWS_DIR Projects/Any/Views/    
MODELS_DIR Projects/Any/Models/ EXTERNAL_MODELS_DIR Extenal/Models/
ROUTES_DIR Projects/Any/Routes/ EXTERNAL_ROUTES_DIR Extenal/Routes/
CONFIG_DIR Projects/Any/Config/    
DATABASES_DIR Projects/Any/Databases/    
STORAGE_DIR Projects/Any/Storage/    
COMMANDS_DIR Projects/Any/Commands/ EXTERNAL_COMMANDS_DIR Extenal/Commands/
LIBRARIES_DIR Projects/Any/Libraries/ EXTERNAL_LIBRARIES_DIR Extenal/Libraries/
STARTING_DIR Projects/Any/Starting/ EXTERNAL_STARTING_DIR Extenal/Starting/
AUTOLOAD_DIR Projects/Any/Starting/Autoload/ EXTERNAL_AUTOLOAD_DIR Extenal/Starting/Autoload/
HANDLOAD_DIR Projects/Any/Starting/Handload/ EXTERNAL_HANDLOAD_DIR Extenal/Starting/Handload/
LAYERS_DIR Projects/Any/Starting/Layers/ EXTERNAL_LAYERS_DIR Extenal/Starting/Layers/
RESOURCES_DIR Projects/Any/Resources/ EXTERNAL_RESOURCES_DIR Extenal/Resources/
FILES_DIR Projects/Any/Resources/Files/ EXTERNAL_FILES_DIR Extenal/Resources/Files/
TEMPLATES_DIR Projects/Any/Templates/ EXTERNAL_TEMPLATES_DIR Extenal/Resources/Templates/
THEMES_DIR Projects/Any/Themes/ EXTERNAL_THEMES_DIR Extenal/Resources/Themes/
PLUGINS_DIR Projects/Any/Plugins/ EXTERNAL_PLUGINS_DIR Extenal/Resources/Plugins/
UPLOADS_DIR Projects/Any/Uploads/ EXTERNAL_UPLOADS_DIR Extenal/Resources/Uploads/
EXTERNAL_DIR External/    
intERNAL_DIR internal/    
PROJECTS_DIR Projects/    
SETTINGS_DIR Settings    
Uyarı: ZN Framework'ün her bir dizin sabiti çıktısının son karakteri / sembolü ile biter. Ayrıca eklememeye dikkat ediniz.
echo FILES_DIR;
Projects/Any/Resources/Files/
echo THEMES_DIR;
Projects/Any/Resources/Themes/
echo CONTROLLERS_DIR;
Projects/Any/Controllers/
echo RESOURCES_DIR;
Projects/Any/Resources/
CURRENT_THEME_DIR

Theme::active() ile belirlenen aktif temanın dizin yol bilgisini verir.

echo CURRENT_THEME_DIR;
Projects/Frontend/Resources/Themes/Default/

 

 

# CURRENT_C{CONSTS} (ZN >= 4.0.0)


O an ki aktif olan sayfaya yönelik URI ve PATH bilgilerini içeren sabitlerdir. Sabitler aşağıdaki URL üzerinden örneklendirilmiştir.

URL: localhost/Product/edit/id/10
CURRENT_CONTROLLER

Aktif kontrolcünün uzantısız dosya adını verir. 

Not: Rota düzenlemeleri bu bilgiyi değiştirmez. Bu nedenle bu bilgi güvenilirdir.
echo CURRENT_CONTROLLER;
Product
CURRENT_CFUNCTION

Aktif kontrolcünün çalıştırdığı yöntem bilgisini verir.

echo CURRENT_CFUNCTION;
edit
CURRENT_CNAMESPACE

Aktif kontrolcünün isim alanı bilgisini verir.

echo CURRENT_CNAMESPACE;
Project\Controllers
CURRENT_CCLASS

Aktif kontrolcünün sınıf ismini verir. Sınıf ismi doğal olarak isim alanını da içerir.

echo CURRENT_CCLASS;
Project\Controllers\Product
CURRENT_CFPATH

İstek yapılan aktif kontrolcü ve yöntem bilgisini verir.

echo CURRENT_CFPATH;
Product/edit
CURRENT_CFURI

İstek yapılan aktif kontrolcü ve yöntem bilgisini daima küçük harfe çevrilmiş olarak verir.

echo CURRENT_CFURI;
product/edit
CURRENT_CFURL

İstek yapılan aktif kontrolcü ve yöntem bilgisini url adresi ile birlikte verir.

echo CURRENT_CFURL;
localhost/Product/edit
CURRENT_CPAGE

İstek yapılan aktif kontrolcünün dosya adını verir.

echo CURRENT_CPAGE;
Product.php
CURRENT_CFILE

İstek yapılan aktif kontrolcünün dosya yol bilgisini verir.

echo CURRENT_CFILE;
Projects/ProjectDirectory/Controllers/Product.php

 

 

# {SPACE_CHARS}


Boşluk karakterleri ile ilgili sabitler.

echo EOL;
\r\n
echo CRLF;
\r\n
echo CR;
\r
echo LF;
\n
echo HT;
\t
echo FF;
\f

 

 

# {INFO}_PROJECT


Aktif proje ile ilgili sabitler.

DEFAULT_PROJECT

Ön tanımlı açılış proje dizinin adını verir.

echo DEFAULT_PROJECT;
DefaultProjectDirectory
CURRENT_PROJECT

İstek yapılan aktif proje dizinin adını verir.

echo CURRENT_PROJECT;
CurrentProjectDirectory
CONTAINER_PROJECT

İstek yapılan aktif proje bir başka proje dizini tarafından kapsanıyorsa kapsayan proje dizini bilgisini verir. Eğer herhangi bir proje tarafından kapsanmıyorsa aktif proje dizini bilgisi döner.

URL: localhost/admin
echo CONTAINER_PROJECT;
Frontend
CURRENT_THEME

Theme::active() ile belirlenen aktif temanın isim bilgisini verir.

echo CURRENT_THEME;
Default

 

 

# SYSTEM_CONSTS (ZN >= 1.0.0)


ZN Framework sistemi için kullanılan diğer dahili sabitlerin listesi aşağıdaki gibidir.

PROJECTS_CONFIG
DIRECTORY_INDEX
EXTERNAL_*
START_BENCHMARK
END_BENCHMARK
ZN_DEDICATED
PROJECT_TYPE
SSL_STATUS
PROJECT_CONTROLLER_NAMESPACE
PROJECT_COMMAND_NAMESPACE
intERNAL_ACCESS
GET_DIRS
BASE_DIR
ZEROCORE
REAL_BASE_DIR
REQUESTED_CURRENT_PROJECT
DEFINED_CURRENT_PROJECT
STUCTURE_DATA
PROJECT_CONFIG
PROJECT_MODE
HTACCESS_CONFIG

 

 

# CSRFInput


Rota işlemlerinde ya da Security sınıfı ile CSRF token datası oluşturulduğunda o datayı kontrol etmek ve eşleştirmek için hidden input nesnesi oluşturmak için kullanılır.

Parametreler

return string

Kullanımı

echo CSRFInput();

 

 

# Output


Çıktılanabilen veya çıktılanamayan verileri çıktılamak için kullanılır. Özellikle dizi türündeki verilerin çıktısını görmek açısından oldukça kullanışlıdır.

Parametreler

mixed $data Çıktılanacak dizge veya dizi.
return mixed

Kullanımı

output([1, 2, true, ['a' => 1, 'b']]);
0 => integer 1 ( length = 1 ),
1 => integer 2 ( length = 1 ),
2 => boolean true ( length = 4 ),
3 => array
(
        a => integer 1 ( length = 1 ),
        0 => string 'b' ( length = 3 ),
)

 

 

# Redirect


Belli bir süre sonra sayfa yenilemek veya başka bir sayfaya yönlendirme yapmak için kullanılır.

Parametreler

string string $uri Nereye yönlendirileceği.
int int $time = 0 Bekleme süresi.
array array $data = [] Gönderilecek data.
bool bool $exit = true Sayfa kod akışı durdurulsun mu?

Kullanımı

redirect('profile', 2);

 

 

# Against [6.4.0][2021-01-15]


PHP 8 kullanımı ile gelen match() kullanımının bir benzeri olan ancak 8 öncesi sürümlerde benzer bir kullanım sağlamak amacı ile oluşturulmuştur. Switch kullanımının bir benzeridir.

Parametreler

mixed $data Karşılaştırılacak herhangi bir veri.
array $match Karşılaştırma dizisi.
return mixed

Kullanımı

$data = 2;

$return = against($data, 
[
    1         => 1,
    '2|3'     => '2 or 3',
    'default' => 4 
]);

echo $return;
2 or 3
Not: Kesin eşleşme gerekmez. Eşleştirme yapılırken değerin türüne bakılmaz. (string) 3 == (int) 3 kabul edilir.

Eğer default belirtilmezse ve herhangi bir eşleşme sağlanmazsa false döner. 

 

 

# Length [6.5.0][2021-01-29]


Dizi, obje veya scalar verinin uzunluğunu hesaplar.

Parametreler

scalar | array | object $uri Karakter sayısı hesaplanacak veri.
return int

Kullanımı

echo length('abc');
3

[$uri = array]

echo length(['a', 'b', 'c']);
3

 

 

# Wizard [6.24.0][2021-10-09]


Görünümde kullanılan şablon sihirbazı söz dizimini herhangi bir sınıf veya fonksiyon içerisinde kullanabilmenizi salar.

Parametreler

array $content Wizard söz dizimi.
array $data = [] Şablonda yer alan değişkenlere değer göndermek için kullanılır.
array $config = [] Şablon sihirbazının yapılandırmalarını değiştirmek için kullanılır.
return string

Kullanımı

$content = ' 
@foreach( $arr as $val ) 
    $val   
@endforeach 
';

$arr = [1, 2, 3, 4, 5];

echo wizard($content, ['array' => $arr]);
12345

 

 

# Once [7.7.1][2022-12-09]


Bir kodun bir anahtar ifadeye bağlı olarak tekrar kullanımlarında sadece bir kez çalışmasını sağlayan yardımcı fonksiyondur. Genellikle aynı sonucu verecek bir yöntem içinde kullanılacak bir veritabanı sorgusunun her kullanımda tekrarını engellemek için oldukça kullanışlıdır.

Parametreler

string $key Çalıştırılacak kodun bir kez çalışmasını sağlayacak anahtar ifade.
callable $data Çalıştırılacak kod.
return mixed

Kullanımı

function config($key)
{
    return once($key, function($key)
    {
        # Aynı anahtara bağlı olarak 1 kez çalıştırılır.

        output('working');

        return DB::where('name', $key)->select('name')->get('configs')->value();
    });
}

output( config('pencil') ); 
output( config('pencil') );
working
pencil
pencil

Yukarıda yer alan sonuçtan anlaşıldığı üzere istenen sonucun 2 kez (pencil) çıktı vermesine karşın kod 1 kez (working) çalıştırılmıştır.

Bilgi: Veriler $GLOBALS dizisinde saklanır.

Verilerin $GLOBALS dizisinde saklanmasından dolayı bu yöntemin anahtarı eşsiz seçilmesine dikkat edilmelidir.

function config($key)
{
    return once(md5($key), function() use($key)
    {
        return DB::where('name', $key)->select('name')->get('configs')->value();
    });
}

Yukarıda yer alan örnekte string $key parametresinin md5() ile şifrelendiği görülmektedir.