PHP Classes

File: docs/tr-readme.md

Recommend this page to a friend!
  Classes of Ali YILMAZ   Mind Framework   docs/tr-readme.md   Download  
File: docs/tr-readme.md
Role: Class source
Content type: text/markdown
Description: Class source
Class: Mind Framework
Framework that implements several design patterns
Author: By
Last change:
Date: 1 year ago
Size: 213,145 bytes
 

Contents

Class file image Download

Mind nedir?

Mind, geli?tiriciler için tasarlanm?? PHP kod çerçevesidir. Tasar?m desenleri, uygulamalar ve kod çerçeveleri olu?turmak için çe?itli çözümler sunar.

---

Edinme

Mind s?n?f?n? edinmenin iki yolu vard?r;

---

Kurulum

Mind deposu için:
  • Yerel veya web sunucunuzda bulunan proje ana dizinine, edindi?iniz Zip dosyas? içindeki src yolunda yeralan Mind.php dosyas?n? ç?kar?n.
  • Mind.php dosyas?n? include ya da require_once gibi bir yöntemle projenizin index.php dosyas?na dahil edin ve extends veya new Mind() komutu yard?m?yla kurulum i?lemini tamamlay?n.
require_once('./Mind.php');
$Mind = new Mind();

_veya_

require_once('./Mind.php');
class ClassName extends Mind{
    public function __construct($conf = array())
    {
        parent::__construct($conf);
    }
}

Project deposu için:
  • Yerel veya web sunucunuzda bulunan proje ana dizinine, edindi?iniz Zip dosyas? içeri?ini oldu?u gibi ç?kar?n.

Veritaban? Ayarlar?

S?n?f? kullanmak için veritaban? bilgilerini s?n?f ça?r?l?rken veya Mind.php dosyas?nda tan?mlamak gerekir.

$conf = array(
    'db'=>[
        'drive'     =>  'mysql', // mysql, sqlite, sqlsrv
        'host'      =>  'localhost', // sqlsrv için: www.example.com\\MSSQLSERVER,'.(int)1433
        'dbname'    =>  'mydb', // mydb, app/migration/mydb.sqlite
        'username'  =>  'root',
        'password'  =>  '',
        'charset'   =>  'utf8mb4'
    ]
);
$Mind = new Mind($conf);

_veya_

private $db =  [
    'drive'     =>  'mysql', // mysql, sqlite, sqlsrv
    'host'      =>  'localhost', // sqlsrv için: www.example.com\\MSSQLSERVER,'.(int)1433
    'dbname'    =>  'mydb', // mydb, app/migration/mydb.sqlite
    'username'  =>  'root',
    'password'  =>  '',
    'charset'   =>  'utf8mb4'
];

Oturum Ayarlar?

Kullan?c?lar için olu?turulan oturumlar? özelle?tirmek veya kapatmak için kullan?lan metotdur. Oturumlar? kapatmak için, session_status parametresi false olarak, açmak içinse true olarak güncellenmelidir.

Oturumlar?n sakland??? klasör yolunu de?i?tirmek için, path parametresinin güncellenmesi gerekir. Belirtilen yolda oturumlar?n tutulmas? görevini etkinle?tirmek için path_status parametresi true olarak güncellenmelidir.

Bilgi: Oturum Ayarlar? varsay?lan olarak sunucu ayarlar?na göre yap?land?r?lm??t?r.

private $sess_set    = array(
    'path'              =>  './session/',
    'path_status'       =>  false,
    'status_session'    =>  true
);

Zaman Dilimi Ayar?

?çeri?in do?ru zaman damgas?yla i?aretlenebilmesi için zaman dilimini ki?iselle?tirmek mümkündür. Varsay?lan olarak Europe/Istanbul tan?mlanm??t?r. S?n?f d???ndan eri?ime izin vermek için public özelli?i tan?mlanm??t?r. Daha fazla bilgi için Desteklenen zaman dilimlerinin listesi bölümüne bakabilirsiniz.

Bilgi: Gerekti?i kadar ki?iselle?tirilmemi? sunucular proje zaman diliminden farkl? zaman dilimi kullanabilmektedir, bu k?s?mda ki yap?lan düzenleme farkl? sunucularda do?ru zaman damgas?na sahip olmay? sa?lar.

public $timezone    = 'Europe/Istanbul';

Etkin Metotlar

Projenin gerektirdi?i temel yöntemler varsay?lan olarak etkindir ve a?a??da bilgilerinize sunulmu?tur.

Etkin De?i?kenler

public $post

S?n?f?n dahil edildi?i projede yap?lan $_GET, $_POST, $_FILES ve JSON POST istekleri, $this->post dizi de?i?keninde tutulur. S?n?f d???ndan eri?ime müsaade etmek için public özelli?i tan?mlanm??t?r.

public $base_url

Mind.php dosyas?n?n içinde bulundu?u klasörün yolu $this->base_url de?i?keninde tutulur. S?n?f d???ndan eri?ime izin vermek için public özelli?i tan?mlanm??t?r.

public $page_current

Görüntülenmekte olan sayfa yolu $this->page_current de?i?keninde tutulur. S?n?f d???ndan eri?ime izin vermek için public özelli?i tan?mlanm??t?r.

public $page_back

Önceki sayfa yolu $this->page_back de?i?keninde tutulur. S?n?f d???ndan eri?ime izin vermek için public özelli?i tan?mlanm??t?r.

public $timezone

Projenin zaman dilimi bu de?i?kende tutulur, varsay?lan olarak Europe/Istanbul olarak belirtilmi?tir. S?n?f d???ndan eri?ime izin vermek için public özelli?i tan?mlanm??t?r.

public $timestamp

Projenin zaman damgas?, y?l-ay-gün saat:dakika:saniye biçiminde $this->timestamp de?i?keninde tutulur. S?n?f d???ndan eri?ime izin vermek için public özelli?i tan?mlanm??t?r.

public $lang

Çoklu dil deste?i için ayarlar?n tutuldu?u de?i?kendir, S?n?f d???ndan eri?ime izin vermek için public özelli?i tan?mlanm??t?r. Söz konusu ayarlar, table, column, haystack, return, lang sütunlar?nda ta??n?r.

public $error_status

Hata durumlar?n? true veya false olarak ta??yan de?i?kendir, varsay?lan olarak false belirtilmi?tir. S?n?f d???ndan eri?ime izin vermek için public özelli?i tan?mlanm??t?r.

public $errors

Hata mesajlar?n?n tutuldu?u de?i?kendir, d??ar?dan eri?ime izin vermek için public özelli?i tan?mlanm??t?r.

Metotlar

Temel

Veritaban?

Do?rulay?c?

Yard?mc?

Sistem

__construct()

Kurulum a?amas?nda belirtilen bilgiler ?????nda veri taban? ba?lant?s? sa?lamak ve Etkin Metotlar k?sm?nda yeralan metotlar?n etkinle?tirilmesi için kullan?l?r.

__destruct()

Metotlar içerisinde de?i?en istek ve durumlar?n ak?betini belirlemek için kullan?l?r. Ayr?ca herhangi bir k?s?mda hata durumu varsa hata sayfas?n?n görüntülenmesini de sa?lar.

dbConnect()

Veritaban? ba?lant?s? gerçekle?tirmek amac?yla kullan?l?r. mysql, sqlite ve sqlsrv veritaban? türlerini desteklemektedir. Varsay?lan olarak __construct() içinde çal??t?r?larak etkinle?tirilmi?tir.

kod:

$conf = [
    'db'=>[
        'drive'     =>  'mysql', // mysql, sqlite, sqlsrv
        'host'      =>  'localhost',  // sqlsrv için: www.example.com\\MSSQLSERVER,'.(int)1433
        'dbname'    =>  'mydb', // mydb, app/migration/mydb.sqlite
        'username'  =>  'root',
        'password'  =>  '',
        'charset'   =>  'utf8mb4'
    ]
];
$this->dbConnect($conf);

Bilgi: Ba?lant? bilgilerinin gönderilme zorunlulu?u yoktur. Bilgilerin gönderilmemesi durumunda Mind.php içinde tan?mlanan a?a??daki bilgiler dikkate al?narak veritaban? ba?lant?s? gerçekle?tirilir.

kod:

private $db             =  [
    'drive'     =>  'mysql', // mysql, sqlite, sqlsrv
    'host'      =>  'localhost',  // sqlsrv için: www.example.com\\MSSQLSERVER,'.(int)1433
    'dbname'    =>  'mydb', // mydb, app/migration/mydb.sqlite
    'username'  =>  'root',
    'password'  =>  '',
    'charset'   =>  'utf8mb4'
];

selectDB()

Kurulum a?amas?nda belirtilen kullan?c?n?n yetkili oldu?u veritaban?n? seçmek için kullan?l?r. Veritaban? ad? string olarak belirtilmelidir.

kod:

$this->selectDB('blog');
$this->print_pre($this->getData('users', array('limit'=>array('end'=>2))));

ç?kt?:

Array
(
    [0] => Array
        (
            [id] => 1
            [username] => aliyilmaz
            [password] => e10adc3949ba59abbe56e057f20f883e
            [email] => ali@example.com
            [lang] => TR
            [created_at] => 2021-08-25 18:51:56
            [updated_at] => 2021-08-30 23:50:12
            [status] => 1
        )

    [1] => Array
        (
            [id] => 2
            [username] => denizyilmaz
            [password] => e10adc3949ba59abbe56e057f20f883e
            [email] => deniz@example.com
            [lang] => EN
            [created_at] => 2021-08-25 18:51:56
            [updated_at] => 2021-10-08 19:36:57
            [status] => 1
        )

)

dbList()

Kurulum a?amas?nda belirtilen kullan?c?n?n yetkilendirildi?i veritabanlar?n? listelemek amac?yla kullan?l?r. Veritabanlar? array olarak geri döndürülür.

kod:

$this->print_pre($this->dbList());

ç?kt?:

Array
(
    [0] => blog
    [1] => information_schema
    [2] => irfanli
    [3] => mydb
    [4] => mysql
    [5] => newblog
    [6] => performance_schema
    [7] => phpmyadmin
    [8] => test
)

tableList()

Belirtilen veritaban?na ait tablolar? listelemek için kullan?l?r. Veritaban? ad? string olarak belirtilmelidir. Sonuçlar dizi olarak geri döndürülür.

kod:

$this->print_pre($this->tableList('blog'));

ç?kt?:

Array
(
    [0] => categories
    [1] => contents
    [2] => menu
    [3] => products
    [4] => settings
    [5] => translations
    [6] => users
)

columnList()

Belirtilen veritaban? tablosuna ait sütunlar? listelemek amac?yla kullan?l?r. Veritaban? tablo ad? string olarak belirtilmelidir. Sütunlar dizi olarak geri döndürülür.

kod:

$this->print_pre($this->columnList('translations'));

ç?kt?:

Array
(
    [0] => id
    [1] => name
    [2] => text
    [3] => lang
    [4] => user_id
    [5] => _token
    [6] => status
    [7] => created_at
    [8] => updated_at
)

dbCreate()

Yeni bir veya daha fazla veritaban? olu?turmak amac?yla kullan?l?r. Olu?turulacak veritaban? isimleri string veya array olarak gönderilebilir. ??lem ba?ar?l?ysa true, ba?ar?l? de?ilse false yan?t? döndürülür. E?er projeye tan?mlanan veritaban? ad? dbCreate() metoduna gönderilmi?se, olu?turulduktan sonra o veritaban? seçilir.

kod:

$this->dbCreate('mydb');

ç?kt?:

Veritaban? olu?turuldu.

_veya_

kod:

$this->dbCreate(array('mydb','mydb1'));

ç?kt?:

Veritabanlar? olu?turulamad?.

tableCreate()

Yeni bir veritaban? tablosu olu?turmak amac?yla kullan?l?r. ??lem ba?ar?l?ysa true, de?ilse false yan?t? döndürülür.

Özellikler

  • int - (`int`)
  • decimal - (`decimal`)
  • string - (`varchar`)
  • small - (`text`)
  • medium - (`mediumtext`)
  • large - (`longtext`)
  • increments - (`auto_increment`)
Örnek
$scheme = array(
    'id:increments',
    'username:small',
    'password',
    'address:medium',
    'about:large',
    'amount:decimal@6,2',
    'title:string@120',
    'age:int'
);
$this->tableCreate('phonebook', $scheme);

Bilgi: Bir sütun olu?turma hakk?nda daha fazla bilgi için columnCreate metotuna bak?n.

columnCreate()

Veritaban? tablosunda bir veya daha fazla sütun olu?turmak amac?yla kullan?l?r, Sütun ad? ve özelli?i array olarak gönderilebilir. ??lem ba?ar?l?ysa true, de?ilse false yan?t? döndürülür.

Özellikler

  • int - (`int`)
  • decimal - (`decimal`)
  • string - (`varchar`)
  • small - (`text`)
  • medium - (`mediumtext`)
  • large - (`longtext`)
  • increments - (`auto_increment`)

Örnek

$scheme = array(
    'id:increments',
    'username:small',
    'password',
    'address:medium',
    'about:large',
    'amount:decimal@6,2',
    'title:string@120',
    'age:int'
);
$this->columnCreate('phonebook', $scheme);

int

Say?lar? tutmak için kullan?l?r. 3 parametre al?r. number:int@11 ilk parametre sütun ad?d?r. ikinci parametre sütun türüdür. Üçüncü parametre sütun de?erlerinin maksimum limitidir. Üçüncü parametre zorunlu de?ildir, e?er belirtilmezse varsay?lan olarak 11 de?erini al?r.

Örnek
$scheme = array(
    'number:int@12'
);
$this->columnCreate('phonebook', $scheme);

veya

$scheme = array(
    'number:int'
);
$this->columnCreate('phonebook', $scheme);

decimal

Parasal de?erleri tutmak için kullan?l?r, 3 parametre al?r. amount:decimal@6,2 ilk parametre sütun ad?d?r. ?kinci parametre sütun türüdür. Üçüncü parametreyse sütunun ald??? de?erdir. Üçüncü parametre zorunlu de?ildir, e?er belirtilmezse varsay?lan olarak 6,2 de?erini al?r.

Örnek
$scheme = array(
    'amount:decimal@6,2'
);
$this->columnCreate('phonebook', $scheme);

veya

$scheme = array(
    'amount:decimal'
);
$this->columnCreate('phonebook', $scheme);

string (varchar)

Belirtilen karakter uzunlu?una sahip string veri tutmak için kullan?l?r. 3 parametre al?r. title:string@120 ilk parametre sütun ad?d?r. ?kinci parametre sütun türüdür. Üçüncü parametreyse sütunun ta??yaca?? string de?erin maksimum karakter say?s?n? temsil etmektedir. Üçüncü parametre zorunlu de?ildir, e?er belirtilmezse varsay?lan olarak 255 de?erini al?r.

Örnek
$scheme = array(
    'title:string@120'
);
$this->columnCreate('phonebook', $scheme);

veya

$scheme = array(
    'title:string'
);
$this->columnCreate('phonebook', $scheme);

small (text)

65535 karakterlik string yap?da ki veriyi tutmak amac?yla kullan?l?r. 2 parametre al?r. content:small ilk parametre sütunun ad?, ikinci parametre sütunun türüdür. ?kinci parametre zorunlu de?ildir. E?er ikinci parametre belirtilmezse sütun varsay?lan olarak small türünü al?r.

Örnek
$scheme = array(
    'content:small'
);
$this->columnCreate('phonebook', $scheme);

veya

$scheme = array(
    'content'
);
$this->columnCreate('phonebook', $scheme);

medium (mediumtext)

16777215 karakterlik string yap?da ki veriyi tutmak amac?yla kullan?l?r. 2 parametre al?r. description:medium ilk parametre sütun ad?, ikinci parametre sütun türüdür. Her iki parametrenin de belirtilme zorunlulu?u bulunmaktad?r.

Örnek
$scheme = array(
    'description:medium'
);
$this->columnCreate('phonebook', $scheme);

large (longtext)

4294967295 karakterlik string yap?da ki veriyi tutmak amac?yla kullan?l?r. 2 parametre al?r. content:large ilk parametre sütun ad?, ikinci parametre sütun türüdür. Her iki parametrenin de belirtilme zorunlulu?u bulunmaktad?r.

Örnek
$scheme = array(
    'content:large'
);
$this->columnCreate('phonebook', $scheme);     

increments (auto_increment)

Veritaban? tablosuna her eklenen kayd?n otomatik artan bir numaraya sahip olmas? amac?yla kullan?l?r. 3 parametre al?r. id:increments@11 ilk parametre sütun ad?d?r. ?kinci parametre sütun türüdür. Üçüncü parametreyse art???n basamaksal maksimum limitini temsil etmektedir. Üçüncü parametre zorunlu de?ildir, e?er belirtilmezse varsay?lan olarak 11 de?erini al?r.

Örnek
$scheme = array(
    'id:increments@12'
);
$this->columnCreate('phonebook', $scheme);

veya

$scheme = array(
    'id:increments'
);
$this->columnCreate('phonebook', $scheme);

dbDelete()

Bir veya daha fazla veritaban?n? silmek amac?yla kullan?l?r, mydb0 ve mydb1 veritaban? adlar?n? temsil etmektedir, string veya array olarak veritaban? isimleri gönderildi?inde veritaban? silme i?lemi gerçekle?ir. ??lem ba?ar?l?ysa true, de?ilse false yan?t? döndürülür.

Örnek
$this->dbDelete('mydb0');

veya

$this->dbDelete(array('mydb0','mydb1'));

tableDelete()

Bir veya daha fazla veritaban? tablosunu silmek amac?yla kullan?l?r, my_table0 ve my_table1 veritaban? tablo isimlerini temsil etmektedir, string veya array olarak tablo isimleri gönderildi?inde silme i?lemi gerçekle?ir. ??lem ba?ar?l?ysa true, de?ilse false yan?t? döndürülür.

Örnek
$this->tableDelete('my_table0');

veya

$this->tableDelete(array('my_table0', 'my_table1'));

columnDelete()

Veritaban? tablosunda bulunan bir veya daha fazla sütunu silmek için kullan?l?r. users tablo ad?n?, username ve password silinmesi istenen sütunlar? temsil eder. string veya array olarak sütun isimleri gönderildi?inde silme i?lemi gerçekle?ir. ??lem ba?ar?l?ysa true, de?ilse false yan?t? döndürülür.

users:

$columns = [
    'id',
    'username',
    'password',
    'email',
    'status',
    'created_at',
    'updated_at'
];

kod:

$this->columnDelete('users', 'username');

ç?kt?:

Array
(
    [0] => id
    [1] => password
    [2] => email
    [3] => status
    [4] => created_at
    [5] => updated_at
)

kod:

$this->columnDelete('users', array('username', 'password'));

ç?kt?:

Array
(
    [0] => id
    [1] => email
    [2] => status
    [3] => created_at
    [4] => updated_at
)

dbClear()

Bir veya daha fazla veritaban? içeri?ini (auto_increment de?erleri dahil) silmek amac?yla kullan?l?r, mydb0 ve mydb1 veritaban? adlar?n? temsil etmektedir. Veritaban? isimleri string veya array olarak gönderildi?inde silme i?lemi gerçekle?ir. ??lem ba?ar?l?ysa true, de?ilse false yan?t? döndürülür.

Örnek
$this->dbClear('mydb0');

veya

$this->dbClear(array('mydb0','mydb1'));

tableClear()

Bir veya daha fazla veritaban? tablosu içindeki kay?tlar?n tamam?n?(auto_increment de?erleri dahil) silmek amac?yla kullan?l?r. Veritaban? tablo isimleri string veya array olarak gönderilebilir. my_table0 ve my_table1 veritaban? tablo isimlerini temsil etmektedir. ??lem ba?ar?l?ysa true, de?ilse false yan?t? döndürülür.

Örnek

$this->tableClear('my_table0');

veya

$this->tableClear(array('my_table0', 'my_table1'));

columnClear()

Bir veritaban? tablosunda bulunan bir veya daha fazla sütuna ait kay?tlar?n tamam?n? silmek amac?yla kullan?l?r. string veya array olarak sütun isimleri gönderilebilir. username ve password sütun isimlerini temsil eder. ??lem ba?ar?l?ysa true, de?ilse false yan?t? döndürülür.

Örnek

$this->columnClear('username');

veya

$this->columnClear(array('username', 'password'));

insert()

Veritaban? tablosuna bir veya daha fazla kay?t eklemek amac?yla kullan?l?r. 3 parametre al?r, ilk parametre veritaban? tablo ad?, ikincisi verilerin bulundu?u array veya array'ler içindir. 3'ncü parametre ise trigger yani tetikleyici görevleri içindir ve kullan?m ?ekli a?a??da bilgilerinize sunulmu?tur. Tüm i?lem(ler) ba?ar?l?ysa true, de?ilse false yan?t? döndürülür.

Örnek
$values = array(
    'title'     => 'test user',
    'content'   => '123456',
    'tag'       => 'test@mail.com'
);
$query = $this->insert('my_table', $values);

if($query){
    // true
} else {
    // false
}

veya

$values = array(
    array(
        'name'        => 'Ali Y?lmaz',
        'phone'       => '10101010101',
        'email'       => 'aliyilmaz.work@gmail.com',
        'created_at'  =>  date('d-m-Y H:i:s')
    ),
    array(
        'name'        => 'Deniz Y?lmaz',
        'phone'       => '20202020202',
        'email'       => 'deniz@gmail.com',
        'created_at'  =>  date('d-m-Y H:i:s')
    ),
    array(
        'name'        => 'Hasan Y?lmaz',
        'phone'       => '30303030303',
        'email'       => 'hasan@gmail.com',
        'created_at'  =>  date('d-m-Y H:i:s')
    )
)
$query = $this->insert('my_table', $values);

if($query){
    // true
} else {
    // false
}

veya

$values = array(
    'username' => 'aliyilmaz1',
    'password' => '1111111111'
);
$trigger = array(
    'users' => array(
        'username' => 'aliyilmaz2',
        'password' => '2222222222'
    ),
    'log' => array(
        'data' => 'test'
    )
);
$query = $this->insert('users', $values, $trigger);

if($query){
    // true
} else {
    // false
}

veya

$values = array(
    'username' => 'aliyilmaz1',
    'password' => '1111111111'
);
$trigger = array(
    'users'=>array(
        array(
            'username' => 'ali1',
            'password' => 'pass1'
        ),
        array(
            'username' => 'ali2',
            'password' => 'pass2'
        )
    ),
    'log'=>array(
        'data' => 'test'
    )
);
$query = $this->insert('users', $values, $trigger);

if($query){
    // true
} else {
    // false
}

update()

Veritaban? tablosunda bulunan bir kayd? güncellemek amac?yla kullan?l?r. my_table veritaban? tablo ad?n? temsil eder. title, content ve tag ise my_table tablosu içinde ki sütunlar? temsil eder. 17 güncellenmesi istenen kayd?n id'sini temsil eder.

Yeni de?erler array ?eklinde gönderildi?inde güncelleme i?lemi gerçekle?ir. id parametresini auto_increment özelli?i tan?mlanmayan bir sütunda aramak için sütun ad?n? 4'ncü parametre de belirtmek gerekir. ??lem ba?ar?l?ysa true, de?ilse false yan?t? döndürülür.

Örnek
$values = array(
    'title'   => 'test user',
    'content' => '123456',
    'tag'     => 'example@mail.com'
);
$query = $this->update('my_table', $values,17);

