Titan Web Framework'ün, kullanıcılardan gelen geri bildirimler doğrultusunda yeni özellikler ve iyileştirmeler içeren  v2.0.8 sürümü bugün yayınlandı. Bu sürümde, base controller yapısı değiştirildi, default middleware tanımlama, config verilerine fonksiyon ile erişme, controller içinde middleware tanımlama gibi yeni özellikler eklendi.

v2.0.8 ile ilgili gelen yenilikler ve yapılan düzenlemeler için aşağıdaki bağlantıyı ziyaret edebilirsiniz;
http://v2.titanphp.com/doc/surum-notlari

v2.0.7 Sürümünden v2.0.8 'e yükseltmek için yapılması gereken değişikliklere aşağıdaki bağlantıdan ulaşabilirsiniz;
http://v2.titanphp.com/doc/guncelleme-rehberi


Base Controller

Bir önceki sürümlerde, /App/Controllers dizini içerisinde bulunan BaseController.php dosyası v2.0.8 'de kaldırıldı. Onun yerine base controller olarak da kullanılmak üzere /System/Kernel/Controller.php dosyası eklendi. Controller içerisinde middleware tanımlamayı sağlayan middleware() methodu, bu class içinde yer alıyor.

namespace App\Controllers;

use System\Kernel\Controller;

class Home extends Controller
{
    public function index()
    {
        echo 'Hello world!';
    }
}


Default Middleware

Projenin tamamında çalıştırılmak istenen middleware'lar için, default middleware tanımlama özelliği getirildi. Bu middleware'lar /App/Config/Services.php dosyasında bulunan middleware anahtarındaki default alt anahtarına tanımlanabilir.

'middlewares' => [
    'default' => [
        'Csrf'  => App\Middlewares\Csrf::class
    ]
]


Controller İçinde Middleware Çalıştırma

Bir controller'da çalıştırılmak istenen middleware'lar artık ilgili controller içinde de tanımlanabilir. Bunun için, __construct() methodu içerisinde $this->middleware() methodu kullanılır. Çalıştırılmak istenen middleware'lar, bir dizi içerisinde parametre olarak verilir.

namespace App\Controllers;

use System\Kernel\Controller;

class Home extends Controller
{
    public function __construct()
    {
        $this->middleware(['auth']);
    }
}


Config Helper

/App/Config dizininde bulunan ayar dosyalarındaki verilere koalyca erişmeyi sağlayan config() fonksiyonu eklendi. Verinin istendiği dosya adından başlamak üzere, tüm config anahtarları nokta (.) karakteri ile ayrılır ve parametre olarak verilir.

config('app.session.encryption_key'); 
// Returns ['session']['encryption_key'] in /App/Config/App.php


Hash Library

Bcrypt algoritmasını kullanarak veri şifreleme ve doğrulama işlemlerinin yapılmasını kolaylaştıran Hash kütüphanesi eklendi.

Hash::make('hello-world'); 
// $2y$10$UJP4wHBlco6RFh2aMj3SuOe7J.EJ8CAIqpSrXvBxGNLJ2kEfhaHqy

$hashedValue    = '$2y$10$UJP4wHBlco6RFh2aMj3SuOe7J.EJ8CAIqpSrXvBxGNLJ2kEfhaHqy';
$password       = 'hello-world';

if (Hash::check($password, $hashedValue))
    return true;
else
    return false;


Pagination (Sayfalama) Stillerini Özelleştirme

Sayfalama kütüphanesi kullanılarak ekrana basılan sayfa numaralarına, istenen css classlarını atamayı sağlayan iyileştirmeler yapıldı. Böylece artık HTML pagination elemanlarına (ul, li ve active li) dilediğiniz görünümü verebilirsiniz.

Pagination::setUlClass('pagination')
    ->setLiClass('pageNumber')
    ->setLiActiveClass('active')
    ->printLinks();