if($query){
    // true
} else {
    // false
}

veya

$values = array(
    'title'   => 'test user',
    'content' => '123456',
    'tag'     => 'example@mail.com'
);
$query = $this->update('my_table', $values,'test user', 'title');

if($query){
    // true
} else {
    // false
}

delete()

Veritaban? tablosunda bulunan bir veya daha fazla kayd? silmek amac?yla kullan?l?r. Bu silme i?lemini yaparken ba?ka tablolarda kay?t silmesi de mümkündür. Geli?tirici al??kanl?klar?na göre çe?itli kullan?m ?ekiller sunar. ??lem ba?ar?l?ysa true, de?ilse false yan?t? döndürülür.

auto_increment de?er(ler)i göndererek kay?t(lar?) silmek

Bu kullan?m ?eklinde, auto_increment özelli?i tan?mlanm?? bir sütunda belirtilen parametre(ler) aran?r ve bulunan kay?tlar silinir, tablo ad? ve parametre(ler) belirtmek zorunludur. 3'ncü parametrede belirtilen boolean türündeki de?er, parametrenin varl???na bakmaks?z?n silmeye zorlar. ??lem ba?ar?l?ysa true, de?ilse false yan?t? döndürülür.

Örnek

if($this->delete('users', 73)){
    // true
} else {
    // false
}

veya

if($this->delete('users', 66, true)){
    // true
} else {
    // false
}

veya

$query = $this->delete('users', array(74,75));

if($query){
    // true
} else {
    // false
}

veya

$query = $this->delete('users', array(76,77), true);

if($query){
    // true
} else {
    // false
}

Sütun ad? belirterek kay?t(lar?) silmek

Bu kullan?m ?eklinde, auto_increment özelli?i tan?mlanmayan bir sütunda parametre(ler) aran?r, bulunan kay?t(lar) silinir. Sütun ad?n? 3'ncü parametrede belirtmek gerekir. 4'ncü parametrede belirtilen boolean türündeki de?er, parametrenin varl???na bakmaks?z?n silmeye zorlar. ??lem ba?ar?l?ysa true, de?ilse false yan?t? döndürülür.

Örnek
$query = $this->delete('users', 'fikret', 'username');

if($query){
    // true
} else {
    // false
}

veya

$query = $this->delete('users', 'fikret', 'username', true);

if($query){
    // true
} else {
    // false
}

veya

$query = $this->delete('users', array('julide', 'Fatih'), 'username');

if($query){
    // true
} else {
    // false
}

veya

$query = $this->delete('users', array('julide', 'Fatih'), 'username', true);

if($query){
    // true
} else {
    // false
}

Ba?lant?l? kay?tlarla birlikte silmek

Söz konusu parametreyi ta??yan ba?ka tablo sütunlar? varsa bu tablo ve sütun isimlerinin belirtilmesi halinde, e?le?en ilintili kay?tlar?n silinmesi sa?lan?r. A?a??daki kullan?m ?ekline göre 4 ve 5'nci parametrede belirtilen boolean türündeki de?er, parametrenin varl???na bakmaks?z?n silmeye zorlar. ??lem ba?ar?l?ysa true, de?ilse false yan?t? döndürülür.

Örnek
$trigger = array('log'=>'user_id');
$query = $this->delete('users', 1, $trigger)

if($query){
    // true
} else {
    // false
}

veya

$trigger = array('log'=>'user_id');
$query = $this->delete('users', 1, $trigger, true);

if($query){
    // true
} else {
    // false
}

veya

$trigger = array('log'=>'user_id');
$query = $this->delete('users', array(2,3), $trigger);

if($query){
    // true
} else {
    // false
}

veya

$trigger = array('log'=>'user_id');
$query = $this->delete('users', array(4,5), $trigger, true);

if($query){
    // true
} else {
    // false
}

veya

$trigger = array('log'=>'username');
$query = $this->delete('users', 'Fatih', 'username', $trigger);

if($query){
    // true
} else {
    // false
}

veya

$trigger = array('log'=>'username');
$query = $this->delete('users', 'Fatih', 'username', $trigger, true);

if($query){
    // true
} else {
    // false
}    

veya

$trigger = array('log'=>'username');
$query = $this->delete('users', array('Fatih','aliyilmaz'), 'username', $trigger);

if($query){
    // true
} else {
    // false
}

veya

$trigger = array('log'=>'username');
$query = $this->delete('users', array('Fatih','aliyilmaz'), 'username', $trigger, true);

if($query){
    // true
} else {
    // false
}

getData()

Bir veritaban? tablosundaki kay?tlar? oldu?u gibi veya filtreleyerek elde etmek için kullan?l?r. my_table tablo ismini temsil etmektedir, $options parametreleri ve kullan?m örneklerine a?a??da yer verilmi?tir.

Tüm kay?tlara ula?mak

Bir veritaban? tablosunun tüm kay?tlar?n? elde etmek için kullan?l?r. Ek bir parametreye ihtiyaç duymadan kullanmak mümkündür, ancak bir kerede çok say?da veri elde etmek, sunucu ve kullan?c? taraf?nda bir yük olu?turarak proje performans?n? dü?ürebilir.

Örnek

$this->print_pre($this->getData('my_table'));

column: Tablo sütunlar?na ula?mak

Bir veritaban? tablosundaki belirtilen sütun verilerini elde etmek için kullan?l?r. Tüm sütun verilerini almad???ndan, daha hafif bir sorgulamaya izin verir. column, özelli?in ad?n?, title ve tag, sütun adlar?n? temsil eder.

Örnek
$options = array(
    'column' => array(
        'title',
        'tag'
    )
);
$this->print_pre($this->getData('my_table', $options));

veya

$options = array(
    'column' => 'title'
);
$this->print_pre($this->getData('my_table', $options));

limit: Kay?t aral???na ula?mak

Veritaban?ndaki kay?tlar? belirtilen limitlere göre elde etmek için kullan?l?r. limit, özelli?in ad?n?, start ve end alt özellik adlar?n? temsil eder. Kay?t aral???n? elde etmek için start ve end belirtilmelidir.

Örnek
$options = array(
    'limit' => array('start'=>'1', 'end'=>'10')
);
$this->print_pre($this->getData('my_table', $options));

limit:start Belirtilen miktarda ilk kayd? gözard? etmek

Veritaban? tablosunda bulunan kay?tlar?n ilk eklenenden son eklenene do?ru belirtilen say? kadar?n?n gözard? edilmesi amac?yla kullan?l?r. limit özelli?in ad?n?, start gözard? edilecek kay?t miktar?n? temsil etmektedir.

Örnek
$options = array(
    'limit' => array('start' => '2')
);
$this->print_pre($this->getData('my_table', $options));

limit:end Belirtilen miktar kadar kayda ula?mak

Veritaban? tablosunda, belirtilen say? kadar kayd? elde etmek amac?yla kullan?l?r. limit özelli?in ad?n?, end elde edilmek istenen kay?t miktar?n? temsil etmektedir.

Örnek
$options = array(
    'limit' => array('end' => '10')
);
$this->print_pre($this->getData('my_table', $options));

sort: Kay?tlar? s?ralamak

Veritaban? tablosundaki kay?tlar? belirtilen sütun içeri?ine göre küçükten büyü?e veya büyükten küçü?e do?ru s?ralamak amac?yla kullan?l?r. sort özelli?in ad?n?, columnname s?ralaman?n yap?laca?? sütun ad?n?, ASC küçükten büyü?e s?ralama talebini, DESC ise büyükten küçü?e do?ru s?ralama talebini temsil etmektedir.

Örnek
$options = array(
    'sort' => 'columnname:ASC'
);
$this->print_pre($this->getData('my_table', $options));

veya

$options = array(
    'sort' => 'columnname:DESC'
);
$this->print_pre($this->getData('my_table', $options));

search: Arama yapmak

Anahtar kelimeleri bir veritaban? tablosunda aramak için kullan?l?r. Anahtar kelimeler string veya array olarak gönderilebilir. search, özelli?in ad?n?, keyword aranan anahtar kelimeleri temsil eder.

Örnek
$options = array(
    'search' => array(
        'scope'=>'like',
        'keyword' => array(
            'hello world!',
            'merhaba dünya'
        )
    )
);
$this->print_pre($this->getData('my_table', $options));

veya

$options = array(
    'search' => array(
        'scope'=>'like',
        'keyword' => 'merhaba dünya'
    )
);
$this->print_pre($this->getData('my_table', $options));

search: Her yerde aramak

Veritaban? tablosundaki anahtar kelimeleri geni? e?lemeli olarak aramak için kullan?l?r. Kelimeler string veya array olarak gönderilebilir.

Kelime veya kelimeler, %kelime% biçiminde belirtilirse cümle içinde geçen kelime aran?r, e?er belirtilmezse sadece kelime de?eriyle birebir örtü?en kay?tlar aran?r.

Sonu kelimeyle biten içeri?i aramak için %kelime, ba?? kelimeyle ba?layan içeri?i aramak için ise kelime%?eklinde bir ifade kullanmak gerekir.

Örnek
$options = array(
    'search' => array(
        'scope'=>'like',
        'keyword' => array(
            '%hello world!%',
            '%merhaba dünya'
        )
    )
);
$this->print_pre($this->getData('my_table', $options));

veya

$options = array(
    'search' => array(
        'scope'=>'like',
        'keyword' => 'merhaba dünya%'
    )
);
$this->print_pre($this->getData('my_table', $options));

search:column Sütunlarda aramak

Bir veritaban? tablosunun belirtilen sütunlar?n? tam veya genel bir e?leme politikas? ile aramak için kullan?l?r, kelimeler ve sütunlar string veya array olarak gönderilebilir. column özellik ad?n?,id, title, content ve tag sütun adlar?n? temsil eder.

Örnek
$options = array(
    'search' => array(
        'scope'=>'like',
        'column' => array('id', 'title', 'content', 'tag'),
        'keyword' => array(
            'hello world!',
            'merhaba dünya'
        )
    )
);
$this->print_pre($this->getData('my_table', $options));

veya

$options = array(
    'search' => array(
        'scope'=>'like',
        'column' => 'title',
        'keyword' => array(
            'hello world!',
            'merhaba dünya'
        )
    )
);
$this->print_pre($this->getData('my_table', $options));

search:and Sütuna özel kelime aramak

Kayda ait birden çok sütunda yap?lan arama sonuçlar?n?n tümünde bulgu tespit edilmesi halinde, bunlar?n array olarak geri döndürülmesini sa?lar.

*Bilgi:* getData:column k?sm?nda sütun tan?mlama yap?lm??sa bu sütunlar?n içinde aranmas? istenen sütunlar?nda olmas? zorunludur.

Örnek
$params = array(
    'username' => 'admin', 
    'password' => 'root'
);
$options = array(
    'search' => array(
        'and' => $params
    )
);
$tblname = 'users';
$this->print_pre($this->getData($tblname, $options));

veya

$params = array(
    array(
        'username' => 'admin', 
        'password' => 'root'
    ),
    array(
        'username' => 'user', 
        'password' => 'password'
    )
);
$options = array(
    'search' => array(
        'and' => $params
    )
);
$tblname = 'users';
$this->print_pre($this->getData($tblname, $options));

search:or Sütuna özel kelime aramak

Kayda ait birden çok sütunda yap?lan arama sonuçlar?n?n herhangi birinde bulgu tespit edilmesi halinde, bunlar?n array olarak geri döndürülmesini sa?lar.

Örnek
$params = array(
    'username' => 'admin', 
    'password' => 'root'
);
$options = array(
    'search' => array(
        'or' => $params
    )
);
$tblname = 'users';
$this->print_pre($this->getData($tblname, $options));

veya

$params = array(
    array(
        'username' => 'admin', 
        'password' => 'root'
    ),
    array(
        'username' => 'user', 
        'password' => 'password'
    )
);
$options = array(
    'search' => array(
        'or' => $params
    )
);
$tblname = 'users';
$this->print_pre($this->getData($tblname, $options));

*Bilgi:* getData:column k?sm?nda sütun tan?mlama yap?lm??sa bu sütunlar?n içinde aranmas? istenen sütunlar?nda olmas? zorunludur.

search:delimiter Sütuna özel kelime dizisi ayrac?

Sütuna özel kelime aramak için kullan?lan search:and ve search:or yöntemlerinde kullan?lmas? amac?yla tasarlanm?? özelliktir.

Örne?in search:and alt özelli?ine çoklu dizi olarak bir ?ema gönderildi?ini varsayal?m, bu ?ema içinde yer alan her bir dizi kümesinin di?er karde? kümelerle aras?na konulmas? istenen ifade, delimiter özelli?inde belirtilir.

Örne?i daha iyi anlamak için, iki ki?i aras?ndaki yaz??malar?n elde edilmesi amac?yla yaz?lmas? icap eden ?emay? inceleyebilirsiniz.

$params = array(
    array(
        'sender_id' => '3', 
        'reciver_id' => '15'
    ),
    array(
        'sender_id' => '15', 
        'reciver_id' => '3'
    )
);

$options = array(
    'search' => array(
        'delimiter'=array(
            'and'=>'OR' //or, OR, and, AND
        ),
        'and' => $params
    )
);
$tblname = 'messages';
$this->print_pre($this->getData($tblname, $options));

search:scope Özelle?tirilebilen hassasiyet

Aramalar?n, büyük küçük harf fark duyarl?l??? olmadan yap?labilmesi için string olarak like veya LIKE parametresi belirtilmelidir. Bu yöntem tercih edildi?inde % gibi kapsam ifade eden i?aretler gönderilebilir. scope belirtilmez ise büyük küçük harf duyarl?l???n? gözeterek aramalar yap?l?r.

Bilgi: Bu özellik search:and, search:or, search:delimiter, search:keyword gibi tüm search alt özellikleriyle beraber kullan?labilir.

Örnek
$options = array(
    'search'=>array(
        'scope'=>'LIKE', // like veya LIKE
        'keyword'=>'%ali%'
    )
);

$this->print_pre($this->getData('users', $options));

veya

$options = array(
    'search'=>array(
        'keyword'=>'aliyilmaz'
    )
);

$this->print_pre($this->getData('users', $options));

join: Tablolar? e?itleme

Farkl? tablolarda bulunan sütunlar?n birbirleriyle e?lenerek sonuçlar?n elde edilmesini sa?lar, INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN e?leme türlerini desteklemekte olup küçük büyük harf duyarl?l??? bulunmamaktad?r. Kullan?m örne?i a?a??da bilgilerinize sunulmu?tur. name e?leme türünü, tables e?lenecek tablolar?, primary, referans tablosundaki sütun kar??l???n?, secondary söz konusu tablodaki sütun kar??l???n?, fields ise görüntülenmesi istenen sütun isimlerini temsil etmektedir. fields bo? b?rak?l?rsa tüm sütunlar görüntülenir.

Örnek

$options = [
    'join'=>[
        'name' => 'INNER JOIN',
        'tables'=>[
            'contents'=>[
                'primary'=>'id',
                'secondary'=>'user_id',
                'fields'=>[
                    'id',
                    'user_id',
                    'title',
                    'content',
                    'created_at',
                    'updated_at'
                ]
            ],
            'categories'=>[
                'primary'=>'id',
                'secondary'=>'user_id',
                'fields'=>[
                    'id',
                    'user_id',
                    'name',
                    'created_at',
                    'updated_at'
                ]
            ]
        ]
    ]
];
$this->print_pre($this->getData('users', $options));

format: Sonuçlar?n format?

Sonuç ç?kt? formatlar?n? belirlemek için kullan?l?r. ?u an için array format? d???nda json format?n? desteklemektedir.

Örnek
$options = array(
    'format' => 'json'
);
$this->print_pre($this->getData('my_table', $options));

Özelliklerin bir arada kullan?m?

getData() özelliklerinin bir ço?u birlikte kullan?labilir, bu tür kullan?mlar herhangi bir yük olu?turmad??? gibi yüksek performans gerektiren projeler için hayat kurtar?c? olabilirler.

Örnek
$options = array(
    'search' => array(
        'column' => array(
            'id',
            'title',
            'content',
            'tag'
        ),
        'keyword' => array(
            'merhaba',
            'hello'
        )
    ),
    'format' => 'json',
    'sort' => 'id:ASC',
    'limit' => array(
        'start' => '1',
        'end' => '5'
    ),
    'column' => array(
        'id',
        'title'
        )
);
$this->print_pre($this->getData('my_table', $options));

veya

$options = array(
    'search' => array(
        'and' => array(
            'username' => 'aliyilmaz',
            'password' => '123456'
        )
    ),
    'format' => 'json',
    'sort' => 'id:ASC',
    'limit' => array(
        'start' => '1',
        'end' => '5'
    ),
    'column' => array(
        'username'
        )
);
$this->print_pre($this->getData('users', $options));

veya

$options = array(
    'search' => array(
        'or' => array(
            'username' => 'aliyilmaz',
            'password' => '123456'
        )
    ),
    'format' =>'json',
    'sort' => 'id:ASC',
    'limit' => array(
        'start' => '1',
        'end' => '5'
    ),
    'column' => array(
        'username'
        )
);
$this->print_pre($this->getData('users', $options));

samantha()

Spike Jonze imzas? ta??yan Her filminde bulunan samantha karakterinden esinlenerek olu?turulmu?tur. Sütun adlar? ve o sütunlarda bak?lmas? istenen veriler belirtildi?inde, bulunan tüm veriler geri döndürülür. Bu i?lem s?ras?nda tüm veri kümelerinin hangi sütunlar? bar?nd?rmas? gerekti?i bilgisi, 3'ncü parametre ile belirlenebilir.

3 parametre al?r;

  • ?lki tablo ad?n?n string biçiminde tan?mlanabildi?i k?s?md?r ve belirtilmesi zorunludur.
  • ?kincisi çoklu ?art?n bir dizi içinde tan?mlanabildi?i k?s?md?r ve belirtilmesi zorunludur.
  • Üçüncüsü ise görüntülenmesi istenen sütunlar?n string veya dizi biçiminde tan?mlanabildi?i k?s?md?r ve belirtilmesi zorunlu de?ildir.
Örnek
// Array
// (
//     [0] => Array
//         (
//             [group_id] => 10
//         )
// )

$this->print_pre($this->samantha('permission', array('user_id'=>15), 'group_id'));

veya

// Array
// (
//     [0] => Array
//         (
//             [id] => 208
//             [group_id] => 10
//         )

// )
$this->print_pre($this->samantha('permission', array('user_id'=>15), array('id', 'group_id')));

veya

// Array
// (
//     [0] => Array
//         (
//             [id] => 208
//             [user_id] => 15
//             [group_id] => 10
//             [_token] => 
//             [status] => 
//             [created_at] => 
//             [updated_at] => 
//         )

// )

$this->print_pre($this->samantha('permission', array('user_id'=>15)));

theodore()

T?pk? samantha gibi, bu metot da Her filminde hayat bulmu? Theodore Twombly karakterinden esinlenerek olu?turulmu?tur. Kesin olarak bir adet oldu?u bilinen bir kayd? bir dizi olarak elde etmek amac?yla kullan?l?r.

3 parametre al?r;

  • ?lki tablo ad?n?n string biçiminde tan?mlanabildi?i k?s?md?r ve belirtilmesi zorunludur.
  • ?kincisi çoklu ?art?n bir dizi içinde tan?mlanabildi?i k?s?md?r ve belirtilmesi zorunludur.
  • Üçüncüsü ise görüntülenmesi istenen sütunlar?n string veya dizi biçiminde tan?mlanabildi?i k?s?md?r ve belirtilmesi zorunlu de?ildir.
Örnek
// Array
// (
//     [group_id] => 10
// )

$this->print_pre($this->theodore('permission', array('user_id'=>15), 'group_id'));

veya

// Array
// (
//     [id] => 208
//     [group_id] => 10
// )

$this->print_pre($this->theodore('permission', array('user_id'=>15), array('id', 'group_id')));

veya

// Array
// (
//     [id] => 208
//     [user_id] => 15
//     [group_id] => 10
//     [_token] => 
//     [status] => 
//     [created_at] => 
//     [updated_at] => 
// )

$this->print_pre($this->theodore('permission', array('user_id'=>15)));

amelia()

samantha ve theodore metotlar?nda oldu?u gibi amelia da Her filminden esinlenerek olu?turulmu?tur. Görevi sadece bir adet oldu?u bilinen bir kayd?n belirtilen sütun verisini elde etmek, ?artlar? sa?lamad???nda ise bo? bir yan?t döndürmektedir.

3 parametre al?r;

  • ?lki tablo ad?n?n string biçiminde tan?mlanabildi?i k?s?md?r ve belirtilmesi zorunludur.
  • ?kincisi çoklu ?art?n bir dizi içinde tan?mlanabildi?i k?s?md?r ve belirtilmesi zorunludur.
  • Üçüncüsü ise görüntülenmesi istenen sütunun string biçimde tan?mlanabildi?i k?s?md?r ve belirtilmesi zorunludur.
Örnek
// 208

$this->print_pre($this->amelia('permission', array('user_id'=>15), 'id'));

do_have()

Bir veya daha fazla verinin, tam e?le?me prensibiyle veritaban? tablosunda bulunup bulunmad???n? kontrol etmek amac?yla kullan?l?r.

Bu tür bir kontrolü, ayn? üye bilgileriyle tekrar kay?t olunmas?n? istemedi?imiz durumlarda veya Select box'dan gönderilen verilerin gerçekten select box'?n edindi?i kaynakla ayn?l???n? kontrol etmemiz gereken durumlarda kullan?r?z.

$tblname tablo ad?n?, $str veriyi, $column verinin olup olmad???na bak?lan sütunu temsil etmektedir, e?er $column de?i?keni bo? b?rak?l?rsa veri, tablo'nun tüm sütunlar?nda aran?r. $str string olarak belirtilebildi?i gibi, sütun ad?n? anahtar olarak kullanan bir dizi yap?s?yla da belirtilebilir.

Arama sonucunda e?le?en kay?t bulunursa yan?t olarak true de?eri döndürülür, bulunmazsa da false de?eri döndürülür.

Örnek
$tblname = 'users';
$str = 'aliyilmaz.work@gmail.com';
$column = 'email_address';
if($this->do_have($tblname, $str, $column)){
    echo 'Bu E-Posta adresi kullan?lmaktad?r';
} else {
    echo 'Bu E-Posta adresi kullan?lmamaktad?r.';
}

veya

$tblname = 'users';
$str = 'aliyilmaz.work@gmail.com';
if($this->do_have($tblname, $str)){
    echo 'Bu E-Posta adresi kullan?lmaktad?r';
} else {
    echo 'Bu E-Posta adresi kullan?lmamaktad?r.';
}

veya

if($this->do_have('users', 'aliyilmaz.work@gmail.com', 'email_address')){
    echo 'Bu E-Posta adresi kullan?lmaktad?r';
} else {
    echo 'Bu E-Posta adresi kullan?lmamaktad?r.';
}

veya

if($this->do_have('users', 'aliyilmaz.work@gmail.com')){
    echo 'Bu E-Posta adresi kullan?lmaktad?r';
} else {
    echo 'Bu E-Posta adresi kullan?lmamaktad?r.';
}

veya

if($this->do_have('users', array('email'=>'aliyilmaz.work@gmail.com'))){
    echo 'Bu E-Posta adresi kullan?lmaktad?r';
} else {
    echo 'Bu E-Posta adresi kullan?lmamaktad?r.';
}

getId()

Bir veritaban? tablosunda belirtilen ko?ullar? sa?layan ve sadece bir adet bulunan kayd?n auto_increment özelli?i tan?mlanm?? sütununda bulunan de?eri göstermeye yarar. $tblname tablo ad?n?, $needle ko?ullar? temsil etmektedir.

Örnek

$needle = array(
    'username'=>'burcu',
    'password'=>md5(123123)
);

echo $this->getId('users', $needle);

Bilgi: insert metotunun boolean türünde bir yan?t döndürüyor olmas?, amelia metotunun auto_increment özelli?i tan?mlanm?? sütunu kendili?inden hedeflememesi ve daha anlaml? isme sahip id temin edici bir metot ihtiyac? bu metotun olu?mas?n? sa?lam??t?r.

newId()

Bir veritaban? tablosuna eklenmesi planlanan kayda tahsis edilecek auto_increment de?erini göstermeye yarar. $tblname tablo ad?n? temsil etmektedir.

Örnek
$tblname  = 'users';
echo $this->newId($tblname);

increments()

Veritaban? tablosunda ki auto_increment görevine sahip sütun ad?n? göstermek amac?yla kullan?l?r. $tblname veritaban? tablo ad?n? temsil etmektedir.

Örnek

$tblname = 'users';
echo $this->increments($tblname);

tableInterpriter()

Mind ile olu?turulmu? veritaban? tablosunu, Mind'?n veritaban? tablosu olu?turma ?emas?na dönü?türen yorumlay?c? bir metotdur. Veritaban? tablo ad? string bir yap?da belirtilmelidir.

E?er görmezden gelinmesi istenen sütunlar varsa string veya array türünde belirtilmelidir. Söz konusu tablo olu?turucu ?ema, dizi yap?s?nda geri döndürülür. Bu metot'a ihtiyaç duyulmas?n?n nedeni, veritaban? tablolar?n?n yeniden olu?turma imaj?n?n üretilme ihtiyac?d?r.

Not: Veritaban? tablosu yoksa veya tablo bo? ise, bo? bir dizi yan?t olarak geri döndürülür.

kod:

$this->print_pre($this->tableInterpriter('users'));

ç?kt?:

Array
(
    [0] => id:increments@11
    [1] => username:string@255
    [2] => password:string@255
    [3] => description:medium
    [4] => address:large
    [5] => amount:decimal@10,0
    [6] => age:int@11
)

kod:

$this->print_pre($this->tableInterpriter('users', 'address'));

ç?kt?:

Array
(
    [0] => id:increments@11
    [1] => username:string@255
    [2] => password:string@255
    [3] => description:medium
    [4] => amount:decimal@10,0
    [5] => age:int@11
)

kod:

$this->print_pre($this->tableInterpriter('users', ['address', 'age']));

ç?kt?:

Array
(
    [0] => id:increments@11
    [1] => username:string@255
    [2] => password:string@255
    [3] => description:medium
    [4] => amount:decimal@10,0
)

backup()

Bir veya daha fazla veritaban?n? yedeklemek için kullan?l?r. ?ki parametre al?r, ilki veritaban? isimlerini temsil eder ve belirtilmesi zorunludur, bu isimler string ve array biçiminde gönderilebilir, ikinci parametre ise yede?in konumlanmas? istenen dizin yolunu temsil eder ve zorunlu de?ildir, bu yol string olarak belirtilmelidir.

Yedek JSON yap?s?ndad?r, taray?c? üzerinden bilgisayara kaydedilmek istenirse, ikinci parametre gönderilmez.

Örnek

$this->backup('mydb');

veya

$this->backup(array('mydb', 'trek'));

veya

$this->backup('mydb', 'restore/');

veya

$this->backup(array('mydb', 'trek'), './');

restore()

Bir veya daha fazla veritaban?n? yede?ini geri yüklemek için kullan?l?r. JSON dosyalar?na ait string veya array yap?s?ndaki yollar? temsil eden bir parametre al?r ve zorunludur.

Örnek


$this->restore('backup_2020_11_06_17_40_21.json');

veya

$this->restore(array('backup_2020_11_06_17_40_21.json', 'backup_2020_11_06_17_41_22.json'));

pagination()

Veritaban? tablosunda bulunan verileri sayfalamak amac?yla kullan?l?r.

prefix

Sayfa ön eki'ni temsil etmekte olup zorunlu de?ildir, varsay?lan olarak p belirtilmi?tir.

Rotas?z url yap?s?nda kullan?m?

pagination.php ad?nda bir dosya oldu?unu varsayal?m, bu dosyan?n tam yoluna ön eki dahil ederek ?u ?ekilde pagination.php?p veya ?u ?ekilde pagination.php?p=1 kullanarak ilk sayfa verilerini görüntülemi? oluruz.

Rotal? url yap?s?nda kullan?m?

Parametreli rota gerektiren bu kullan?m ?ekli, rotalar?n tan?mland??? dosyada rota users:p olarak tan?mland???nda adres sat?r?na users veya ?ekilde users/1 yaz?l?rsa ilk sayfa verilerini görüntülemi? oluruz.

limit

Her sayfada görüntülenmesi istenen kay?t adedini temsil etmekte olup zorunlu de?ildir, varsay?lan olarak 5 adet belirtilmi?tir.

search, column, format, sort

Bu kurallar hakk?nda daha fazla bilgi edinmek için, do?rudan getData metotuna göz atabilirsiniz.

Geriye dönen de?erlerin kullan?m amaçlar?

data anahtar? yard?m?yla elde edilen verilere ula??l?r, prefix anahtar? yard?m?yla adres ön ekine ula??l?r, limit anahtar?yla kaç adet verinin elde edildi?i bilgisine ula??l?r, totalPage anahtar? yard?m?yla toplam sayfa say?s?na ula??l?r ve page anahtar? yard?m?yla hangi sayfada oldu?u bilgisine ula??l?r.

Örnek

$data = $this->pagination('messages');

$this->print_pre($data['data']);

echo "\n";

$prefix = $data['prefix'];
for ($i=1; $i <= $data['totalPage']; $i++) { 

    echo "\n<a ";

    if($i == $this->post[$prefix] OR empty($this->post[$prefix])){ 
        echo 'class="pageSelected" ';
    }
    echo 'href="'.$this->base_url.'pagination.php?'.$prefix.'='.$i.'">'.$i.'</a>';
}

echo "\n\n";

veya

$options = array(
    'prefix'=>'page', // Default p
    'search'=>array(
        'scope'=>'like',
        'keyword'=>'%a%',
        'column'=>'text',
        'delimiter'=>array(
            'or'=>'AND'
        ),
        'or'=>array(
            array(
                'sender_id'=>1,
                'reciver_id'=>1
            ),
            array(
                'sender_id'=>3,
                'reciver_id'=>3
            )
        )
    ),
    'column'=>array('sender_id','reciver_id','text'), // array / string
    'limit'=>2, // Default 5
    'format'=>'json', // json 
    'sort'=>'id:asc' // asc / ASC / desc / DESC
);
$data = $this->pagination('messages', $options);

$this->print_pre($data['data']);

echo "\n";

$prefix = $data['prefix'];
for ($i=1; $i <= $data['totalPage']; $i++) { 

    echo "\n<a ";

    if($i == $this->post[$prefix] OR empty($this->post[$prefix])){ 
        echo 'class="pageSelected" ';
    }
    echo 'href="'.$this->base_url.'pagination.php?'.$prefix.'='.$i.'">'.$i.'</a>';
}

echo "\n\n";

translate()

Bu fonksiyon, veritaban? altyap?s?na dayanan çoklu çeviri deste?ini sa?lamay? amaçlar. Kullan?ma haz?r hale gelmesi için veritaban? tablosunun olu?turulmas? ve Mind'a tan?mlanmas? gerekir.

Veritaban? tablosunun tasarlanmas?

$scheme = array(
    'id:increments',
    'name:small',
    'text:small',
    'lang:small',
    'user_id:small',
    '_token:small',
    'status:string',
    'created_at:string',
    'updated_at:string'
);

Veritaban? tablosunun ve içeri?inin olu?turulmas?

if($this->tableCreate('translations', $scheme)){
    $data = array(
            array(
                "name" => "dashboard",
                "text" => "Dashboard",
                "lang" => "EN",
                "user_id" => 1,
                "_token" => $this->generateToken(),
                "status" => 1,
                "created_at" => $this->timestamp
            ),
            array(
                "name" => "profile-signout",
                "text" => "Sign out",
                "lang" => "EN",
                "user_id" => 1,
                "_token" => $this->generateToken(),
                "status" => 1,
                "created_at" => $this->timestamp
            ),
            array(
                "name" => "dashboard",
                "text" => "Ba?lang?ç",
                "lang" => "TR",
                "user_id" => 1,
                "_token" => $this->generateToken(),
                "status" => 1,
                "created_at" => $this->timestamp
            ),
            array(
                "name" => "profile-signout",
                "text" => "Oturumu kapat",
                "lang" => "TR",
                "user_id" => 1,
                "_token" => $this->generateToken(),
                "status" => 1,
                "created_at" => $this->timestamp
            )
        );
        
    $this->insert('translations', $data);
}

Çeviri kullan?m?

?ki parametre alan translate() metotunun ilk parametresi, çevirisi istenen kayd?n anahtar?n?n belirtildi?i k?s?md?r, ikinci parametresi ise Mind içinde bulunan languages() metotundaki k?saltmalardan birinin belirtildi?i k?s?md?r. ?kinci parametrenin belirtilme zorunlulu?u yoktur, e?er belirtilmez ise varsay?lan olarak tan?mlanan Dil k?saltmas?n?n çevirisini geri döndürür.

echo $this->translate('dashboard'); // Varsay?lan olarak TR belirtildi?i için Ba?lang?ç geri döndürülür.
echo '<br />';
echo $this->translate('dashboard', 'TR'); // Ba?lang?ç
echo '<br />';
echo $this->translate('dashboard', 'EN'); // Dashboard

Çeviri ayarlar?n?n Mind'a tan?mlanmas?

table tablo ad?n?, column dil k?saltmalar?n?n tutuldu?u sütun ad?n?, haystack çevirisi istenen kayd?n benzersiz isminin tutuldu?u sütun ad?n?, return geri döndürülmesi istenen verinin sütun ad?n? ve lang varsay?lan dilin k?saltmas?n?n tutuldu?u sütun ad?n? temsil eder.

Varsay?lan olarak a?a??daki tan?mlamalar yap?lm??t?r, e?er bu dökümanda belirtilen kullan?m yönergesinden ba?ka isimlendirmeler belirlemeyi dü?ünürseniz a?a??daki k?sm? Mind'? ça??r?rken ya da Mind.php dosyas? içinden güncellemeniz yeterlidir.

$conf = array(
    'translate'=>array(
        'table'                 =>  'translations',
        'column'                =>  'lang',
        'haystack'              =>  'name',
        'return'                =>  'text',
        'lang'                  =>  'TR'
    )
);

$Mind = new Mind($conf);

infinityTree()

Bu metot, menü ve kategori gibi ebeveynli içeri?i okunabilir ?ekilde görüntülenmeye yarar. ?lk parametrede ebeveynli içerikler(array), ikinci parametrede içerik tablosunun ebeveyn de?erlerini bar?nd?ran sütun ad?(string), üçüncü parametrede ebeveyni olan içeri?in anahtar ad?(string), dördüncü parametrede içeri?in e?lemesinde kullan?lacak (auto_increment de?erine sahip id sütunu gibi) sütun ad?(string), be?inci parametrede ebeveyn id'si(integer) belirtilebilir.

Örnek

$data = [
    [
        'id' => 33,
        'name' => 'Series',
        'parent' => null 
    ],
    [
        'id' => 34,
        'name' => 'First dragon',
        'parent' => 33
    ],
    [
        'id' => 36,
        'name' => 'Season 1',
        'parent' => 34
    ],
    [
        'id' => 38,
        'name' => '1-10',
        'parent' => 36
    ],
    [
        'id' => 39,
        'name' => 'Manga',
        'parent' => null
    ]
];

$this->print_pre($this->infinityTree($data));

veya

echo '<select>';
echo $this->selectTree($this->infinityTree($data));
echo '</select>';

selectTree()

Bu metot, menü ve kategori gibi ebeveynli içeri?i select elementi içinde okunabilir ?ekilde görüntülemeye yarar. ?lk parametrede ebeveynli içerikler(array), ikinci parametrede select içinde bulunan ve seçilmesi istenen içeri?in de?eri(string veya integer), üçüncü parametre ebeveynli içeri?in anahtar ad?(string), dördüncü parametre içeri?in value de?erine tan?mlanacak tablo sütun ad?, be?inci parametre aç?l?r menüde görünmesi istenen de?erin bulundu?u sütun ad?(string), alt?nc? parametre ebeveyn hiyerar?i seviyesini(integer) temsil eder.

Örnek

$data = [
    [
        'id' => 33,
        'name' => 'Series',
        'parent' => null,
        'children'=>[
            34=>[
                'id' => 34,
                'name' => 'First dragon',
                'parent' => 33,
                'children'=>[
                    36=>array(
                        'id' => 36,
                        'name' => 'Season 1',
                        'parent' => 34,
                        'children'=>[
                            38=>array(
                                'id' => 38,
                                'name' => '1-10',
                                'parent' => 36,
                                'children'=>[]
                            )
                        ]
                    )
                ]
            ]
        ]
    ],
    [
        'id' => 39,
        'name' => 'Manga',
        'parent' => null,
        'children'=>[]
    ]
];
?>

<select>
<?php echo $this->selectTree($data); ?>
</select>

<br>

<select>
<?php echo $this->selectTree($data, 36); ?>
</select>

is_db()

Bu fonksiyon veritaban?n?n varl???n? sorgulamak amac?yla kullan?r,mydb veritaban? ad?n? temsil etmektedir. Veritaban? ismi string olarak gönderilebilir. E?er veritaban? varsa true de?eri döndürülür, yoksa false de?eri döndürülür.

Örnek

if($this->is_db('mydb')){
    echo 'Veritaban? var';
} else {
    echo 'Veritaban? yok';
}

is_table()

Bu fonksiyon veritaban? tablosunun varl???n? sorgulamak amac?yla kullan?r, users veritaban? tablo ad?n? temsil etmektedir. Tablo ismi string olarak gönderilebilir. E?er söz konusu tablo varsa true de?eri döndürülür, yoksa false de?eri döndürülür.

Örnek

if($this->is_table('users')){
    echo 'Tablo var';
} else {
    echo 'Tablo yok';
}

is_column()

Bu fonksiyon veritaban? tablosunda belirtilen sütunun varl???n? sorgulamak amac?yla kullan?r, users tablo ad?n?, username sütun ad?n? temsil etmektedir. Sütun ismi string olarak gönderilebilir. E?er söz konusu sütun varsa true de?eri döndürülür, yoksa false de?eri döndürülür.

Örnek

if($this->is_column('users', 'username)){
    echo 'Tablo var';
} else {
    echo 'Tablo yok';
}

is_phone()

Bu fonksiyon kendisiyle payla??lan verinin geçerli bir telefon numaras? söz diziminde yaz?l?p yaz?lmad???n? kontrol etmek amac?yla kullan?l?r, telefon numaras? string olarak gönderilebilir. E?er söz konusu veri geçerli bir numaraysa yan?t olarak true de?eri döndürülür, de?ilse false de?eri döndürülür, $str kendisiyle payla??lan veriyi temsil etmektedir.

Örnek
$str = '05555555555';
if($this->is_phone($str)){
    echo 'Bu numara geçerli bir telefon numaras?d?r.';
} else {
    echo 'Bu numara geçerli bir telefon numaras? de?ildir.';
}

veya

$str = '0555 555 55 55';
if($this->is_phone($str)){
    echo 'Bu numara geçerli bir telefon numaras?d?r.';
} else {
    echo 'Bu numara geçerli bir telefon numaras? de?ildir.';
}

veya

$str = '+905555555555';
if($this->is_phone($str)){
    echo 'Bu numara geçerli bir telefon numaras?d?r.';
} else {
    echo 'Bu numara geçerli bir telefon numaras? de?ildir.';
}

veya

$str = '905555555555';
if($this->is_phone($str)){
    echo 'Bu numara geçerli bir telefon numaras?d?r.';
} else {
    echo 'Bu numara geçerli bir telefon numaras? de?ildir.';
}

is_date()

Bu fonksiyon kendisiyle payla??lan tarih biçiminin gerçek olup olmad???n? kontrol etmek amac?yla kullan?l?r, tarih ve format string olarak gönderilebilir. $date ve 01.02.1987 tarihi, $format ve d.m.Y tarihin hangi formatta kontrol edilmesi gerekti?i bilgisini temsil etmektedir. Format parametresinin belirtilmesi iste?e ba?l?d?r, belirtilmedi?inde tarih format?n?n varsay?lan olarak Y-m-d H:i:s oldu?u varsay?l?r. E?er tarih geçerliyse yan?t olarak true de?eri döndürülür, geçerli de?ilse false de?eri döndürülür.

Örnek

$date = '01.02.1987';
$format = 'd.m.Y';
if($this->is_date($date, $format)){
    echo 'Bu tarih bir do?um tarihidir';
} else {
    echo 'Bu tarih bir do?um tarihi de?ildir.';
}

veya

if($this->is_date('01.02.1987', 'd.m.Y')){
    echo 'Bu tarih bir do?um tarihidir';
} else {
    echo 'Bu tarih bir do?um tarihi de?ildir.';
}

is_email()

Bu fonksiyon kendisiyle payla??lan verinin e-mail adresi söz dizimine sahip olup olmad???n? kontrol etmek amac?yla kullan?l?r, veri string olarak gönderilebilir. E?er veri e-mail adresi söz dizimine sahip ise yan?t olarak true de?eri döndürülür, geçerli de?ilse false de?eri döndürülür.

Örnek
$str = 'aliyilmaz.work@gmail.com';
if($this->is_email($str)){
    echo 'Bu bir email adresidir.';
} else {
    echo 'Bu bir email adresi de?ildir.';
}

is_type()

Bu fonksiyon özellikle dosya yükleme i?lemleri s?ras?nda yüklenmek istenen dosyan?n format?n? kontrol etmek amac?yla kullan?l?r, Dosya ad? string olarak belirtilmelidir, Dosya uzant?lar? ise string veya array olarak belirtilebilir. $this->post['photo']['name'] dosya ad?n?, $list müsaade edilen dosya uzant?lar?n? temsil etmektedir. E?er dosya müsaade edilen uzant?ya sahip ise yan?t olarak true de?eri döndürülür, de?ilse false de?eri döndürülür.

Örnek

$list = 'jpg';
if($this->is_type($this->post['photo']['name'], $list)){
    echo 'Yüklemek istedi?iniz dosya müsaade edilen bir uzant?ya sahiptir.';
} else {
    echo 'Yüklemek istedi?iniz dosya müsaade edilen bir uzant?ya sahip de?ildir.';
}

veya

$list = array('jpg', 'jpeg', 'png', 'gif');
if($this->is_type($this->post['photo']['name'], $list)){
    echo 'Yüklemek istedi?iniz dosya müsaade edilen bir uzant?ya sahiptir.';
} else {
    echo 'Yüklemek istedi?iniz dosya müsaade edilen bir uzant?ya sahip de?ildir.';
}

is_size()

Bu fonksiyon, dosya dizisinde bulunan size de?erinin ya da string veya integer yap?s?nda belirtilen byte cinsinden de?erin kontrol edilmesi amac?yla kullan?l?r. ?lk parametre kontrol edilmesi istenen boyut bilgisini, ikici parametre ise kontrol edilmesi istenen boyutu temsil etmektedir. E?er dosya veya belirtilen de?er müsaade edilen boyutun alt?nda veya e?itse yan?t olarak true de?eri döndürülür, de?ilse false de?eri döndürülür. Daha iyi anlamak için a?a??daki örnekleri inceleyebilirsiniz.

Bilgi: Dosyalarla çal???rken php.ini ayarlar?nda bulunan upload_max_filesize parametresine en az $size de?i?keninde belirtilen miktar kadar boyutun belirtilmesi gereklidir.

Örnek

$second_size = '35 KB';
$this->post['photo'] = array(
    'size'=>35840
);
if($this->is_size($this->post['photo'], $second_size)){
    echo 'ilk boyut belirtilen ikinci boyuttan küçük veya e?ittir.';
} else {
    echo 'ilk boyut belirtilen ikinci boyuttan büyüktür.';
}

veya

$this->post['photo'] = array(
    'size'=>36700160
);
if($this->is_size($this->post['photo'], '35 MB')){
    echo 'ilk boyut belirtilen ikinci boyuttan küçük veya e?ittir.';
} else {
    echo 'ilk boyut belirtilen ikinci boyuttan büyüktür.';
}

veya

$this->post['photo'] = array(
    'size'=>37580963840
);
if($this->is_size($this->post['photo'], '35 GB')){
    echo 'ilk boyut belirtilen ikinci boyuttan küçük veya e?ittir.';
} else {
    echo 'ilk boyut belirtilen ikinci boyuttan büyüktür.';
}

veya

$this->post['photo'] = array(
    'size'=>1099511627776
);
if($this->is_size($this->post['photo'], '1 TB')){
    echo 'ilk boyut belirtilen ikinci boyuttan küçük veya e?ittir.';
} else {
    echo 'ilk boyut belirtilen ikinci boyuttan büyüktür.';
}

veya

$this->post['photo'] = array(
    'size'=>1125899906842624
);
if($this->is_size($this->post['photo'], '1 PB')){
    echo 'ilk boyut belirtilen ikinci boyuttan küçük veya e?ittir.';
} else {
    echo 'ilk boyut belirtilen ikinci boyuttan büyüktür.';
}

veya

$second_size = 35839;
$first_size = 35839;
if($this->is_size($first_size, $second_size)){
    echo 'De?er belirtilen boyuttan küçüktür';
} else {
    echo 'ilk boyut belirtilen ikinci boyuttan büyüktür.';
}

veya

$second_size = '35 KB';
$first_size = '35840';
if($this->is_size($first_size, $second_size)){
    echo 'ilk boyut belirtilen ikinci boyuttan küçük veya e?ittir.';
} else {
    echo 'ilk boyut belirtilen ikinci boyuttan büyüktür.';
}

veya

$second_size = '1024 KB';
$first_size = '1023 KB';
if($this->is_size($first_size, $second_size)){
    echo 'ilk boyut belirtilen ikinci boyuttan küçük veya e?ittir.';
} else {
    echo 'ilk boyut belirtilen ikinci boyuttan büyüktür.';
}

is_color()

Bu fonksiyon kendisiyle payla??lan de?erin geçerli bir renk olup olmad???n? kontrol etmeye yarar, e?er söz konusu de?er transparent veya tüm taray?c?lar ile uyumlu olan 148 renk isminden biriyse ya da HEX, RGB, RGBA, HSL, HSLA ise yan?t olarak true de?eri döndürülür, de?ilse false de?eri döndürülür. $color renk de?erini temsil etmektedir.

Örnek

TRANSPARENT

$color = 'transparent';
if($this->is_color($color)){
    echo 'Geçerli bir renk parametresidir.';
} else {
    echo 'Geçerli bir renk parametresi de?ildir.';
}

COLOR NAME

$color = 'AliceBlue';
if($this->is_color($color)){
    echo 'Geçerli bir renk parametresidir.';
} else {
    echo 'Geçerli bir renk parametresi de?ildir.';
}

HEX

$color = '#000000';
if($this->is_color($color)){
    echo 'Geçerli bir renk parametresidir.';
} else {
    echo 'Geçerli bir renk parametresi de?ildir.';
}

RGB

$color = 'rgb(10, 10, 20)';
if($this->is_color($color)){
    echo 'Geçerli bir renk parametresidir.';
} else {
    echo 'Geçerli bir renk parametresi de?ildir.';
}

RGBA

$color = 'rgba(100,100,100,0.9)';
if($this->is_color($color)){
    echo 'Geçerli bir renk parametresidir.';
} else {
    echo 'Geçerli bir renk parametresi de?ildir.';
}

HSL

$color = 'hsl(10,30%,40%)';
if($this->is_color($color)){
    echo 'Geçerli bir renk parametresidir.';
} else {
    echo 'Geçerli bir renk parametresi de?ildir.';
}

HSLA

$color = 'hsla(120, 60%, 70%, 0.3)';
if($this->is_color($color)){
    echo 'Geçerli bir renk parametresidir.';
} else {
    echo 'Geçerli bir renk parametresi de?ildir.';
}

is_url()

Kendisiyle payla??lan verinin bir ba?lant? olup olmad???n? kontrol etmek amac?yla kullan?l?r, $url ba?lant? verisini temsil etmekte olup string olarak belirtilmelidir. E?er söz konusu veri bir ba?lant?ysa true de?eri döndürülür, de?ilse false de?eri döndürülür.

Örnek

$str = 'http://localhost';
if($this->is_url($str)){
    echo 'Bu bir ba?lant?d?r.';
} else {
    echo 'Bu bir ba?lant? de?ildir.';
}

veya

$str = 'example.com';
if($this->is_url($str)){
    echo 'Bu bir ba?lant?d?r.';
} else {
    echo 'Bu bir ba?lant? de?ildir.';
}

veya

$str = 'www.example.com';
if($this->is_url($str)){
    echo 'Bu bir ba?lant?d?r.';
} else {
    echo 'Bu bir ba?lant? de?ildir.';
}

veya

$str = 'http://example.com/';
if($this->is_url($str)){
    echo 'Bu bir ba?lant?d?r.';
} else {
    echo 'Bu bir ba?lant? de?ildir.';
}

veya

$str = 'http://www.example.com/';
if($this->is_url($str)){
    echo 'Bu bir ba?lant?d?r.';
} else {
    echo 'Bu bir ba?lant? de?ildir.';
}

is_http()

Kendisiyle payla??lan string yap?daki verinin HTTP söz diziminde yaz?l?p yaz?lmad???n? kontrol etmek amac?yla kullan?l?r, E?er söz konusu veri bir HTTP söz dizimine sahip ise true de?eri döndürülür, de?ilse false de?eri döndürülür.

Örnek

$url = 'http://www.google.com/';
if($this->is_http($url)){
    echo 'Bu bir HTTP ba?lant?s?d?r.';
} else {
    echo 'Bu bir HTTP ba?lant?s? de?ildir.';
}

is_https()

Kendisiyle payla??lan string yap?daki verinin HTTPS sözdiziminde yaz?l?p yaz?lmad???n? kontrol etmek amac?yla kullan?l?r, E?er söz konusu veri bir HTTPS sözdizimine sahip ise true de?eri döndürülür, de?ilse false de?eri döndürülür.

Örnek

$url = 'http://www.google.com/';
if($this->is_http($url)){
    echo 'Bu bir HTTP ba?lant?s?d?r.';
} else {
    echo 'Bu bir HTTP ba?lant?s? de?ildir.';
}


is_json()

Kendisiyle payla??lan string türde ki verinin json format?nda olup olmad???n? kontrol etmek amac?yla kullan?l?r, $schema json verisini temsil etmektedir. E?er söz konusu veri bir json sözdizimine sahip ise true de?eri döndürülür, de?ilse false de?eri döndürülür.

Örnek

$schema = array(
    'test'=>'ali'
);

if($this->is_json(json_encode($schema))){
    echo 'Bu bir json sözdizimidir.';
} else {
    echo 'Bu bir json sözdizimi de?ildir.';
}


    

is_age()

Ya? s?n?rlamas?na ihtiyaç duyulan yerlerde kullan?l?r. Kendisiyle payla??lan do?um tarihini mevcut tarihten ç?kar?r, elde edilen sonuç e?er belirtilen ya? ile ayn? veya o ya?tan büyük ise true yan?t? döndürülür, de?ilse false yan?t? döndürülür.

3 parametre al?r ve ilk ikisi zorunludur. ilk parametre, Y?l-Ay-Gün söz diziminde belirtilen tarih parametresidir, ikincisi minumum veya maksimum ya? s?n?r? parametresidir, üçüncüsü ise s?n?rlaman?n minumum (min) veya maksimum (max) türde olup olmad???n? ifade eden parametredir. 3'ncü parametre varsay?lan olarak minumum(min) olarak belirtilmi?tir.

Örnek

if($this->is_age('1987-03-17', 35)){
    echo 'Ya? uygun.';
} else {
    echo 'Ya? uygun de?il.';
}

veya

if($this->is_age('1987-03-17', 32)){
    echo 'Ya? uygun.';
} else {
    echo 'Ya? uygun de?il.';
}

veya

if($this->is_age('1987-03-17', 35, 'min')){
    echo 'Ya? uygun.';
} else {
    echo 'Ya? uygun de?il.';
}

veya

if($this->is_age('1987-03-17', 32, 'max')){
    echo 'Ya? uygun.';
} else {
    echo 'Ya? uygun de?il.';
}

    


is_iban()

Kendisiyle payla??lan de?erin geçerli bir IBAN numaras? olup olmad???n? kontrol etmek amac?yla kullan?l?r. E?er de?er bir IBAN numaras? söz dizimine sahipse true yan?t? döndürülür, de?ilse false yan?t? döndürülür.

Örnek

if($this->is_iban('SE35 500 0000 0549 1000 0003')){
    echo 'Bu bir IBAN numaras?d?r.';
} else {
    echo 'Bu bir IBAN numaras? de?ildir.';
}

is_ipv4()

Kendisiyle payla??lan de?erin ipv4 söz diziminde olup olmad???n? kontrol etmek için kullan?l?r. E?er de?er ipv4 söz diziminde ise true yan?t? döndürülür, de?ilse false yan?t? döndürülür.

Örnek

echo '<br>';
if($this->is_ipv4('208.111.171.236')){
    echo 'Bu bir ipv4 adresdir.';
} else {
    echo 'Bu bir ipv4 adres de?ildir.';
}
    

veya

echo'<br>';
if($this->is_ipv4('256.111.171.236')){
    echo 'Bu bir ipv4 adresdir.';
} else {
    echo 'Bu bir ipv4 adres de?ildir.';
}

is_ipv6()

Kendisiyle payla??lan de?erin ipv6 söz diziminde olup olmad???n? kontrol etmek için kullan?l?r. E?er de?er ipv6 söz diziminde ise true yan?t? döndürülür, de?ilse false yan?t? döndürülür.

Örnek

echo '<br>';
if($this->is_ipv6('2001:0db8:85a3:08d3:1319:8a2e:0370:7334')){
    echo 'Bu bir ipv6 adresdir.';
} else {
    echo 'Bu bir ipv6 adres de?ildir.';
}
    

veya

echo'<br>';
if($this->is_ipv6('2001:0db8:85a3:08d3:1319:8a2e:0370:7334dsdsd')){
    echo 'Bu bir ipv6 adresdir.';
} else {
    echo 'Bu bir ipv6 adres de?ildir.';
}

is_blood()

Kendisiyle payla??lan de?erin bir kan grubu olup olmad???n? kontrol etmek için kullan?ld??? gibi bir kan grubunun ba?ka bir kan grubu için uygun donör olup olmad???n? kontrol etmek amac?yla da kullan?l?r.

?ki parametre al?r, ilk parametre zorunludur, ?kinci parametre zorunlu de?ildir. Sadece ilk parametre belirtilirse o kan grubunun geçerlili?i kontrol edilir. ?kinci parametre de belirtilirse, ikincisinin ilk kan grubu için uygun donör olup olmad??? kontrol edilir.

E?er geçerli bir kan grubu belirtilmi? ise ya da uyumlu kan gruplar? belirtilmi? ise true yan?t? döndürülür, aksi halde false yan?t? döndürülür.

Örnek

echo '<br>';

if($this->is_blood('0+')){
    echo 'Evet, bu bir kan grubudur.';
} else {
    echo 'Hay?r, bu bir kan grubu de?ildir.';
}

veya

echo '<br>';

if($this->is_blood('0+', '0+')){
    echo 'Evet, bu uyumlu bir kan grubudur.';
} else {
    echo 'Hay?r, bu uyumsuz bir kan grubudur.';
}

is_latitude()

Kendisiyle payla??lan float, int ya da string yap?daki verinin geçerli bir enlem bilgisi olup olmad???n? kontrol etmek amac?yla kullan?l?r. E?er kendisiyle payla??lan veri geçerli bir enlem bilgisiyse true yan?t? döndürülür, de?ilse false yan?t? döndürülür.

Örnek

$latitude = 41.008610;
if($this->is_latitude($latitude)){
    echo 'Geçerli enlem.';
} else {
    echo 'Geçersiz enlem.';
}

is_longitude()

Kendisiyle payla??lan float, int ya da string yap?daki verinin geçerli bir boylam bilgisi olup olmad???n? kontrol etmek amac?yla kullan?l?r. E?er kendisiyle payla??lan veri geçerli bir boylam bilgisiyse true yan?t? döndürülür, de?ilse false yan?t? döndürülür.

$longitude = 28.971111;
if($this->is_longitude($longitude)){
    echo 'Geçerli boylam.';
} else {
    echo 'Geçersiz boylam.';
}

is_coordinate()

Kendisiyle payla??lan koordinat?n geçerlili?ini kontrol etmek amac?yla kullan?l?r. float, int ya da string yap?da iki parametre al?r, bunlar enlem ve boylam bilgisidir ve her ikisinin belirtilmesi zorunludur.

Örnek

$point1 = array(
    'lat' => 41.008610, 
    'long' => 28.971111
);
    
if($this->is_coordinate($point1['lat'], $point1['long'])){
    echo 'Geçerli koordinat.';
} else {
    echo 'Geçersiz koordinat.';
}

veya

$point2 = array(
    'lat' => 39.925018, 
    'long' => 32.836956
);
        
if($this->is_coordinate($point2['lat'], $point2['long'])){
    echo 'Geçerli koordinat.';
} else {
    echo 'Geçersiz koordinat.';
}

is_distance()

Bir koordinat noktas? için, ba?ka bir koordinat noktas?n?n belirtilen menzil içinde kal?p kalmad???n? sorgulamak amac?yla kullan?l?r.

3 parametre al?r, ilk iki parametre iki farkl? koordinat noktas?n?, 3'ncüsü ise menzil ve mesafe ölçü birimini temsil eder.

3'ncü parametre iki nokta üst üste : i?areti ile ikiye ayr?l?r, ilki menzil ikincisi mesafe ölçü birimini temsil eder. (örne?in: 300:m )

ilk iki parametrede bulunan koordinat verileri array olarak, menzil ve menzil ölçü birimini temsil eden 3'ncü parametre ise string olarak belirtilmelidir.

array olarak belirtilen koordinat bilgisi enlem,boylam söz diziminde, float, string ya da int türünde belirtilmelidir.

E?er menzil içinde bir mesafe söz konusuysa true yan?t? döndürülür, de?ilse false yan?t? döndürülür.

Bilgi:

Ölçü birimleri ve k?saltmalar? a?a??daki gibidir.

  • m (Metre)
  • km (Kilometre)
  • mi (Mil)
  • ft (Feet)
  • yd (Yard)
KOORD?NATLAR

$point1 = array(41.008610,28.971111); 
$point2 = array(39.925018,32.836956); 

Örnek

if($this->is_distance($point1, $point2, '349:km')){
    echo 'Menzil içindedir.';
} else {
    echo 'Menzil içinde de?ildir.';
}

veya

if($this->is_distance($point1, $point2, '347:km')){
    echo 'Menzil içindedir.';
} else {
    echo 'Menzil içinde de?ildir.';
}

is_md5()

Kendisiyle payla??lan verinin kriptografik özet söz diziminde olup olmad???n? kontrol etmek amac?yla kullan?l?r. Söz konusu veri string olarak belirtilmelidir. E?er veri bir md5 ise true de?ilse false yan?t? geri döndürülür.

Örnek

$str = '123456';

if($this->is_md5($str)){
    echo 'Bu bir md5.';
} else {
    echo 'Bu bir md5 de?il.';
}

veya

$str = md5('123456');

if($this->is_md5($str)){
    echo 'Bu bir md5.';
} else {
    echo 'Bu bir md5 de?il.';
}

is_ssl()

Bu fonksiyon, projeye ait SSL Sertifikas?n?n varl???n? sorgulamak amac?yla kullan?l?r. E?er SSL ba?lant?s? etkinse true de?ilse false yan?t? döndürülür.

Örnek

if($this->is_ssl($str)){
    echo 'SSL ba?lant?s? var.';
} else {
    echo 'SSL ba?lant?s? yok.';
}

is_htmlspecialchars()

Bu fonksiyon kendisiyle payla??lan verinin HTML özel karakterleri içerip içermedi?ini kontrol etmeye yarar. Veri string türünde belirtilmelidir. E?er HTML özel karakterleri içeriyorsa true de?ilse false yan?t? döndürülür.

Örnek

$code = 'merhaba &lt;?=$this-&gt;timestamp;?&gt;';

if($this->is_htmlspecialchars($code)){
    echo 'HTML özel karakterleri içeriyor.';
} else {
    echo 'HTML özel karakterleri içermiyor.';
}

is_morse()

Bu fonksiyon, kendisiyle payla??lan verinin morsealphabet() metotunda ki karakterlerle olu?turulmu? bir mors kodu olup olmad???n? kontrol etmeye yarar. Veri string türünde belirtilmelidir. E?er mors kodu ise true de?ilse false yan?t? döndürülür.

Örnek

$data = '-- ..- ... - .- ..-. .- / -.- . -- .- .-.. / .- - .- - ..-- .-. -.- / --.-. ..-- .--.. -.-.. ---.';
if($this->is_morse($data)){
    echo 'Mors kodudur. ( '.$this->morse_decode($data).' )';
} else {
    echo 'Mors kodu de?ildir.';
}

veya

$data = '.';
if(!$this->is_morse($data)){
    echo 'Mors kodu de?ildir.';
}  else {
    echo 'Mors kodudur. ( '.$this->morse_decode($data).' )';
}

veya

$data = 'p';
if(!$this->is_morse($data)){
    echo 'Mors kodu de?ildir.';
} else {
    echo 'Mors kodudur. ( '.$this->morse_decode($data).' )';
}

is_binary()

Belirtilen parametrenin bir Binary kodu olup olmad???n? kontrol etmeye yarar.

Örnek

$data = '1000001 1101100 1101001 100000 1011001 11000100 10110001 1101100 1101101 1100001 1111010';
if($this->is_binary($data)){
    echo 'Binary kodudur.';
} else {
    echo 'Binary kodu de?ildir.';
}

is_timecode()

Belirtilen parametrenin bir zaman kodu olup olmad???n? kontrol etmeye yarar.

Örnek

if($this->is_timecode('59:00:00')){
    echo 'true';
}

is_browser()

Belirtilen taray?c? ad?n?n, belirtilen taray?c? isimleri içinde olup olmad???n? kontrol etmek amac?yla kullan?l?r. ?ki parametre al?r.

Sadece ilk parametre belirtilirse, belirtilen taray?c? ad?n?n getBrowser() metodunda desteklenen taray?c? adlar?ndan biri olup olmad??? kontrol edilir.

E?er her iki parametre belirtilirse, birinci parametrenin ikinci parametrede string veya array türünde belirtilen taray?c? isimlerinden biri olup olmad?na bak?l?r.

E?le?me durumunda true, aksi durumda ise false yan?t? döndürülür. ikinci parametrede belirtilen taray?c? adlar? büyük küçük harf duyarl?l???na sahiptir ve getBrowser() metodunda desteklenen taray?c? adlar?n? dikkate alarak çal???r.

Örnek


if($this->is_browser($this->getBrowser())){
    echo 'TRUE';
} else {
    echo 'FALSE';
}


echo '<br>';

if($this->is_browser($this->getBrowser(), ['Firefox', 'Chrome'])){
    echo 'TRUE';
} else {
    echo 'FALSE';
}


echo '<br>';

if($this->is_browser('Firefox', ['Firefox', 'Chrome'])){
    echo 'TRUE';
} else {
    echo 'FALSE';
}

echo '<br>';

if($this->is_browser('Edge', ['Firefox', 'Chrome', 'Edge', 'Safari', 'Opera'])){
    echo 'TRUE';
} else {
    echo 'FALSE';
}

is_decimal()

Kendisiyle payla??lan string veya integer türündeki bir verinin ondal?k bir say? olup olmad???n? kontrol etmeye yarar. E?er söz konusu veri ondal?k bir say? ise true, de?ilse false yan?t? geri döndürülür.

Örnek

if($this->is_decimal(1.2)){
    echo '1.2 ondal?k bir say?d?r';
}else{
    echo '1.2 ondal?k bir say? de?ildir';
}

veya

if($this->is_decimal('1.2')){
    echo '1.2 ondal?k bir say?d?r';
}else{
    echo '1.2 ondal?k bir say? de?ildir';
}

veya

if($this->is_decimal('1')){
    echo '1 ondal?k bir say?d?r';
}else{
    echo '1 ondal?k bir say? de?ildir';
}

veya

if($this->is_decimal(1)){
    echo '1 ondal?k bir say?d?r';
}else{
    echo '1 ondal?k bir say? de?ildir';
}

is_isbn()

Kendisiyle payla??lan string türündeki bir verinin geçerli bir ISBN numaras? olup olmad???n? kontrol etmeye yarar. E?er söz konusu veri ISBN numaras? ise true, de?ilse false yan?t? geri döndürülür. Belirtilen verinin, ISBN-13 veya ISBN-10 versiyonuna göre de?erlendirilmesi için ikinci parametre 13 veya 10 olarak belirtilmelidir.

Örnek

var_dump($this->is_isbn('ISBN:0-306-40615-2'));     // return 1
var_dump($this->is_isbn('0-306-40615-2'));          // return 1
var_dump($this->is_isbn('ISBN:0306406152'));        // return 1
var_dump($this->is_isbn('0306406152'));             // return 1
var_dump($this->is_isbn('ISBN:979-1-090-63607-1')); // return 2
var_dump($this->is_isbn('979-1-090-63607-1'));      // return 2
var_dump($this->is_isbn('ISBN:9791090636071'));     // return 2
var_dump($this->is_isbn('9791090636071'));          // return 2
var_dump($this->is_isbn('ISBN:97811'));             // return false

timecodeCompare()

?ki zaman damgas?n? kar??la?t?rmak amac?yla kullan?l?r, ilk parametre ikincisine e?it veya küçük ise true de?ilse false yan?t? geri döndürülür.

$duration = '02:02:00';
$timecode = '02:02:02';
if($this->timecodeCompare($duration, $timecode)){
    echo 'küçük veya e?it';
}else{
    echo 'büyük';
}

validate()

Farkl? türdeki verilerin belirtilen kurallara uygunlu?unu tek seferde kontrol etmek amac?yla kullan?l?r. Kurallar? ihlal eden veriler varsa ve hata mesaj? belirtilmi?se $this->errors dizi de?i?kenine hata mesajlar? tan?mlan?r, hata mesaj? belirtilmemi?se verilerin dizi anahtarlar? $this->errors dizi de?i?kenine tan?mlan?r ve false yan?t? döndürülür. Herhangi bir kural ihlali yok ise true yan?t? döndürülür.

?stisnai olarak, özel veri tipine ihtiyaç duyan kurallarda uygunsuz veri tipi tespit edilmesi halinde, bir hata mesaj? belirtilip belirtilmedi?ine bak?lmaks?z?n bu durumu ifade eden bir hata mesaj? $this->errors dizi de?i?kenine tan?mlanarak false yan?t? döndürülür.

Her anahtar ad?na birden çok kural tan?mlamak için kurallar | sembolü yard?m?yla ayr?lmal?d?r. Parametrelerde bulunan veri anahtarlar?n?n e?le?mesi gerekmektedir.

Örnek

//  Veri
$data = array(
    'username'          =>  'aliyilmaz',
    'title'             =>  'Merhaba dünya1',
    'email'             =>  'aliyilmaz.work@gmail.com',
    'phone_number'      =>  '05554248988',
    'background_color'  =>  '#ffffff',
    'webpage'           =>  'http://google.com',
    'https_webpage'     =>  'https://google.com',
    'http_webpage'      =>  'http://google.com',
    'json_data'         =>  '{ "name":"John", "age":30, "car":null }',
    'content'           =>  'merhaba',
    'summary'           =>  'merhab',
    'quentity'          =>  '4',
    'numeric_str'       =>  12,
    'birthday'          =>  '1987-02-14',
    'register_date'     =>  '2020-02-18 14:34:22',
    'status'            =>  1,
    'ibanNumber'        =>  'SE35 5000 0000 0549 1000 0003',
    'ipv4Address'       =>  '127.0.0.1',
    'ipv6Address'       =>  '2001:0db8:85a3:08d3:1319:8a2e:0370:7334',
    'bloodGroup'        =>  '0+',
    'coordinates'       =>  '41.008610,28.971111',
    'distances'         =>  '41.008610,28.971111@39.925018,32.836956',
    'language'          =>  'TR',
    'morse_code'        =>  '.- .-.. .-..- / -.-- .. .-.. -- .- --..', // ali y?lmaz
    'binary_code'       =>  '1000001 1101100 1101001 100000 1011001 11000100 10110001 1101100 1101101 1100001 1111010', // Ali Y?lmaz
    'timecode'          =>  '59:59:59',
    'product_currency'  =>  'USD',
    'product_price'     =>  '10.00',
    'book_isbn'         =>  'ISBN:0-306-40615-2



);

// Kural
$rule = array(
    'username'          =>  'available:users',
    // 'username'          =>  'knownunique:users:username:aliyilmaz'
    // 'username'          =>  'knownunique:users:aliyilmaz'
    'title'             =>  'required|unique:posts',
    'email'             =>  'email|unique:users',
    'phone_number'      =>  'phone',
    'background_color'  =>  'color',
    'webpage'           =>  'url',
    'https_webpage'     =>  'https',
    'http_webpage'      =>  'http',
    'json_data'         =>  'json',
    'content'           =>  'max-char:7',
    'summary'           =>  'min-char:6|max-char:10',
    'quentity'          =>  'min-num:2|max-num:4',
    'numeric_str'       =>  'numeric',
    'birthday'          =>  'min-age:33|max-age:40',
    'register_date'     =>  'date:Y-m-d H:i:s',
    'status'            =>  'bool:true',
    'ibanNumber'        =>  'iban',
    'ipv4Address'       =>  'ipv4',
    'ipv6Address'       =>  'ipv6',
    'bloodGroup'        =>  'blood:0+',
    'coordinates'       =>  'required|coordinate',
    'distances'         =>  'distance:349 km',
    'language'          =>  'languages',
    'morse_code'        =>  'morse',
    'binary_code'       =>  'binary',
    'timecode'          =>  'timecode',
    'product_currency'  =>  'currencies',
    'product_price'     =>  'decimal',
    'book_isbn'         =>  'isbn'
);


// Mesaj
$message = array(
    'username'=>array(
        'available'=>'Bu kullan?c? ad? bulunmamaktad?r'
    ),
    'title'=>  array(
        'required'=>'Bo? b?rak?lmamal?d?r.',
        'unique'=>'Benzersiz bir kay?t belirtilmelidir.'
    ),
    'email'=>array(
        'email'=>'Geçerli bir e-mail adresi belirtilmelidir.',
        'unique'=>'Benzersiz bir kay?t belirtilmelidir.'
    ),
    'phone_number'=>array(
        'phone'=>'Geçerli bir telefon numaras? belirtilmelidir.'
    ),
    'background_color'=>array(
        'color'=>'Geçerli bir renk belirtilmelidir.'
    ),
    'webpage'=>array(
        'url'=>'Geçerli bir URL belirtilmelidir.'
    ),
    'https_webpage'=>array(
        'https'=>'Geçerli bir https adresi belirtilmelidir.'
    ),
    'http_webpage'=>array(
        'http'=>'Geçerli bir http adresi belirtilmelidir.'
    ),
    'json_data'=>array(
        'json'=>'Geçerli bir json verisi belirtilmelidir.'
    ),
    'content'=>array(
        'max-char'=>'Maksimum karakter limiti a??lmamal?d?r.'
    ),
    'summary'=>array(
        'min-char'=>'Minumum karakter limiti belirtilmelidir.',
        'max-char'=>'Maksimum karakter limiti a??lmamal?d?r.'
    ),
    'quentity'=>array(
        'min-num'=>'Minumum say? belirtilmelidir.',
        'max-num'=>'Maksimum say? a??lmamal?d?r.'
    ),
    'numeric_str'=>array(
        'numeric'=>'Numerik karakter belirtilmelidir.'
    ),
    'birthday'=>array(
        'min-age'=>'Minumum ya?tan küçük bir ya? belirtilmelidir.',
        'max-age'=>'Maksimum ya?tan büyük bir ya? belirtilmelidir.'
    ),
    'register_date'=>array(
        'date'=>'Y?l-Ay-Gün biçiminde tarih belirtilmelidir.'
    ),
    'status'=>array(
        'bool'=>'Do?rulama ba?ar?s?z.'
    ),
    'ibanNumber'=>array(
        'iban'=>'IBAN hesab? do?rulanamad?.'
    ),
    'ipv4Address'=>array(
        'ipv4'=>'ipv4 söz diziminde bir IP adresi belirtilmelidir.'
    ),
    'ipv6Address'=>array(
        'ipv6'=>'ipv6 söz diziminde bir IP adresi belirtilmelidir.'
    ),
    'bloodGroup'=>array(
        'blood'=>'Talimatlara göre kan grubu belirtilmelidir.'
    ),
    'coordinates'=>array(
        'coordinate'=>'Geçerli bir koordinat belirtilmelidir.'
    ),
    'distances'=>array(
        'distance'=>'Menzil içinde bulunan koordinat noktas? belirtilmelidir.'
    ),
    'language'=>array(
        'languages'=>'Dil seçimi yap?lmal?d?r.'
    ),
    'morse_code'=>array(
        'morse'=>'Geçerli bir mors kodu belirtilmelidir.'
    ),
    'binary_code'=>array(
        'binary'=>'Geçerli bir binary kodu belirtilmelidir.'
    ),
    'timecode'=>array(
        'timecode'=>'Geçerli bir zaman kodu belirtilmelidir.'
    ),
    'product_currency'=>array(
        'currencies'=>'Geçerli bir para birimi kodu belirtilmelidir.'
    ),
    'product_price'=>array(
        'decimal'=>'Geçerli bir ondal?k say? belirtilmelidir.'
    ),
    'book_isbn'=>array(
        'isbn'=>'Geçerli bir ISBN numaras? belirtilmelidir.'
    )

);

if($this->validate($rule, $data, $message)){
    echo 'Her ?ey yolunda!';
} else {
    $this->print_pre($this->errors);

}

Kurallar

min-num

Minumum belirtilmesi arzu edilen say? miktar?n? ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duyar ve bu parametre integer bir de?er olmak zorundad?r, bu de?erin t?rnak i?aretleri aras?nda ya da oldu?u gibi yaz?lmas? bu kural?n do?ru çal??mas?n? engellemez.

min-num:5

max-num

Maksimum belirtilmesi arzu edilen say? miktar?n? ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duyar ve bu parametre integer bir de?er olmak zorundad?r, bu de?erin t?rnak i?aretleri aras?nda ya da oldu?u gibi yaz?lmas? bu kural?n do?ru çal??mas?n? engellemez.

max-num:10

min-char

Verinin karakter uzunlu?unun minumum belirtilen say? kadar olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duyar ve bu parametre integer bir de?er olmak zorundad?r, bu de?erin t?rnak i?aretleri aras?nda ya da oldu?u gibi yaz?lmas? bu kural?n do?ru çal??mas?n? engellemez.

min-char:200

max-char

Verinin karakter uzunlu?unun maksimum belirtilen say? kadar olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duyar ve bu parametre integer bir de?er olmak zorundad?r, bu de?erin t?rnak i?aretleri aras?nda ya da oldu?u gibi yaz?lmas? bu kural?n do?ru çal??mas?n? engellemez.

max-char:500

email

Verinin bir e-email adresi olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duymad???ndan email yazarak kullan?labilir.

email

required

Veri belirtilmenin zorunlu oldu?unu ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duymad???ndan required yazarak kullan?labilir.

required

phone

Verinin bir telefon numaras? olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duymad???ndan phone yazarak kullan?labilir.

phone

date

Verinin geçerli bir zaman bilgisi olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametre belirtilmeden kullan?ld???nda Y-m-d biçimini referans alarak veriyi kontrol eder, e?er zaman bilgisinin belirtilen formatta kontrol edilmesi arzu edilirse, kabul edilebilir zaman format? belirtilmelidir.

// 2020-02-18
date:Y-m-d  

veya

// 2020-02-18 14
date:Y-m-d H 

veya

// 2020-02-18 14:34
date:Y-m-d H:i 

veya

// 2020-02-18 14:34:22
date:Y-m-d H:i:s 

gibi.

json

Veri format?n?n JSON söz diziminde oldu?unu ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duymad???ndan json yazarak kullan?labilir.

json

color

Belirtilen de?erin HEX, RGB, RGBA, HSL, HSLA veya 148 güvenli renkten biri olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duymad???ndan color yazarak kullan?labilir.

color

url

Belirtilen parametrenin geçerli bir ba?lant? olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duymad???ndan url yazarak kullan?labilir.

url

https

Belirtilen parametrenin SSL ba?lant?s? olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duymad???ndan https yazarak kullan?labilir.

https

http

Belirtilen parametrenin HTTP ba?lant?s? olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duymad???ndan http yazarak kullan?labilir.

http

numeric

Belirtilen verinin rakam olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duymad???ndan numeric yazarak kullan?labilir.

numeric

min-age

Belirtilen do?um tarihine sahip kimsenin yine belirtilen ya? ya da üstü bir ya?ta olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duyar ve bu parametre integer bir de?er olmak zorundad?r, bu de?erin t?rnak i?aretleri aras?nda ya da oldu?u gibi yaz?lmas? bu kural?n do?ru çal??mas?n? engellemez.

min-age:18

max-age

Belirtilen do?um tarihine sahip kimsenin yine belirtilen ya? ya da alt?nda bir ya?ta olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duyar ve bu parametre integer bir de?er olmak zorundad?r, bu de?erin t?rnak i?aretleri aras?nda ya da oldu?u gibi yaz?lmas? bu kural?n do?ru çal??mas?n? engellemez.

max-age:18

unique

Veritaban? tablosunda olmayan bir verinin belirtilmesi gerekti?ini ifade eder.

unique:users

veya

unique:posts

available

Veritaban? tablosunda olan bir verinin belirtilmesi gerekti?ini ifade eder.

available:users

veya

available:users:username

knownunique

Belirtilen parametrenin, veritaban? tablosunda olan bir kayd?n mevcut parametresi veya kendisi d???ndaki herhangi bir kay?t ile e?le?meyen bir parametre olmas? gerekti?ini belirtmek için kullan?l?r. Sadece 3'ncü parametre belirtilirse, veri anahtar?yla ayn? isme sahip sütunda kontrol edilir, 4'ncü parametre belirtilirse 3'ncü parametre sütun ad?, 4'ncü parametre ise de?er olarak alg?lan?r.

knownunique:users:aliyilmaz

veya

knownunique:users:username:aliyilmaz

bool

Parametrenin boolean türünde olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametre gönderilmeden kullan?ld???nda geçerli bir boolean verisi olup olmad???n? kontrol eder. Ekstra bir parametre gönderilirse bu parametrenin boolean türüyle ayn? olup olmad???n? kontrol eder. (Veri ?u söz dizimlerinden birinde gönderilebilir. true, false, 'true', 'false', 0, 1, '0' veya '1')

bool

veya

bool:true

veya

bool:false

veya

bool:1

veya

bool:0

iban

Verinin bir IBAN numaras? olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duymad???ndan iban yazarak kullan?labilir.

iban

ipv4

Verinin ipv4 söz diziminde olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duymad???ndan ipv4 yazarak kullan?labilir.

ipv4

ipv6

Verinin ipv6 söz diziminde olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duymad???ndan ipv6 yazarak kullan?labilir.

ipv6

blood

Belirtilen parametrenin geçerli bir kan grubu olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir kan grubu parametresi belirtilirse, ekstra parametrenin ilk parametre için uygun donör olup olmad??? kontrol edilir.

blood

veya

blood:0+ 

coordinate

Virgül ile ayr?lm?? Enlem ve Boylam parametresinin geçerli bir koordinat noktas?n? i?aret etmesi gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duymad???ndan coordinate yazarak kullan?labilir.

coordinate

distance

@ i?areti ile ayr?lm?? iki farkl? koordinat noktas? aras?ndaki mesafenin extra parametrede belirtilen miktar kadar olmas? gerekti?ini ifade etmek için kullan?l?r. Rakam ve ölçü birimi aras?nda bir bo?luk b?rak?lmal?d?r. Kullan?m?na izin verilen ölçü birimleriyle ilgili daha fazla bilgi için distanceMeter metotunu inceleyebilirsiniz.

distance:349 km

languages

Verinin languages() metotunda bulunan dil k?saltmalar?ndan biri olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duymad???ndan languages yazarak kullan?labilir.

languages

morse

Verinin geçerli bir mors kodu olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duymad???ndan morse yazarak kullan?labilir.

morse

binary

Verinin geçerli bir Binary kodu olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duymad???ndan binary yazarak kullan?labilir.

binary

timecode

Verinin geçerli bir zaman kodu olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duymad???ndan timecode yazarak kullan?labilir.

timecode

currencies

Verinin geçerli bir para birimi kodu olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duymad???ndan currencies yazarak kullan?labilir.

currencies

decimal

Verinin geçerli bir ondal?k say? olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duymad???ndan decimal yazarak kullan?labilir.

decimal

isbn

Verinin geçerli bir ISBN numaras? olmas? gerekti?ini ifade etmek için kullan?l?r. Ekstra bir parametreye ihtiyaç duymad???ndan isbn yazarak kullan?labilir.

isbn

policyMaker()

Bu fonksiyon rotalar? kar??layan sunucu yaz?l?m?na özgü eri?im yönetmeli?i dosyalar?n? (.htaccess, web.config) olu?turmaya yarar.

/ rotas? bir defa kullan?ld???nda fonksiyon tetiklenir. Apache, Microsoft IIS, LiteSpeed ve Nginx sunucu yaz?l?mlar? desteklenmektedir. Bu fonksiyon, route() metotu içinde çal??t?r?larak etkinle?tirilmi?tir. Sadece Nginx için a?a??daki ad?mlar uygulanmal?d?r, di?er sunucu yaz?l?mlar?nda müdahaleye gerek yoktur.

Nginx için: Projeyi etkileyen .conf uzant?l? dosya içindeki server {} kapsay?c?s? içine a?a??daki kurallar? ekleyin ve sunucuyu yeniden ba?lat?n.

error_page 404 /index.php;
location / {
    try_files $uri $uri/ /index.php$is_args$args;
    autoindex on;
}
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass php_upstream;		
}
location ~ /(app)/ {
    deny all;
    return 403;
}

Bilgi: Eri?imini k?s?tlayaca??n?z dizinleri location ~ /(app)/ k?sm?nda bulunan parantez içine (app|special) gibi | ayrac?yla girmeniz gerekmektedir.

print_pre()

Bu fonksiyon array ya da json biçiminde gönderilen verileri okunabilir ?ekilde ekrana yans?tmak amac?yla kullan?l?r.

Örnek

// ARRAY
$data = array(
        'username'=>'aliyilmaz',
        'password'=>md5(123456)
);
$this->print_pre($data);

veya

// JSON
$data = json_encode(array(
    'username'=>'aliyilmaz',
    'password'=>md5(123456)
));

$this->print_pre($data);

arraySort()

Bu fonksiyon Dizi veya JSON biçiminde tutulan veri kümelerini s?ralamak amac?yla kullan?l?r. 3 parametre al?r, sadece ilk parametrenin belirtilmesi zorunludur. ?lk parametre, ARRAY ya da JSON türünde belirtilen veri kümesi içindir, 2'nci parametre, veri türü string olan asc,desc,ASC veya DESC s?ralama tiplerinden birini belirtmek içindir. Üçüncü parametreyse anahtarl? veri kümelerinde anahtar de?erlerine göre s?ralama yapmak içindir. Varsay?lan olarak 2'nci parametre ASC de?erine sahiptir.

Örnek

// ARRAY
echo '<h1>ARRAY</h1>';
echo '<hr>';

// 1 KADEMEL? D?Z?LERDE SIRALAMA YAPMAK
$data = array(
    2021,
    2020,
    2019
);
echo '<h4>2021 üstte</h4>';
$this->print_pre($this->arraySort($data, 'DESC'));


// 2 KADEMEL? D?Z?LERDE ANAHTAR BEL?RTEREK SIRALAMA YAPMAK
$data = array(
    array(
        'username'=>'aliyilmaz',
        'age'=>33
    ),
    array(
        'username'=>'eylül',
        'age'=>30
    )
);
echo '<hr>';
echo '<h4>eylül üstte</h4>';
$this->print_pre($this->arraySort($data, 'ASC', 'age'));


// 2 KADEMEL? D?Z?LERDE ANAHTAR BEL?RTMEDEN SIRALAMA YAPMAK
// ?LK ANAHTAR DE?ER?N? REFERANS ALIR
$data = array(
    array(
        'username'=>'aliyilmaz',
        'age'=>33
    ),
    array(
        'username'=>'aliyilmaz1',
        'age'=>29
    ),
    array(
        'username'=>'eylül',
        'age'=>30
    )
);
echo '<hr>';
echo '<h4>aliyilmaz üstte</h4>';
$this->print_pre($this->arraySort($data, 'ASC'));

// JSON
echo '<h1>JSON</h1>';
echo '<hr>';

// 1 KADEMEL? D?Z?LERDE SIRALAMA YAPMAK
$data = json_encode(array(
    2021,
    2020,
    2019
));
echo '<h4>2021 üstte</h4>';
$this->print_pre($this->arraySort($data, 'DESC'));


// 2 KADEMEL? D?Z?LERDE ANAHTAR BEL?RTEREK SIRALAMA YAPMAK
$data = json_encode(array(
    array(
        'username'=>'aliyilmaz',
        'age'=>33
    ),
    array(
        'username'=>'eylül',
        'age'=>30
    )
));
echo '<hr>';
echo '<h4>eylül üstte</h4>';
$this->print_pre($this->arraySort($data, 'ASC', 'age'));


// 2 KADEMEL? D?Z?LERDE ANAHTAR BEL?RTMEDEN SIRALAMA YAPMAK
// ?LK ANAHTAR DE?ER?N? REFERANS ALIR
$data = json_encode(array(
    array(
        'username'=>'aliyilmaz',
        'age'=>33
    ),
    array(
        'username'=>'aliyilmaz1',
        'age'=>29
    ),
    array(
        'username'=>'eylül',
        'age'=>30
    )
));
echo '<hr>';
echo '<h4>aliyilmaz üstte</h4>';
$this->print_pre($this->arraySort($data, 'ASC'));

info()

Bu fonksiyon dosya bar?nd?ran bir yola ait bilgilere ula?mak amac?yla kullan?l?r. Ald??? her iki parametre string olarak belirtilmelidir. $str yolu, $type bilgi türü parametresini temsil etmektedir.

Parametreler

  • dirname
  • basename
  • extension
  • filename
dirname: Dosyan?n bulundu?u dizini ö?renmek

$str  = $this->post['logo']['name'];
$type = 'dirname';

echo $this->info($str, $type);

basename: Uzant?s?yla birlikte dosyan?n ad?n? ö?renmek

$str  = $this->post['logo']['name'];
$type = 'basename';

echo $this->info($str, $type);

extension: Yaln?z dosya uzant?s?n? ö?renmek

$str  = $this->post['logo']['name'];
$type = 'extension';

echo $this->info($str, $type);

filename: Yaln?z dosya ad?n? ö?renmek

$str  = $this->post['logo']['name'];
$type = 'filename';

echo $this->info($str, $type);

request()

$_GET, $_POST, $_FILES ve JSON POST isteklerini güvenli ve düzenli bir yap?ya kavu?turmak amac?yla kullan?l?r, Verilere $this->post dizi de?i?keni içinden eri?ilir,Mind.php dosyas?nda bulunan __construct() metotu içinde çal??t?r?larak etkin hale getirilmi?tir.

type="text" kullan?m?

<form action="new" method="post">  
    <input type="text" name="username"> 
    <input type="password" name="password"> 
    <?=$_SESSION['csrf']['input'];?>
    <button type="submit">Send!</button>
</form>

$this->print_pre($this->post);
echo $this->post['username'];
echo $this->post['password'];
type="text" ve type="file" (Dosya) kullan?m?

<form action="new" method="post" enctype="multipart/form-data">  
    <input type="text" name="username"> 
    <input type="password" name="password"> 
    <input type="file" name="singlefile">
    <?=$_SESSION['csrf']['input'];?>
    <button type="submit">Send!</button>
</form>

$this->print_pre($this->post);
echo $this->post['username'];
echo $this->post['password'];
echo $this->post['singlefile']['name'];

type="text" ve type="file" (Dosyalar) kullan?m?

<form action="new" method="post" enctype="multipart/form-data">  
    <input type="text" name="username"> 
    <input type="password" name="password"> 
    <input type="file" name="multifile[]" multiple="multiple"> 
    <?=$_SESSION['csrf']['input'];?>
    <button type="submit">Send!</button>
</form>

$this->print_pre($this->post);
echo $this->post['username'];
echo $this->post['password'];
$this->print_pre($this->post['multifile']);

filter()

Bu metot html ve özel karakterleri, sql_injection, xss gibi istismar kodlar?n? etkisiz hale getirmek amac?yla kullan?l?r. string olarak gönderilen veriyi htmlspecialchars metotu yard?m?yla güvenli hale getirip geri döndürür. Veriyi eski haline dönü?türmek için htmlspecialchars_decode metotu kullan?lmal?d?r.

Örnek

$content = "%&%()' OR 1=1 karakterleri etkisizle?tirilmi?tir.";
echo $this->filter($content);

veya

$content = "<script>alert('XSS Aç??? var'); </script>";
echo $this->filter($content);

firewall()

Bu fonksiyon, User Agent'i bo? göndermeyi, Clickjacking, XSS, MIME Sniffing, CSRF davran??lar?n? engeller. Yine bu metot, belirtilen i?letim sistemleri, taray?c? ve ip adreslerinin eri?imlerini yönetmeye olanak tan?r. Varsay?lan olarak tüm alt ayarlar tan?mland??? için parametre belirtme zorunlulu?u yoktur. Metot, __construct() metodu içerisinde çal??t?r?larak etkinle?tirilmi?tir.

noiframe

Projenin iframe yoluyla kullan?lmas?n? engellemek için kullan?l?r, boolean türünde belirtilmelidir. Varsay?lan olarak true belirtilmi?tir.

nosniff

Projeyi görüntüleyen kullan?c?n?n taray?c?s?n?n, proje içeri?ini analiz etmesini engellemek için kullan?l?r, boolean türünde belirtilmelidir. Varsay?lan olarak true belirtilmi?tir.

noxss

Mind, XSS kodlar?n? etkisiz hale getirmektedir, buna ra?men proje adreslemesine kod enjekte etme giri?imlerini durdurmak için bu alt ayar kullan?l?r, boolean türünde belirtilmelidir. Varsay?lan olarak true belirtilmi?tir.

ssl

SSL etkin bir projenin oturumlar?n?, SSL üzerinden kullan?c?ya iletmek için kullan?l?r, bu sayede kullan?c?lar?n username & password bilgileri ba?ta olmak üzere, kredi kart? vb kritik bilgilerinin de güvenli?i sa?lanm?? olur. Varsay?lan olarak false belirtilmi?tir. E?er etkinle?tirilirse ve projenin SSL olmayan sayfas? ziyaret edilmek istenirse eri?im iste?i sonland?r?l?r.

hsts

SSL etkin bir projenin veri trafi?ini, SSL üzerinden iletmeye zorlamak için kullan?l?r, bu sayede kullan?c?yla sunucu aras?ndaki haberle?menin SSL ile korunmas? sa?lanm?? olur. Varsay?lan olarak false belirtilmi?tir. E?er etkinle?tirilirse ve ssl etkin de?ilse, projenin SSL olmayan sayfas?na yap?lan eri?im iste?i sonland?r?l?r.

csrf

Yetkisiz HTTP POST isteklerini engellemeye yarar, varsay?lan olarak true belirtilmi?tir. token ad? ve rastgele parametre uzunlu?u belirtmek mümkündür, varsay?lan olarak token ad? csrf_token, parametre uzunlu?uysa 200 belirtilmi?tir.

Bu alt ayar etkin oldu?u sürece herhangi bir form'dan gönderilenlerde csrf_token parametresini arayacak, bulamad??? taktirde ise söz konusu iste?i durduracakt?r. Form'a token input'unu eklemek için form içinde bir yere bu <?=$_SESSION['csrf']['input'];?> parametreyi belirtmek gerekir.

E?er javascript ile form göndermek icap ediyorsa token parametresi bu ?ekilde javascript kodlar? içinde<?=$_SESSION['csrf']['token'];?> kullan?labilir, token'?n ta??nd??? anahtar ad? ise <?=$_SESSION['csrf']['name'];?> ile kullan?labilir.

allow

Projeye eri?mesine izin verilen i?letim sistemleri, internet taray?c?lar? ve ip adresleri ile eri?ilmesine izin verilen klasörlerin belirtildi?i k?s?md?r, de?erler string veya array türünde gönderilebilir.

deny

Projeye eri?mesine izin verilmeyen i?letim sistemleri, internet taray?c?lar? ve ip adresleri ile eri?ilmesine izin verilmeyen klasörlerin belirtildi?i k?s?md?r, de?erler string veya array türünde gönderilebilir.

Örnek

$conf = array(
    'db'=>[
        'drive'     =>  'mysql', // mysql, sqlite, sqlsrv
        'host'      =>  'localhost', // sqlsrv için: www.example.com\\MSSQLSERVER,'.(int)1433
        'dbname'    =>  'mydb', // mydb, app/migration/mydb.sqlite
        'username'  =>  'root',
        'password'  =>  '',
        'charset'   =>  'utf8mb4'
    ],    
    'firewall'  =>  array(
        'noiframe'  =>  false,
        'nosniff'   =>  false,
        'noxss'     =>  false,
        'ssl'       =>  false,
        'hsts'      =>  false,
        'csrf'      =>  false,
        // 'csrf'      =>  true,
        // 'csrf'      =>  array('limit'=>150),
        // 'csrf'      =>  array('name'=>'_token'),
        // 'csrf'      =>  array('name'=>'_token', 'limit'=>150),
        'allow'     =>  [
            'platform'=>'Windows', // ['Windows', 'Linux', 'Darwin']
            'browser'=>'Chrome', // ['Chrome', 'Firefox'], 
            'ip'=>'127.0.0.1', // ['192.168.2.200', '192.168.2.201', '222.222.222.222']
            'folder'=>'files'
        ],
        // 'deny'     =>  [
        //     'platform'=>'Linux', // ['Windows', 'Linux', 'Darwin']
        //     'browser'=>'Firefox', // ['Chrome', 'Firefox'], 
        //     'ip'=>'127.0.0.2', // ['192.168.2.200', '192.168.2.201', '222.222.222.222']
        //     'folder'=>'archive'
        // ],
    )
);

$Mind = new Mind($conf);

echo 'Uzaktan eri?ime aç?kt?r';

Bilgi:

Her HTTP GET iste?i yeni bir token parametresi olu?mas?n? sa?lar. Proje sunucusunda bar?nmayan js, image ve css gibi varl?klar?n yollar? bir sayfada kullan?l?rsa ve csrf etkin ise, geçersiz token hata sayfas?yla i?lem sonland?r?larak sorunlu sayfan?n fark edilmesi sa?lan?r. allow ve deny birlikte kullan?labilir, çak??an k?s?mlarda deny kurallar? dikkate al?n?r.

platform k?sm?nda getOS() metodunda desteklenen i?letim sistemi adlar? kullan?labilir. browser k?sm?nda getBrowser() metodunda desteklenen ?nternet taray?c?s? adlar? desteklenmektedir. ip k?sm?nda ipv4 söz dizimindeki ip adresleri kullan?labilir. folder k?sm?nda aksi belirtilmezse public klasörüne eri?im izni verilir.

folder ile ilgili yap?lan ayarlaman?n nginx sunucularda da geçerli olabilmesi için, policyMaker() maddesinde de?inilen bilgi notundan istifade edebilirsiniz.

redirect()

Belirtilen adrese do?rudan veya belli bir süre sonra yönlendirme yapmak amac?yla kullan?l?r, bo? b?rak?l?rsa Mind.php dosyas?n?n bulundu?u klasör'e yönlendirme yapar. ?ki parametre al?r, ilk parametre yönlenecek adrestir ve string olarak belirtilmesi gerekir, ikinci parametre kaç saniye sonra yönlenmesi gerekti?i bilgisidir ve integer olarak belirtilmesi gerekir. Üçüncü parametre ise yönlendirmeye kalan sürenin atanaca?? element ad? bilgisidir. Bu parametre javascript'in querySelectorAll metotuna gönderildi?inden, javascript'in element'e eri?im yakla??m? referans al?narak belirtilmelidir.

Örnek

$this->redirect();

veya

$this->redirect('contact');

veya

$this->redirect('https://www.google.com');

veya

$this->redirect('', 5);

veya

$this->redirect('contact', 5);

veya

$this->redirect('https://www.google.com', 5);

veya


<?=$this->redirect('https://www.google.com', 20, '.example1 #redirect-time');?>

<form class="example1" action="">
    
    <h5>INPUT TEXT</h5>
    <input type="text" id="redirect-time">
    
    <br>
    
    <h5>TEXTAREA</h5>
    <textarea id="redirect-time"></textarea>
    
    <br>
    
    <h5>SPAN</h5>
    <span id="redirect-time"></span>
    
    <br>
    
    <h5>i</h5>
    <i id="redirect-time"></i>
    
    <br>
    
    <h5>CHECKBOX</h5>
    <input type="checkbox" id="redirect-time">
    <label for="redirect-time"> I have a bike</label>
    
    <br>

    <h5>OPTION</h5>
    <select>
        <option id="redirect-time">Redirect time</option>
        <option>Nothing</option>
    </select>
    
    <br>

    <h5>MULTI OPTION</h5>
    <select name="fruit" multiple>
        <option value ="none">Nothing</option>
        <option value ="guava" id="redirect-time">Guava</option>
        <option value ="lychee">Lychee</option>
        <option value ="papaya">Papaya</option>
        <option value ="watermelon">Watermelon</option>
    </select> 

</form>

permalink()

Kendisiyle payla??lan veriyi arama motoru dostu bir link yap?s?na dönü?türmek amac?yla kullan?l?r. ?ki parametre alabilir, ?lk parametre de link yap?s?na dönü?türülmek istenen veri string olarak, ikinci parametrede ise a?a??da belirtilen ayarlar yer al?r. ikinci parametre iste?e ba?l? olup belirtilme zorunlulu?u bulunmamaktad?r.

Örnek

$str = 'Merhaba dünya';
echo $this->permalink($str);

Ayraç (delimiter)

Varsay?lan olarak string yap?da ki veri içinde bulunan bo?luklar tire - yard?m?yla ayr?l?r, e?er tire - yerine ba?ka bir parametre bar?nd?rmas? arzu edilirse, delimiter özelli?i kullan?labilir.

Örnek

$str = 'Merhaba dünya';
$option = array(
    'delimiter' => '_'
);
echo $this->permalink($str, $option);

Limit (limit)

Varsay?lan olarak string yap?da ki veri SEO dostu bir yap?ya kavu?turularak geriye döndürülür , e?er belli bir karakter say?s?nda döndürülmesi istenirse, limit özelli?i kullan?labilir.

Örnek

$str = 'Merhaba dünya';
$option = array(
    'limit'=>'3'
);
echo $this->permalink($str, $option);

veya

$str = 'Merhaba dünya';
$option = array(
    'limit'=>3
);
echo $this->permalink($str, $option);

Harf boyutu (lowercase)

Varsay?lan olarak string yap?da ki veri tamam?yla küçük harfe dönü?türülür, e?er harflerin yaz?ld??? boyutta kalmas? istenirse, lowercase özelli?i kullan?labilir.

Örnek

$str = 'Merhaba dünya';
$option = array(
    'lowercase'=>false
);
echo $this->permalink($str, $option); 

Kelime de?i?imi (replacements)

string yap?da ki veri içinde belirtilen kelimeleri de?i?tirmek mümkündür,

Örnek

$str = 'Merhaba dünya';
$option = array(
    'replacements'=>array(
        'Merhaba'=>'hello', 
        'dünya'=>'world'
    )
);
echo $this->permalink($str, $option);

Karakter deste?i (transliterate)

Farkl? alfabelere ait harfler varsay?lan olarak SEO dostu kar??l?klar?yla de?i?tirilir, e?er oldu?u gibi yaz?lmalar? istenirse, false parametresi belirtilmelidir.

Örnek

$str = 'Merhaba dünya';
$option = array(
    'transliterate'=>false
);
echo $this->permalink($str, $option);

Veritaban?na kay?t için benzersiz ba?lant? olu?turma

string yap?daki veri, veritaban? tablosunun belirtilen sütununda aran?r, e?er bir veya daha fazla bulunursa bunlar?n toplam adedi tespit edilir.

Elde edilen bu toplam, bir döngü yard?m?yla, string yap?daki verinin sonuna, delimiter ayrac?ndan yard?m al?narak eklenir ve veritaban? tablosunda tek tek varl?k kontrolü yap?l?r.

E?er söz konusu ba?lant? aday?, veritaban? tablosunda bulunmuyorsa o hali geri döndürülür.

E?er tüm bulgularda yap?lan varl?k kontrolü neticesinde ba?lant? aday? için uygun bir numaraland?rma söz konusu de?ilse, bulgu toplam? 1 art?r?lm?? ?ekilde ba?lant? güncellenerek geri döndürülür.

Varsay?lan olarak delimiter parametresi için tire - de?eri, linkColumn parametresi için link de?eri ve titleColumn parametresi ise title de?eri tan?mlanm??t?r.

Örnek

$str = 'Merhaba dünya';
$option = array(
    'unique' => array(
        'tableName' => 'pages'
    )
);
echo $this->permalink($str, $option);

veya

$str = 'Merhaba dünya';
$option = array(
    'unique' => array(
        'tableName' => 'pages',
        'delimiter' => '_'
    )
);
echo $this->permalink($str, $option);


veya

$str = 'Merhaba dünya';
$option = array(
    'unique' => array(
        'tableName' => 'pages',
        'titleColumn' => 'title',
        'linkColumn' => 'link'
    )
);
echo $this->permalink($str, $option);
// merhaba-dunya-1

Dizine kay?t için benzersiz dosya ad? olu?turma

Benzersiz dosya ad? olu?turmaya yarar, iki parametrenin de belirtilmesi zorunludur. directory ifadesinin de?eri olan ./ parametresine dizin yolu yaz?lmal?d?r.

Örnek

$str = 'samantha';
$option = array(
    'unique'=>array(
        'directory' => './'
    )
);
echo $this->permalink($str, $option);
// samantha-1

timeAgo()

Belirtilen zaman damgas?n?n ne kadar süre geçmi?te kald???n? ö?renmek için kullan?l?r, iki parametre al?r, ilki zorunlu ikincisi zorunlu de?ildir.

Kullan?labilir Parametreler

  • y ( Y?l )
  • m ( Ay )
  • w ( Hafta )
  • d ( Gün )
  • h ( Saat )
  • i ( Dakika )
  • s ( Saniye )
  • a ( Önce )
  • p ( Ço?ul tak?s? )
  • j ( ?imdi )
  • f ( Tam zaman aç?klamas?n?n görünüp görünmemesi )
Örnek

$datetime = $this->timestamp;
echo $this->timeAgo($datetime); 

veya

$datetime = '2020-04-19 11:38:43';
echo $this->timeAgo($datetime); 

veya

echo $this->timeAgo('2020-04-19 11:38:43', ['f'=>true]);

veya

echo $this->timeAgo('2010-10-20');

veya

echo $this->timeAgo('2010-10-20', ['f'=>true]);

veya

echo $this->timeAgo('@1598867187');

veya

echo $this->timeAgo('@1598867187', ['f'=>true]);

veya

$options = array(
    'y' => 'Y?l',
    'm' => 'Ay',
    'w' => 'Hafta',
    'd' => 'Gün',
    'h' => 'Saat',
    'i' => 'Dakika',
    's' => 'Saniye',
    'a' => 'Önce'
);

$datetime = '2020-04-19 11:38:43';
echo $this->timeAgo($datetime, $options);

veya

$options = array(
    'y' => 'Y?l',
    'm' => 'Ay',
    'w' => 'Hafta',
    'd' => 'Gün',
    'h' => 'Saat',
    'i' => 'Dakika',
    's' => 'Saniye',
    'a' => 'Önce',
    'p' => '',
    'f' => true 
);

$datetime = '2020-04-19 11:38:43';
echo $this->timeAgo($datetime, $options);

timezones()

Bu fonksiyon, zaman damgas?n? isabetli k?lmak amac?yla tercih edilen date_default_timezone_set() fonksiyonunda kullan?labilen bölge kodlar?n? dizi halinde sunar. Daha fazla bilgi için Desteklenen Zaman Dilimlerinin Listesi sayfas?n? inceleyebilirsiniz.

Örnek

$this->print_pre($this->timezones());

languages()

Bu fonksiyon, 182 adet dilin evrensel ve yerel ismi ile k?saltmas?n? dizi halinde sunar. Daha fazla bilgi için Stackoverflow sayfas?n? inceleyebilirsiniz.

Örnek

$this->print_pre($this->languages());

currencies()

Bu fonksiyon, 162 adet para birimi isim ve k?saltmas?n? dizi halinde sunar. Daha fazla bilgi için Github Gist sayfas?n? inceleyebilirsiniz.

Örnek

$this->print_pre($this->currencies());

morsealphabet()

Bu fonksiyon, varsay?lan olarak belirtilen harflerin mors alfabesi kar??l???n? veya ikinci parametrede gönderilen özel mors kodlar? kar??l???n? bir dizi türünde geriye döndürmeye yarar.

Örnek

$this->print_pre($this->morsealphabet());

veya

$morseDictionary = array(
    'c' => '.-', '(' => '-...', 'a' => '-.-.', 'ç' => '-.-..', 'd' => '-..', 'e' => '.', 'f' => '..-.', 'g' => '--.', '?' => '--.-.', 'h' => '....', '?' => '..', 'i' => '.-..-', 'j' => '.---', 'k' => '-.-', 'l' => '.-..', 'm' => '--', 'n' => '-.', 'o' => '---', 'ö' => '---.', 'p' => '.--.', 'q' => '--.-', 'r' => '.-.', 's' => '...', '?' => '.--..', 't' => '-', 'u' => '..-', 'ü' => '..--', 'v' => '...-', 'w' => '.--', 'x' => '-..-', 'y' => '-.--', 'z' => '--..', '0' => '-----', '1' => '.----', '2' => '..---', '3' => '...--', '4' => '....-', '5' => '.....',
    '6' => '-....','7' => '--...','8' => '---..','9' => '----.','.' => '.-.-.-',',' => '--..--','?' => '..--..','\'' => '.----.','!'=> '-.-.--','/'=> '-..-.','b' => '-.--.',')' => '-.--.-','&' => '.-...',':' => '---...',';' => '-.-.-.','=' => '-...-','+' => '.-.-.','-' => '-....-','_' => '..--.-','"' => '.-..-.','$' => '...-..-',
    '@' => '.--.-.','¿' => '..-.-','¡' => '--...-',' ' => '/'
);
$this->print_pre($this->morsealphabet($morseDictionary));

session_check()

session_start() komutunun ki?iselle?tirilmi? ?ekilde uygulanmas?n? sa?lamak amac?yla kullan?l?r, Oturum Ayarlar? k?sm?nda bulunan ayarlar ?????nda oturumun ak?betini belirlemeye yarar,Mind.php dosyas?nda bulunan __construct() metotu içinde çal??t?r?larak etkin hale getirilmi?tir.

Örnek

$this->session_check();

remoteFileSize()

Uzak sunucuda bar?nan dosyan?n boyunutunu(byte olarak) ö?renmeye yarar.

Örnek

echo $this->remoteFileSize('https://github.com/fluidicon.png');

addLayer()

.php uzant?ya sahip dosya ya da dosyalar? projeye dahil etmek amac?yla kullan?l?r. $file ve $cache, dosyalara ait yollar?n?n tutuldu?u de?i?kenleri temsil etmektedir. Dosya yollar? .php uzant?s? olmadan belirtilmelidir.

Her iki de?i?kene de string veya array olarak dosya yollar? gönderilebilir, e?er dosyalar varsa projeye require_once yöntemiyle dahil edilirler.

?ki parametre al?r, ilk önce ikinci parametre olan $cache dosyalar?, ard?ndan birinci parametre olan $file de?i?keninde bulunan dosyalar projeye dahil edilir. $file ve $cache parametreleri iste?e ba?l? olup, belirtilme zorunlulu?u bulunmamaktad?r. S?n?f d???ndan eri?ime izin vermek için public özelli?i tan?mlanm??t?r.

Her iki parametreye de uzant?s?z dosya yollar? string veya dizi biçiminde belirtilebilece?i gibi, bu dosya yollar? içinde s?n?f metotu ça??ran yollar da tan?mlanabilir.

Örnek

$this->addLayer('app/views/home');

veya

$file = array(
    'app/views/header',
    'app/views/content',
    'app/views/footer'
);
$this->addLayer($file);

veya

$this->addLayer('app/views/home', 'app/model/home');

veya

$file = array(
    'app/views/layout/header',
    'app/views/home',
    'app/views/layout/footer
);
$cache = array(
    'app/middleware/auth',
    'app/database/install',
    'app/model/home'
);
$this->addLayer($file, $cache);

veya

$this->addLayer('HomeController:index@create',
[
    'BlogController:index@create',
    'LogController:index@create'
]);

veya

$this->addLayer([
    'BlogController:index@create',
    'LogController:index@create'
]);

veya

$this->addLayer([
    'HomeController:index@create',
    'StoreController:index@create'
],
[
    'BlogController:index@create',
    'LogController:index@create'
]);

columnSqlMaker()

Bu fonksiyon, veritaban? tablo veya sütunu olu?tururken yaz?lmas? icap eden sql söz dizimini olu?turmak amac?yla kullan?l?r. sql söz dizimi, tableCreate ve columnCreate metotlar?na gönderilen ?ema'n?n yorumlanmas?yla olu?turulur.

wayMaker()

Bu fonksiyon, route ve addLayer metotlar?na gönderilen parametreli adresin ayr??t?r?lmas? amac?yla kullan?l?r.

generateToken()

Bu fonksiyon, belirtilen karakter uzunlu?unda rastgele parametre olu?turmak amac?yla kullan?l?r, integer türünde bir parametre al?r, belirtilme zorunlulu?u bulunmamaktad?r. Varsay?lan olarak karakter uzunlu?u 100 olarak belirtilmi?tir.

Örnek

echo $this->generateToken();

veya

echo $this->generateToken(30);

coordinatesMaker()

Bu fonksiyon, ziyaretçinin GPS konumunun payla??lmas?na izin vermesi halinde, konum bilgisini elde etmek için kullan?l?r. string bir parametre al?r ve belirtilmesi zorunlu de?ildir. Bu parametre javascript'in querySelectorAll metotuna gönderildi?inden, javascript'in element'e eri?im yakla??m? referans al?narak belirtilmelidir.(form.example #my-coordinates gibi). E?er parametre belirtilmezse varsay?lan olarak id'si #coordinates olan elementlere ziyaretçi konumunu ekler.

Örnek

<?=$this->coordinatesMaker('form.example1 #my-coordinates');?>
<form class="example1" action="">

    <h5>INPUT TEXT</h5>
    <input type="text" id="my-coordinates">

    <br>

    <h5>TEXTAREA</h5>
    <textarea id="my-coordinates"></textarea>

    <br>

    <h5>SPAN</h5>
    <span id="my-coordinates"></span>

    <br>

    <h5>i</h5>
    <i id="my-coordinates"></i>

    <br>

    <h5>CHECKBOX</h5>
    <input type="checkbox" id="my-coordinates">
    <label for="my-coordinates"> I have a bike</label>

    <br>

    <h5>OPTION</h5>
    <select>
        <option id="my-coordinates">My Coordinate</option>
        <option>Nothing</option>
    </select>

    <br>

    <h5>MULTI OPTION</h5>
    <select name="fruit" multiple>
        <option value ="none">Nothing</option>
        <option value ="guava" id="my-coordinates">Guava</option>
        <option value ="lychee">Lychee</option>
        <option value ="papaya">Papaya</option>
        <option value ="watermelon">Watermelon</option>
    </select> 

</form>

veya

<?=$this->coordinatesMaker();?>
<form action="">

    <h5>INPUT TEXT</h5>
    <input type="text" id="coordinates">

    <br>

    <h5>TEXTAREA</h5>
    <textarea id="coordinates"></textarea>

    <br>

    <h5>SPAN</h5>
    <span id="coordinates"></span>

    <br>

    <h5>i</h5>
    <i id="coordinates"></i>

    <br>

    <h5>CHECKBOX</h5>
    <input type="checkbox" id="coordinates">
    <label for="coordinates"> I have a bike</label>

    <br>

    <h5>OPTION</h5>
    <select>
        <option id="coordinates">My Coordinate</option>
        <option>Nothing</option>
    </select>

    <br>

    <h5>MULTI OPTION</h5>
    <select name="fruit" multiple>
        <option value ="none">Nothing</option>
        <option value ="guava" id="coordinates">Guava</option>
        <option value ="lychee">Lychee</option>
        <option value ="papaya">Papaya</option>
        <option value ="watermelon">Watermelon</option>
    </select> 

</form>

Bilgi: Chrome, Firefox taray?c?lar?n?nda test edilmi?tir. Cep telefonu yoluyla payla??lan konumlar?n do?ruluk oran? ortalama 4 ile 12 m2'dir. Eski nesil GPS modüle sahip masaüstü bilgisayar yoluyla payla??lan konumlar?n do?ruluk oran? ise ortalama 7.000 m2'dir.

encodeSize()

Belirtilen byte de?erini, dönü?türebilece?i en büyük boyut türüne dönü?türmeye yarar. Sadece byte türünde bir de?er veya bir size anahtar? bar?nd?ran dizi(dosya dizisi gibi) gönderilebilir.

Desteklenen Boyutlar KB, MB, GB, TB, PB, EB

Örnek

// 1 KB
echo $this->encodeSize(1024);

veya

// 1 MB
echo $this->encodeSize(1048576);

veya

// 1 GB
echo $this->encodeSize(1073741824);

veya

// 1 TB
echo $this->encodeSize(1099511627776);

veya

// 1 PB
echo $this->encodeSize(1125899906842624);

veya

// 1 EB
echo $this->encodeSize(1152921504606850000);

veya

// 1 MB
$file = array('size'=>1048576);
echo $this->encodeSize($file);

decodeSize()

Belirtilen türdeki boyutu, byte'a dönü?türmek amac?yla kullan?l?r. Boyut ve boyut k?saltmas? arada bir bo?luk b?rak?larak belirtilmelidir.

Desteklenen Boyutlar KB, MB, GB, TB, PB, EB

// 1024
echo $this->decodeSize('1 KB');

veya

// 1048576
echo $this->decodeSize('1 MB');

veya

// 1073741824
echo $this->decodeSize('1 GB');

veya

// 1099511627776
echo $this->decodeSize('1 TB');

veya

// 1125899906842624
echo $this->decodeSize('1 PB');

veya

// 1152921504606846976
echo $this->decodeSize('1 EB');

toSeconds()

Kendisiyle payla??lan string türündeki zaman verisini saniyeye dönü?türmeye yarar. En az iki zaman de?eri belirtilmelidir.

Örnek

echo '2:2 - 7320<br>';
echo $this->toSeconds('2:2');

echo '<hr>';

echo '2:2:0 - 7320<br>';
echo $this->toSeconds('2:2:0');

echo '<hr>';

echo '02:02 - 7320<br>';
echo $this->toSeconds('02:02');

echo '<hr>';

echo '02:02:00 - 7320<br>';
echo $this->toSeconds('02:02:00');

toTime()

Kendisiyle payla??lan integer türündeki saniyeyi Saat, Dakika ve Saniye'den olu?an bir zaman damgas?na dönü?türmeye yarar.

Örnek

echo '7320 - 02:02:00<br>';
echo $this->toTime(7320);

summary()

Kendisiyle payla??lan string türündeki metni belirtilen karakter say?s?na kadar k?saltmaya yarar. Üç parametre al?r. ?lk parametre metin, ikinci parametre karakter say?s?, üçüncü parametre ise k?saltma gerçekle?ti?inde görünmesi arzu edilen text ya da html parametresidir. Sadece üçüncü parametrenin belirtilme zorunlulu?u bulunmamaktad?r.

Örnek

$str = 'Türkiye\'de, yakla??k 10.000 bitki türü yeti?ir. Bu bitki türlerinin yakla??k 3.000\'i ise Türkiye\'ye endemiktir. Bu özelli?i ile Türkiye, tüm Avrupa\'dakinden daha fazla endemik bitki türüne sahiptir.';
echo $this->summary($str, 46, ' ...');

getIPAddress()

Projeyi görüntüleyen kullan?c?n?n ip adresini elde etmeye yarar.

Örnek

echo $this->getIPAddress();

getLang()

Projeyi görüntüleyen kullan?c?n?n internet taray?c?s?n?n dilinin k?saltmas?n? elde etmeye yarar. Sa?lanan dil k?saltmas?n?n languages() metotundaki dillerin k?saltmalar?yla uyumlu olmas?na özen gösterilmi?tir.

Örnek

echo $this->getLang();

getAddressCode()

Alan adlar? ve IP Adreslerinin HTTP yan?t kodlar?n? elde etmek amac?yla kullan?l?r. Bir veya daha fazla adresin yan?t kodunun talep edilmesi mümkündür.

?ki parametre al?r, ilk parametrede string ve array veri türünde gönderilen adresler yer al?rken, ikinci parametrede hangi HTTP yan?t kodlar?na sahip adreslerin sorgular?n?n geri döndürülmesi gerekti?i string veya array veri türünde belirtilir.

Örnek

$ip = $this->addressGenerator('174.129.25.170', '174.129.25.200');
$result = $this->getAddressCode($ip);
$this->print_pre($result);

veya

$ip = $this->addressGenerator('174.129.25.170', '174.129.25.200');
$result = $this->getAddressCode($ip, 403);
$this->print_pre($result);

veya

$ip = $this->addressGenerator('174.129.25.170', '174.129.25.200');
$result = $this->getAddressCode($ip, array(403));
$this->print_pre($result);

veya

$ip = $this->addressGenerator('174.129.25.170', '174.129.25.200');
$result = $this->getAddressCode($ip, array(301,403));
$this->print_pre($result);

veya

$result = $this->getAddressCode('https://twitter.com/', array(200, 301,403));
$this->print_pre($result);

addressCodeList()

HTTP yan?t kodlar?n? array olarak geri döndürmeye yarayan bir metotdur.

Örnek

$this->print_pre($this->addressCodeList());

addressGenerator()

Bu metot iki farkl? adresin (?imdilik ipv4) aras?ndaki adresleri olu?turarak array türünde geri döndürmek amac?yla kullan?l?r.

Örnek

$result = $this->addressGenerator('255.255.254.200', '255.255.254.230');

$this->print_pre($result);

getOS()

Projenin çal??t??? sunucu i?letim sistemi ismini elde etmek için kullan?l?r. Darwin, Windows, Linux i?letim sistemlerini desteklemektedir, bunlar d???ndaki i?letim sistemleri Unknown olarak isimlendirilir.

Örnek

echo $this->getOS();

getSoftware()

Projenin çal??t??? i?letim sistemi üzerindeki sunucu yaz?l?m? ismini elde etmek için kullan?l?r. Apache, Microsoft ISS, LiteSpeed ve Nginx yaz?l?mlar? desteklemektedir, bunlar d???ndaki sunucu yaz?l?mlar? Unknown olarak isimlendirilir.

Örnek

echo $this->getSoftware();

getBrowser()

Kullan?c? taray?c?s?n?n ad?n? göstermeye yarar, e?er özel olarak HTTP_USER_AGENT de?eri belirtilirse, o de?erin üretildi?i taray?c?n?n ad?n? geri döndürür.

Desteklenen taray?c?lar:

  • Edge
  • Firefox
  • Safari
  • Chrome
  • Opera
Örnek

echo $this->getBrowser();

echo '<br>';

// Safari
// Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.3 Safari/605.1.15
echo $this->getBrowser('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.3 Safari/605.1.15');

echo '<br>';

// Chrome
// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36
echo $this->getBrowser('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36');

echo '<br>';

// Firefox
// Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0
echo $this->getBrowser('Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0');

echo '<br>';

// Edge
// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.46
echo $this->getBrowser('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.46');

echo '<br>';

// Opera
// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36 OPR/85.0.4341.18
echo $this->getBrowser('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36 OPR/85.0.4341.18');

route()

Route fonksiyonu özelle?tirilebilir rotalar tan?mlamak ve bu rotalara özel zihinler yüklemek için kullan?l?r. Zihin kelimesi, Model, View, Controller, Middleware gibi çe?itli katmanlar? tan?mlamak amac?yla kullan?lm??t?r. Böylelikle geli?tirici, katmanlar?n hangi rotaya tan?mland???n? aç?kça görebilir, yönetebilir ve proje ihtiyac?na özel tasar?m deseni olu?turabilir.

Rotalar, Mind.php dosyas?yla ayn? dizinde bulunan index.php dosyas? içine tan?mlan?r, dolay?s?yla new Mind() ça?r?s?n?n atand??? de?i?keni ön ek kabul ederek çal???r.

url, file ve cache parametreleri alabilen route() fonksiyonu, url parametresini string olarak kabul eder, file ve cache parametreleriniyse string ve array olarak kabul etmektedir. Bu üç parametreden file ve cache parametrelerinin belirtilme zorunlulu?u yoktur.

file ve cache parametreleri, uzant?s? belirtilmeyen php dosyalar?n?n yollar?ndan meydana gelir. file ve cache parametresi ayn? zamanda s?n?f metotlar?n? ça??rmak için de kullan?labilir.

Katmanlar?n yüklenmesi hakk?nda daha fazla bilgi için, addLayer() maddesini inceleyebilirsiniz.

Örnek

<?php

require_once '../src/Mind.php';

$Mind = new Mind();

$Mind->route('/', 'app/views/welcome');

?>

Url

/ sla? sembolü d???nda ki rotalara parametre isimleri tan?mlamak mümkündür, e?er adres sat?r?na edit/users/1 yaz?l?rsa ve users parametresini table ismiyle, 1 parametresini ise id ismiyle isimlendirmek istenirse, a?a??da ki yolu izlemek gerekir.

$Mind->route('edit:table@id', 'app/view/edit');

Kontrolü sa?lamak için app/view/edit yolunda ki edit.php dosyas? içine

$this->print_pre($this->post);

kodu eklendikten sonra, adres sat?r?na edit/users/1 yazarak, parametre isimlerinin url de tan?mlanan parametre isimlerine pay edildi?i görülebilir.

Array (
    [table] => users
    [id] => 1
)

Ayr?ca adres sat?r?na edit/users/1/2/diger gibi rota da isimlendirilmemi? parametreler yaz?l?rsa bunlar görmezden gelinir. E?er url parametresine a?a??da ki gibi parametre isimleri tan?mlanmam??sa

$Mind->route('edit', 'app/view/edit');

ve ula??lmak istenen rota adresi edit/users/1 ise, app/view/edit yolunda ki edit.php dosyas? içine

$this->print_pre($this->post);

kodu eklendi?inde, isimlendirilmemi? parametreler a?a??da ki ?ekilde görünecektir.

Array (
    [0] => users
    [1] => 1
)

File

cache parametresinde belirtilen dosya veya dosyalar projeye dahil edildikten sonra projeye file parametresinde tan?mlanan dosya(lar) dahil edilir.

Örnek

$Mind->route('/', 'app/view/home');

veya

$arr = array(
    'app/view/layout/header',
    'app/view/home',
    'app/view/layout/footer'
    );
$Mind->route('/', $arr);

Cache

E?er cache parametresi belirtilirse, belirtilen cache dosyalar?, file parametresinde belirtilen dosya(lar) henüz projeye dahil edilmeden önce, ilk eklenenden son eklenene do?ru tek tek varl?k kontrolünden geçirilerek projeye dahil edilir.

Örnek

$Mind->route('/', 'app/view/home', 'database/CreateTable');

veya

$arr = array(
    'database/CreateTable,
    'model/home'
);
$Mind->route('/', 'view/home', $arr);

veya

app/controller/HomeController.php dosyas?n? olu?turup içine a?a??da ki kodlar? kaydedin.

<?php

class HomeController extends Mind
{

    public function __construct($conf = array())
    {
        parent::__construct($conf);
    }

    public function index()
    {
        //
        echo 'merhaba ben index';
    }

    public function create()
    {
        //
        echo 'merhaba ben create';
    }

}

daha sonra a?a??da ki rotay? tan?mlay?n ve kontrol edin.


$Mind->route('home', 'app/views/home', 'app/controller/HomeController:index@create');

S?n?f içinde ki index ve create metotlar?n?n çal??t???n? görebilirsiniz. Bir veya daha fazla metotu bir rotaya tan?mlamak mümkündür.

Olu?turulan bu HomeController s?n?f? içinden Mind metotlar?na $this-> ön ekiyle ula??labilir.

E?er metot ça??r?l?rsa s?n?f ad?yla dosya ad?n?n ayn? olmas? gerekmektedir.

write()

Belirtilen içeri?i, belirtilen isimde ki dosyaya yazmak amac?yla kullan?l?r, söz konusu dosya ve dizini yoksa olu?turulur, e?er i?lem ba?ar?l?ysa true, de?ilse false de?eri döndürülür. üç parametre al?r;

?lk parametre

içeri?i temsil etmekte olup string veya array türünde gönderilebilir, dizi olarak gönderilmesi halinde dizi elemanlar? aralar?na : sembolü eklenerek string'e dönü?türülmü? ?ekilde dosyaya yaz?l?r.

?kinci parametre

Dosya yolunu temsil etmektedir, e?er dosya varsa söz konusu veri dosyan?n sonuna eklenir, e?er dosya yoksa yolda belirtilen isimde bir dosyay? olu?turulur ve bu dosyaya yaz?l?r.

Üçüncü parametre

Dizi olarak belirtilen verileri ay?rmada kullan?lacak de?eri temsil etmektedir. Belirtilme zorunlulu?u yoktur, varsay?lan olarak : tan?mlanm??t?r.

Örnek

$str = 'Merhaba dünya';
$this->write($str, 'yeni.txt');

veya

$str = array('Merhaba', 'Dünya');
$this->write($str, 'yeni.txt');

veya

$str = array('Merhaba', 'Dünya');
$this->write($str, 'yeni.txt', '~');

veya

$str = 'Merhaba dünya';
$this->write($str, 'klasor/alt_klasor/yeni.txt');

veya

$str = array('Merhaba', 'Dünya');
$this->write($str, 'klasor/alt_klasor/yeni.txt');

upload()

Belirtilen dosya veya dosyalar?, belirtilen klasöre yüklemek amac?yla kullan?r, $this->post['singlefile'] ve $this->post['multifile'] dosyalar?n tutuldu?u de?i?kenleri $path dosyalar?n yüklenece?i klasör yolunu, $force ise dosya ad?n? kullan?p kullanmamas? gerekti?i bilgisini temsil etmektedir.

Bilgi: Dosya yükleme i?lemi s?ras?nda tek seferde maksimum kaç adet dosyan?n yüklenece?ini php.ini dosyas?ndaki max_file_uploads k?sm?ndan güncelleyebilirsiniz. $force parametresinin belirtilmesi zorunlu de?ildir, varsay?lan olarak false tan?mlanm??t?r. E?er belirtilmezse dosyan?n ad? korunarak dosya ad? benzersizle?tirilerek yüklenir.

Örnek

<form method="post" enctype="multipart/form-data">  
    <input type="text" name="username"> 
    <input type="password" name="password"> 
    <input type="file" name="singlefile"> 
    <?=$_SESSION['csrf']['input'];?>
    <button type="submit">Send!</button>
</form>

<?php
if(!empty($this->post['singlefile'])){
    $path = './upload';
    $u = $this->upload($this->post['singlefile'], $path);
    // $u = $this->upload($this->post['singlefile'], $path, true);
    $this->print_pre($u);
}
?>

veya

<form method="post" enctype="multipart/form-data">  
    <input type="text" name="username"> 
    <input type="password" name="password"> 
    <input type="file" name="multifile[]" multiple="multiple"> 
    <?=$_SESSION['csrf']['input'];?>
    <button type="submit">Send!</button>
</form>

<?php
if(!empty($this->post['multifile'])){
    $path = './upload';
    $u = $this->upload($this->post['multifile'], $path);
    // $u = $this->upload($this->post['multifile'], $path, true);
    $this->print_pre($u);
}
?>

download()

Yerel ve Uzak sunucuda bar?nan dosyalar? indirmeye yarar. Dosya yollar? string veya array olarak belirtilebilir. ?ki parametre al?r, ilk parametre string veya array türünde belirtilen dosya yollar?n?, ikinci parametre ise array olarak tan?mlanan path yolunu temsil eder.

Bilgi: Geli?tirmeye aç?k oldu?u için ikinci parametre array türündedir ve belirtilme zorunlulu?u yoktur. E?er ikinci parametre belirtilmezse varsay?lan olarak inecek dosyalar?n kökdizini download olur.

Örnek

$this->print_pre($this->download('./LICENSE.md'));

veya

$this->print_pre($this->download('https://github.com/fluidicon.png'));
    

veya

$links = array(
    'https://github.com/fluidicon.png',
    './LICENSE.md'
);

$this->print_pre($this->download($links));

veya

$links = array(
    'https://github.com/fluidicon.png',
    './LICENSE.md'
);
$this->print_pre($this->download($links, array('path' => 'app/dosyalar')));

get_contents()

Kendisiyle payla??lan string yap?da ki veride veya bir url'nin var?? noktas?nda bulunan sayfan?n kaynak kodunda, $left ve $right de?i?kenlerinde belirtilen de?erlerin aras?nda ki içeri?i elde etmeye yarar. $left sol tarafta ki, $right sa? tarafta ki kapsay?c? parametresini temsil etmektedir.

Bir veya birden fazla ö?e bulunuyorsa hepsini bir array olarak sunar. E?er kendisiyle payla??lan url'nin kaynak kodu elde edilmek isteniyorsa $left ve $right de?i?kenlerinin oldu?u ilk iki parametreye bo? de?er gönderilir ve geriye sayfa kayna??n?n string olarak dönmesi sa?lan?r.

?ste?e ba?l? olan dördüncü parametre,var?? adresine Yetkili bilgisi (Basic Authorization), POST, Header, Referer bilgisi ve dosya göndermeye, varsa eri?im s?ras?nda kullan?labilir oturum bilgisini elde etmeye yarar.

Örnek

$url = 'https://www.cloudflare.com/';
$left = '';
$right = '';
$data 	= $this->get_contents($left, $right, $url);
$this->print_pre($data);

veya

$url = 'https://www.hepsiburada.com/';
$left = '';
$right = '';
$data 	= $this->get_contents($left, $right, $url);
$this->print_pre($data);

veya

$url 	= 'https://www.cloudflare.com/';
$left 	= '<title>';
$right	= '</title>';
$data 	= $this->get_contents($left, $right, $url);
$this->print_pre($data);

veya

$url 	= 'https://www.cloudflare.com/';
$left 	= '<link rel="alternate" hreflang="';
$right	= '"';
$data 	= $this->get_contents($left, $right, $url);
$this->print_pre($data);

veya

$url 	= 'Örnek bir içeriktir. <title>Merhaba Dünya!</title>';
$left 	= '<title>';
$right	= '</title>';
$data 	= $this->get_contents($left, $right, $url);
$this->print_pre($data);

veya

$url = 'src=\'-str\'-after src=\'-str\'-after src=\'-str\'-after src=\'-str\'-after';
$left = 'src=\'';
$right = '\'-after';
$data 	= $this->get_contents($left, $right, $url);
$this->print_pre($data);

veya

$url = '{"filmler": [  {"imdb": "tt0116231", "url": "&lt;iframe src=&#039;https://example.com&#039; width=&#039;640&#039; height=&#039;360&#039; frameborder=&#039;0&#039; marginwidth=&#039;0&#039; marginheight=&#039;0&#039; scrolling=&#039;NO&#039; allowfullscreen=&#039;allowfullscreen&#039;&gt;&lt;/iframe&gt;"} ]}';
$left = 'src=&#039;';
$right = '&#039;';
$data 	= $this->get_contents($left, $right, $url);
$this->print_pre($data);

veya

$url = 'https://mpop-sit.example.com/product/api/categories/get-all-categories?leaf=true&status=ACTIVE&available=true&page=0&size=1000&version=1';
$left = '';
$right = '';
$options = [
    'authorization'=>[
        'username'=>'example_username',
        'password'=>'example_password'
    ]
];
// Start connection.
$this->print_pre($this->get_contents($left, $right, $url, $options));

veya

$url = 'https://mpop-sit.example.com/product/api/products/import';
$left = '';
$right = '';
$options = [
    'attachment'=>'./data1.json',
    'authorization'=>[
        'username'=>'example_username',
        'password'=>'example_password'
    ]
];
// Start connection.
$this->print_pre($this->get_contents($left, $right, $url, $options));

veya

$product = '{"items":[{"barcode":"1010101010101","quantity":"0","salePrice":"9.95","listPrice":"9.95"}]}';
$options = [
    'authorization'=>[
        'username'=>'', // Trendyol API username
        'password'=>'' // Trendyol API password
    ],
    'header'=>[
        'User-Agent'=>'101010 - Trendyol API Gateway', // supplierId - Trendyol ...
        'Content-Type'=>'application/json' // return data type
    ],
    'post'=>$product // products to be updated
];
$response = $this->get_contents('', '', 'https://api.trendyol.com/sapigw/suppliers/101010/products/price-and-inventory', $options);
$this->print_pre($response);

veya

$url = 'https://www.example.com/login';
$left = '';
$right = '';
$options = array(
//    'referer'=>$url,
    'post'=>array(
        'username'=>'aliyilmaz',
        'password'=>'123456'
    )
);

// Start connection.
$this->get_contents($left, $right, $url, $options);

// Session access.
$url = 'https://www.example.com/admin/users';
$left = '<title>';
$right = '</title>';
$data = $this->get_contents($left, $right, $url);
$this->print_pre($data);

veya

$xml_data ='<?xml version="1.0" encoding="UTF-8"?>'.
    
    '<smspack ka="kullanici_adi" pwd="kullanici_parolasi" org="Originator_adi" >'.
    
    '<mesaj>'.
    
        '<metin>'.$this->post['metin'].'</metin>'.
    
            '<nums>'.$this->post['telefon'].'</nums>'.
    
    '</mesaj>'.
    
    
    
    '<mesaj>'.
    
            '<metin>'.$this->post['metin'].'</metin>'.
    
            '<nums>'.$this->post['telefon'].'</nums>'.
    
    '</mesaj>'.
    
'</smspack>';

$options = array(
    'post'=>$xml_data
);

$output = $this->get_contents('', '', 'https://smsgw.mutlucell.com/smsgw-ws/sndblkex', $options);

veya

$options = array(
    'header'=>array(
        'accept'=>"application/json, text/javascript, /; q=0.01",
        'accept-language'=>"tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7",
        'content-type'=>"application/x-www-form-urlencoded; charset=UTF-8",
        'sec-ch-ua'=>"\"Chromium\";v=\"94\", \"Google Chrome\";v=\"94\", \";Not A Brand\";v=\"99\"",
        'sec-ch-ua-mobile'=>"?0",
        'sec-ch-ua-platform'=>"\"Linux\"",
        'sec-fetch-dest'=>"empty",
        'sec-fetch-mode'=>"cors",
        'sec-fetch-site'=>"same-origin",
        'x-requested-with'=>"XMLHttpRequest"
    )
);

$url = 'https://www.example.com/archive';
$left = '<title>';
$right = '</title>';
$data = $this->get_contents($left, $right, $url, $options);
$this->print_pre($data);

distanceMeter()

Kendisiyle payla??lan iki farkl? koordinat noktas? aras?ndaki mesafeyi, ku? uçu?u olarak hesaplamaya yarar. Koordinat bilgileri, int, float ve string yap?da gönderilebilir ve zorunludur.

?ki koordinat aras?ndaki mesafenin ölçü birimi ise string veya array olarak belirtilebilir, zorunlu de?ildir, e?er belirtilmezse, m, km, mi, ft ve yd olarak dizi türünde geri döndürülür.

Bir veya birden fazla ölçü birimine göre mesafe bilgisi elde etmek mümkündür. E?er sadece bir ölçü birimi talep edilirse, o ölçü biriminin yan?t? string olarak geri döndürülür.

Bilgi:

Ölçü birimleri ve k?saltmalar? a?a??daki gibidir.

  • m (Metre)
  • km (Kilometre)
  • mi (Mil)
  • ft (Feet)
  • yd (Yard)
KOORD?NATLAR
/These are two points in Turkey/
$point1 = array('lat' => 41.008610, 'long' => 28.971111); // Istanbul
$point2 = array('lat' => 39.925018, 'long' => 32.836956); // Anitkabir

Örnek

//Array
//(
//    [m] => 4188.59
//    [km] => 4.19
//    [mi] => 2.6
//    [ft] => 13742.1
//    [yd] => 4580.64
//)

$distance = $this->distanceMeter($point1['lat'], $point1['long'], $point2['lat'], $point2['long']);

$this->print_pre($distance);

veya

//4188.59

$distance = $this->distanceMeter($point1['lat'], $point1['long'], $point2['lat'], $point2['long'], 'm');
echo $distance;

veya

//4188.59

$distance = $this->distanceMeter($point1['lat'], $point1['long'], $point2['lat'], $point2['long'], array('m'));
echo $distance;

veya

//Array
//(
//    [m] => 4188.59
//    [km] => 4.19
//)

$distance = $this->distanceMeter($point1['lat'], $point1['long'], $point2['lat'], $point2['long'], array('m', 'km'));

$this->print_pre($distance);

veya

//Array
//(
//    [m] => 4188.59
//    [km] => 4.19
//    [mi] => 2.6
//    [ft] => 13742.1
//    [yd] => 4580.64
//)

$distance = $this->distanceMeter($point1['lat'], $point1['long'], $point2['lat'], $point2['long'], array());

$this->print_pre($distance);

veya

//Array
//(
//    [m] => 4188.59
//    [km] => 4.19
//    [mi] => 2.6
//    [ft] => 13742.1
//    [yd] => 4580.64
//)

$distance = $this->distanceMeter($point1['lat'], $point1['long'], $point2['lat'], $point2['long'], '');

$this->print_pre($distance);

evalContainer()

Bu fonksiyon, string türündeki veriyi, içindeki PHP kodlar?yla birlikte kullan?ld??? k?sma eklemeye yarar. HTML özel karakterine dönü?türülmü? PHP kodlar? varsa onlar? da PHP koduna dönü?türerek kullan?r.

Örnek

$code = 'merhaba &lt;?=$this-&gt;timestamp;?&gt;';
$this->evalContainer($code);

veya

$code = 'merhaba &lt;?=$this-&gt;timestamp;?&gt;

&lt;?php

$array = array(
\'username\'=&gt;\'aliyilmaz\',
\'password\'=&gt;\'123456\'
);

$this-&gt;print_pre($array);';
$this->evalContainer($code);

safeContainer()

Bu metot, string bir veriyi, sat?r içi javascript ve css kodlar?ndan, javascript, css ve iframe taglar?ndan ar?nd?rmaya yarar. Ar?nd?rma i?leminde istisnalar 2'nci parametrede string veya array türünde belirtilebilir. 2'nci parametre belirtilmezse tüm ay?klamalar gerçekle?tirilir.

?stisnalar

  • inlinejs ( Sat?r içi javascript kodlar?n? görmezden gelir)
  • inlinecss ( Sat?r içi css kodlar?n? görmezden gelir)
  • tagjs (Javascript taglar?n? görmezden gelir)
  • tagcss ( Css taglar?n? görmezden gelir)
  • iframe ( iframe tag'?n? görmezden gelir)
Örnek

$data = '
    <link href=chunk-c23060a2.5288cd9ea090a4e0e352.css rel=prefetch>
    <link rel="preload" href="main.js" as="script">
    <link href=chunk-206f96fd.8a5918638b41295dd9df.js rel=prefetch>
    <img style="display:none;" src="foo.jpg" onload="something"/>
    <img onmessage="javascript:foo()"><style>body{ background-color:#000;}</style>
    <a notonmessage="nomatch-here">
    <p><script></script>
    things that are just onfoo="bar" shouldn\'t match either, outside of a tag
    </p><iframe src=".."></iframe>
';
echo $this->safeContainer($data);
echo '<hr>';
echo $this->safeContainer($data, 'inlinecss');
echo '<hr>';
echo $this->safeContainer($data, 'inlinejs');
echo '<hr>';
echo $this->safeContainer($data, 'tagjs');
echo '<hr>';
echo $this->safeContainer($data, 'tagcss');
echo '<hr>';
echo $this->safeContainer($data, 'iframe');
echo '<hr>';
echo $this->safeContainer($data, array('inlinecss', 'inlinejs', 'tagjs', 'tagcss', 'iframe'));

morse_encode()

Bu fonksiyon, kendisiyle payla??lan string yap?daki veriyi morsealphabet() metotunda tan?mlanm?? veya ikinci parametrede gönderilen özel mors kodlar?na dönü?türmeye yarar.

Örnek

$encode = $this->morse_encode('Mustafa Kemal Atatürk'); // -- ..- ... - .- ..-. .- / -.- . -- .- .-.. / .- - .- - ..-- .-. -.-

echo $encode;

veya

$morseDictionary = array(
    'c' => '.-', '(' => '-...', 'a' => '-.-.', 'ç' => '-.-..', 'd' => '-..', 'e' => '.', 'f' => '..-.', 'g' => '--.', '?' => '--.-.', 'h' => '....', '?' => '..', 'i' => '.-..-', 'j' => '.---', 'k' => '-.-', 'l' => '.-..', 'm' => '--', 'n' => '-.', 'o' => '---', 'ö' => '---.', 'p' => '.--.', 'q' => '--.-', 'r' => '.-.', 's' => '...', '?' => '.--..', 't' => '-', 'u' => '..-', 'ü' => '..--', 'v' => '...-', 'w' => '.--', 'x' => '-..-', 'y' => '-.--', 'z' => '--..', '0' => '-----', '1' => '.----', '2' => '..---', '3' => '...--', '4' => '....-', '5' => '.....',
    '6' => '-....','7' => '--...','8' => '---..','9' => '----.','.' => '.-.-.-',',' => '--..--','?' => '..--..','\'' => '.----.','!'=> '-.-.--','/'=> '-..-.','b' => '-.--.',')' => '-.--.-','&' => '.-...',':' => '---...',';' => '-.-.-.','=' => '-...-','+' => '.-.-.','-' => '-....-','_' => '..--.-','"' => '.-..-.','$' => '...-..-',
    '@' => '.--.-.','¿' => '..-.-','¡' => '--...-',' ' => '/'
);
$encode = $this->morse_encode('Mustafa Kemal Atatürk', $morseDictionary); // -- ..- ... - .- ..-. .- / -.- . -- .- .-.. / .- - .- - ..-- .-. -.-

echo $encode;

morse_decode()

Bu fonksiyon, kendisiyle payla??lan ve morsealphabet() metotunda tan?mlanm?? veya ikinci parametrede gönderilen özel mors kodlar?na dönü?türülmü? parametreyi çözmeye yarar.

Örnek

echo $this->morse_decode('-- ..- ... - .- ..-. .- / -.- . -- .- .-.. / .- - .- - ..-- .-. -.-');

veya

$morseDictionary = array(
    'c' => '.-', '(' => '-...', 'a' => '-.-.', 'ç' => '-.-..', 'd' => '-..', 'e' => '.', 'f' => '..-.', 'g' => '--.', '?' => '--.-.', 'h' => '....', '?' => '..', 'i' => '.-..-', 'j' => '.---', 'k' => '-.-', 'l' => '.-..', 'm' => '--', 'n' => '-.', 'o' => '---', 'ö' => '---.', 'p' => '.--.', 'q' => '--.-', 'r' => '.-.', 's' => '...', '?' => '.--..', 't' => '-', 'u' => '..-', 'ü' => '..--', 'v' => '...-', 'w' => '.--', 'x' => '-..-', 'y' => '-.--', 'z' => '--..', '0' => '-----', '1' => '.----', '2' => '..---', '3' => '...--', '4' => '....-', '5' => '.....',
    '6' => '-....','7' => '--...','8' => '---..','9' => '----.','.' => '.-.-.-',',' => '--..--','?' => '..--..','\'' => '.----.','!'=> '-.-.--','/'=> '-..-.','b' => '-.--.',')' => '-.--.-','&' => '.-...',':' => '---...',';' => '-.-.-.','=' => '-...-','+' => '.-.-.','-' => '-....-','_' => '..--.-','"' => '.-..-.','$' => '...-..-',
    '@' => '.--.-.','¿' => '..-.-','¡' => '--...-',' ' => '/'
);
$decode = $this->morse_decode('-- ..- ... - -.-. ..-. -.-. / -.- . -- -.-. .-.. / -.-. - -.-. - ..-- .-. -.-', $morseDictionary); 

echo $decode;

stringToBinary()

Bu fonksiyon, kendisiyle payla??lan string türündeki veriyi, Binary koduna dönü?türmeye yarar.

Örnek

$data = 'Ali Y?lmaz';
echo $this->stringToBinary($data);

binaryToString()

Bu fonksiyon, kendisiyle payla??lan binary türündeki veriyi, String kar??l???na dönü?türmeye yarar.

Örnek

$data = '1000001 1101100 1101001 100000 1011001 11000100 10110001 1101100 1101101 1100001 1111010';
echo $this->binaryToString($data);

hexToBinary()

Bu fonksiyon, kendisiyle payla??lan Hex türündeki veriyi, String kar??l???na dönü?türmeye yarar.

Örnek

$data = bin2hex('Merhaba dünya');

echo $this->hexToBinary($data);

siyakat_encode()

Bu fonksiyon, kendisiyle payla??lan string türündeki veriyi, kendisiyle payla??lan sözlüklere göre ?ifrelemeye yarar. ?ki parametre al?r, ilki ?ifrelenecek veri, ikincisi sözlüklerdir.

?ste?e göre sözlük olu?turmak için örnekteki dizi anahtarlar? di?er dizi anahtarlar?yla de?i?tirilmelidir. ( 's' => '-.-..' k?sm?n? 'ç' => '...' ?eklinde de?i?tirmek gibi)

Örnek

$data = 'Türkiye\'de, yakla??k 10.000 bitki türü yeti?ir. Bu bitki türlerinin yakla??k 3.000\'i ise Türkiye\'ye endemiktir. Bu özelli?i ile Türkiye, tüm Avrupa\'dakinden daha fazla endemik bitki türüne sahiptir.';
$miftah = array(
    array(
        '1'=>'elif', '2'=>'selim', '3'=>'gümü?lük', '4'=>'destan', '5'=>'abdulhamid',
        '6'=>'cuma', '7'=>'mustafakemal', '8'=>'cem', '9'=>'teras', '0'=>'cumhuriyet',
        'a'=>'tur?u', 'b'=>'rakip', 'c'=>'silüet', 'd'=>'turan', 'e'=>'bal', 'f'=>'sar?'
    ),
    array(
        's' => '.-', '(' => '-...', 'a' => '-.-.', '0' => '-.-..', 'd' => '-..', '9' => '.', 'f' => '..-.', 'g' => '--.', '?' => '--.-.', 'h' => '....', '?' => '..', 'i' => '.-..-', 'j' => '.---', 'k' => '-.-', 'l' => '.-..', 'ö' => '--', '8' => '-.', 'o' => '---', 'q' => '---.', 'p' => '.--.', 'm' => '--.-', '7' => '.-.', 'c' => '...', 'z' => '.--..', 't' => '-', 'u' => '..-', '¿' => '..--', 'v' => '...-', '1' => '.--', '5' => '-..-', 'y' => '-.--', '?' => '--..', 'ç' => '-----', 'w' => '.----', '&' => '..---', '3' => '...--', '4' => '....-', 'x' => '.....',
        '6' => '-....','r' => '--...','n' => '---..','e' => '----.','.' => '.-.-.-',',' => '--..--','?' => '..--..','$' => '.----.','!'=> '-.-.--','/'=> '-..-.','b' => '-.--.',')' => '-.--.-','2' => '.-...',':' => '---...',';' => '-.-.-.','@' => '-...-','+' => '.-.-.','-' => '-....-','_' => '..--.-','"' => '.-..-.','\'' => '...-..-',
        '=' => '.--.-.','ü' => '..-.-','¡' => '--...-',' ' => '/',
    )
);

$encode = $this->siyakat_encode($data, $miftah);
echo $encode;

siyakat_decode()

Bu fonksiyon, kendisiyle payla??lan string türünde ve siyakat_encode() ile ?ifrelenmi? veriyi çözmeye yarar. ?ki parametre al?r, ilki ?ifrelenmi? veri ikincisi veri ?ifrelenirken kullan?lan sözlüklerdir.

Örnek

$data = '.-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. .-- .-. ... .-. -.-.. .-. .-. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. .-- .-. ... .-. -.-.. .-. .-. ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... -. ...-- .-. -.... -. ....- ... -..- -.--. -.... ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... .-. .-- .-. ... .-. -.-.. .-. .-. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... .-. .-- .-. ... .-. -.-.. .-. .-. ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ....- .-. -.... .-. ... ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... -. ...-- .-. -.... -. ....- ... -..- -.--. -.... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ....- .-. -.... .-. ... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. ....- .-. -.... .-. ... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. ....- .-. -.... .-. ... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. .-- .-. ... .-. -.-.. .-. .-. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. .-- .-. ... .-. -.-.. .-. .-. ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... -. ...-- .-. -.... -. ....- ... -..- -.--. -.... ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... .-. .-- .-. ... .-. -.-.. .-. .-. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ....- .-. -.... .-. ... ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. ....- .-. -.... .-. ... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- -. .-- -. ....- .-. -.... .-. ----. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ....- .-. -.... .-. ... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... -. -..- -. .-- -. ....- ... .-- -.-.. ..-. -. .-- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... -. ...-- .-. -.... -. ....- ... -..- -.--. -.... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- -. .-- -. ....- .-. -.... .-. ----. ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... .-. .-- .-. ... .-. -.-.. .-. .-. ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. .-- .-. ... .-. -.-.. .-. .-. ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. .-- .-. ... .-. -.-.. .-. .-. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. ....- .-. -.... .-. ... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. ....- .-. -.... .-. ... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. .-- .-. ... .-. -.-.. .-. .-. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. ...-- .-. .-- .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. .-- .-. ... .-. -.-.. .-. .-. ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. .-- .-. ... .-. -.-.. .-. .-. ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... -. -..- -. .-- -. ....- ... .-- -.-.. ..-. -. .-- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. .-- .-. ... .-. -.-.. .-. .-. ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. ....- .-. -.... .-. ... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- -. .-- -. ....- .-. -.... .-. ----. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... -. ....- .-. -.... .-. -.--. .-. -.-.. -. .-... ....- .-... -. ...-- .-. -.-.. .-. ... ... ...-- -.--. ... .-. .-- -. -..- ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. ....- .-. -.... .-. ... ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. -.... .-. ....- .-. -..- -. .-- .-. ... .-. . .-. -.... .-. -.. .-. -.-.. .-. -..- ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. -. ... ...-- -.--. ... .-. -.. ... ...-- -.--. ... ... .-- -.-.. ..-. .-. ... ... ...-- -.--. ... .-. -.--. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. .-- .-. ... .-. -.-.. .-. .-. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... .-. ...-- .-. .-- .-. -.. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. ...-- -. .-- .-. -.. .-. . -. .-- -. ....- .-. -.-.. -. -.-.. .-. .-- -. -..- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... .-. -..- .-. .-- -. ...-- -. -..- .-. -.... .-. ----. ....- .-... .-. ...-- -. .-- .-. -.. .-. -.... ....- .-... -. -..- .-. .-- -. ....- .-. -.... -. ...-- ....- .-... .-. -.. -. .-- -. ...-- -. -..- .-. -.... .-. .-. .-. -.... .-. -.--. .-. .-- .-. -.. .-. -.... .-. ... ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... -. ...-- .-. .-- .-. ... .-. -.-.. .-. -.. ....- .-... .-. ....- .-. -.... .-. ...';

$miftah = array(
    array(
        '1'=>'elif', '2'=>'selim', '3'=>'gümü?lük', '4'=>'destan', '5'=>'abdulhamid',
        '6'=>'cuma', '7'=>'mustafakemal', '8'=>'cem', '9'=>'teras', '0'=>'cumhuriyet',
        'a'=>'tur?u', 'b'=>'rakip', 'c'=>'silüet', 'd'=>'turan', 'e'=>'bal', 'f'=>'sar?'
    ),
    array(
        's' => '.-', '(' => '-...', 'a' => '-.-.', '0' => '-.-..', 'd' => '-..', '9' => '.', 'f' => '..-.', 'g' => '--.', '?' => '--.-.', 'h' => '....', '?' => '..', 'i' => '.-..-', 'j' => '.---', 'k' => '-.-', 'l' => '.-..', 'ö' => '--', '8' => '-.', 'o' => '---', 'q' => '---.', 'p' => '.--.', 'm' => '--.-', '7' => '.-.', 'c' => '...', 'z' => '.--..', 't' => '-', 'u' => '..-', '¿' => '..--', 'v' => '...-', '1' => '.--', '5' => '-..-', 'y' => '-.--', '?' => '--..', 'ç' => '-----', 'w' => '.----', '&' => '..---', '3' => '...--', '4' => '....-', 'x' => '.....',
        '6' => '-....','r' => '--...','n' => '---..','e' => '----.','.' => '.-.-.-',',' => '--..--','?' => '..--..','$' => '.----.','!'=> '-.-.--','/'=> '-..-.','b' => '-.--.',')' => '-.--.-','2' => '.-...',':' => '---...',';' => '-.-.-.','@' => '-...-','+' => '.-.-.','-' => '-....-','_' => '..--.-','"' => '.-..-.','\'' => '...-..-',
        '=' => '.--.-.','ü' => '..-.-','¡' => '--...-',' ' => '/',
    )
);

$decode = $this->siyakat_decode($data, $miftah);
echo $decode;

abort()

Bu metot belirtilen eri?im isteklerinin veya uygulaman?n durdurulmas? gerekti?i hallerde kullan?l?r. Hata mesaj?n?n, geri ve anasayfaya dönü? ba?lant?lar?n?n yer ald??? bu metot, iki string parametre al?r, ilki hatan?n k?sa kodu, ikincisi ise hata mesaj?d?r.

Örnek

$this->abort('404', 'Sayfa bulunamad?');

captcha()

Bu metot, sayfa arayüzünü kullanarak otomatik form i?lemleri yapmay? amaçlayan robotlar? durdurmaya yarar, ziyaretçinin insan m?, robot mu oldu?unu anlamaya ihtiyaç duyuldu?u durumlarda bu metot kullan?l?r. Çal??t?r?ld??? yere rastgele bir parametrenin bar?nd??? görsel ve alt?nda o parametrenin yaz?labilmesi için bir yaz? alan? ekler.

Ziyaretçi görselde bulunan parametreyi yaz? alan?na girip post i?lemini gerçekle?tirirse form gönderilir, aksi halde form gönderilmez ve ziyaretçinin potansiyel robot oldu?u de?erlendirilerek, captcha hata sayfas?na yönlendirilir. Bu sayede robotun otomasyon algoritmas? sekteye u?rat?lm?? olur.

4 parametre al?r, bunlar s?ras?yla level, length, width ve height 'dir.

level Okumay? güçle?tirme seviyesini belirtmek amac?yla kullan?l?r, varsay?lan olarak 3'dür. E?er Okumay? güçle?tirmek istenmiyorsa null parametresi belirtilmelidir.

length Parametre uzunlu?unu belirtmek amac?yla kullan?l?r, bu k?s?mda geli?tirici taraf?ndan bir uzunluk belirtildi?inde, olu?acak parametrenin rahatl?kla görünebilmesi için geni?lik ve yükseklik de?erlerinin de bu tan?ma göre güncellenmesi gerekmektedir. Varsay?lan uzunluk de?eri 8'dir.

width Captcha kodu görselinin geni?li?ini belirtmek amac?yla kullan?l?r. Ölçüler piksel bazl? ve mutlak olmal?d?r. Varsay?lan olarak 320 tan?mlanm??t?r.

height Captcha kodu görselinin yüksekli?ini belirtmek amac?yla kullan?l?r. Ölçüler piksel bazl? ve mutlak olmal?d?r. Varsay?lan olarak 60 tan?mlanm??t?r.

Tüm parametrelerin belirtilme zorunlulu?u bulunmamaktad?r.

Ziyaretçi captcha'yi bu metotun b?rakt??? inputu taray?c? araçlar?yla silerek formu gönderebilece?inden, form verilerini i?leme almadan önce mutlak suretle a?a??daki örnek ?????nda bir kontrolün gerçekle?tirilmesi gerekmektedir.

A?a??daki örnekler, do?rulama yapmayan ba?ka bir form ile ayn? sayfada nas?l kullan?ld???n? göstermek amac?yla haz?rlanm??t?r.

Örnek

$this->captcha(); 
// $this->captcha(null); // null
// $this->captcha(''); // null
// $this->captcha(3, 9); length
// $this->captcha(3, 8, 320); width
// $this->captcha(3, 8, 320, 60); height

veya

html

<!DOCTYPE html>
<html lang="en">
<head>
    <base href="<?=$this->base_url;?>">
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <form action="captcha.php" method="post">
    <?=$_SESSION['csrf']['input'];?>
    <?php $this->captcha(); ?>

    <input type="text" name="username" placeholder="username">
        <br>
        <button type="submit" name="btn_captcha">Send</button>
    </form>
    <hr>
    
    <form action="captcha.php" method="post">
    <?=$_SESSION['csrf']['input'];?>
    <input type="text" name="username" placeholder="username">
    <input type="text" name="password" placeholder="password">
    <input type="text" name="age" placeholder="age">
        <br>
        <button type="submit" name="btn_without_captcha">Send</button>
    </form>
</body>
</html>

php

// captcha ile
if(isset($this->post['btn_captcha'])){

    if(isset($this->post['captcha'])){
        echo 'captcha form';
        $this->print_pre($this->post);
    } else {
        $this->abort('401', 'Captcha parametresi bulunamad?.');
    }
    
}

// captcha olmadan
if(isset($this->post['btn_without_captcha'])){
    if(isset($this->post['age'])){
        echo 'Captcha olmadan gönderilen form';
        $this->print_pre($this->post);
    }
}

rm_r()

Dosya ve klasörleri silmek amac?yla kullan?l?r, silinmesi istenen dosya ve klasör yollar? string veya array olarak belirtilebilir. E?er dizin yolu belirtilirse, klasör ve içindeki dosya ve klasörler de silinir.

Bilgi: Silme i?lemi yetki gerektiren bir eylem oldu?undan, chmod yoluyla projeye dizinlere müdahale izni verilmelidir.

Örnek

if($this->rm_r('silinecekler')){
  echo 'Silindi.';
} else {
  echo 'Silinemedi.';
}

veya

$paths = array(
    'silinecekler1',
    'silinecekler2',
    'silinecekler3/sil1.txt'
);
if($this->rm_r($paths)){
  echo 'Silindi.';
} else {
  echo 'Silinemedi.';
}

ffsearch()

Belirtilen isme sahip dosya ve klasör yollar?n? dizi olarak geri döndürmeye yarar. Projenin bulundu?u dizinde bulunan dosya ve klasör(alt klasör)leri de arar.

kod:

$this->print_pre($this->ffsearch('./', '*.sqlite'));

ç?kt?:

Array
(
    [0] => ./app/migration/mydb.sqlite
)

json_encode()

Belirtilen diziyi json biçimine dönü?türmeye yarar. PHP'nin json_encode metodundan farkl? olarak, JSON_UNESCAPED_UNICODE tan?m? varsay?lan olarak kullan?r, ikinci parametre varsay?lan olarak true belirtilmi?tir. Bu sayede json verisi s?k??t?r?lm?? halde olup daha az yer kaplamaktad?r.

E?er json verisi okunakl? bir yap?da elde edilmek istenirse, ikinci parametre false olarak belirtilmelidir. Böylelikle JSON_PRETTY_PRINT tan?m? uygulanarak okunakl? bir json ç?kt?s? elde edilmi? olur.

kod:

$data = ['Beyaz?t Karata?: Milli Muharif Uça??n ad? "Türk Kartal?" olmal?!', 'Ali Y?lmaz'];
echo $this->json_encode($data); // $this->json_encode($data, false);

ç?kt?:

[
    "Beyaz?t Karata?: Milli Muharif Uça??n ad? \"Türk Kartal?\" olmal?!",
    "Ali Y?lmaz"
]

json_decode()

Belirtilen json parametresini array biçimine dönü?türmeye yarar. PHP'nin json_decode metodundan farkl? olarak ikinci parametresine true de?eri atanarak verinin sadece diziye dönü?mesi sa?lanm??t?r.

kod:

$data = '[
    "Beyaz?t Karata?: Milli Muharif Uça??n ad? \"Türk Kartal?\" olmal?!",
    "Ali Y?lmaz"
]';
$this->print_pre($this->json_decode($data));

ç?kt?:

Array
(
    [0] => Beyaz?t Karata?: Milli Muharif Uça??n ad? "Türk Kartal?" olmal?!
    [1] => Ali Y?lmaz
)

saveAs()

Belirtilen yolda bulunan dosyay? veya belli MIME türündeki içeri?i, taray?c?da sa? t?k / farkl? kaydet yap?ld???ndaki gibi indirmeye yarar. Bu metot ayn? zamanda yerel dizindeki direkt eri?imin engellendi?i dizinlerde bar?nan ya da uzak sunucularda bulunan ve eri?imine izin verilen dosyalara eri?ilmesini de sa?lar.

Özellikle dosya ad? bulunmayan yollar?n veya MIME türündeki içeri?in indirilmesi s?ras?nda ikinci parametrede isim belirtmek gerekmektedir. ?ndirme i?lemi için 3'ncü parametrenin ya hiç belirtilmemesi ya da true olarak belirtilmesi gerekmektedir. E?er indirmek yerine MIME halini görmek arzu ediliyor ise üçüncü parametre false olarak belirtilmelidir.

kod:

$this->saveAs('app/migration/mysql_backup_2022_02_14_01_00_53.json');

ç?kt?:

Farkl? kaydet penceresi aç?l?r, dosya ad? k?sm?nda `mysql_backup_2022_02_14_01_00_53.json` ifadesi bulunur.

kod:

$this->saveAs('app/migration/mysql_backup_2022_02_14_01_00_53.json', null, false);

ç?kt?:

`json` biçimindeki veriler görüntülenir.