Harici Kütüphanelerin Entegrasyonu

Titan Web Framework, bünyesinde pek çok kullanışlı kütüphane barındırdığı gibi, kendi yazdığınız ya da kullanmak istediğiniz diğer harici kütüphanelerin de dahil edilip kullanılmasına olanak sağlar.

Harici kütüphaneler Composer paket yöneticisi kullanılarak ya da manuel olarak dosyaların kopyalanması ile dahil edilebilir.

Kütüphane dahil edildikten sonra, /App/Config dizininde bulunan Services.php dosyasında provider ve facade tanımlaması yapılmalıdır.
  1. Composer ile Dahil Etme
  2. Manuel Dahil Etme
  3. Provider ve Facade Tanımlama

Composer ile Dahil Etme

Composer paket yöneticisi kullanarak kütüphane dahil etmek için, framework'ün kurulu olduğu dizin içerisinde aşağıdaki komut çalıştırılır;

$ composer require kutuphane_adi

Diğer bir yöntem ise, kütüphanenin paket ismini, ana dizinde bulunan composer.json dosyasındaki require anahtarına eklemek ve komut satırında composer update komutunu çalıştırmaktır.

"require": {
	"php": ">=5.4.0",
	"filp/whoops": "^2.1",
	"windwalker/edge": "~3.0",
	"kutuphane_adi" : "versiyon_bilgisi"
},

Manuel Dahil Etme

Harici bir kütüphaneyi manuel olarak dahil etmek için, kütüphaneye ait dosyaların, /App/Libs dizini içerisine taşınması gerekir.

Örneğin "DenemeClass" adındaki bir kütüphaneyi Titan'a dahil etmek için, kütüphaneye ait dosyalar, /App/Libs/DenemeDizin dizinine taşınır.

Provider ve Facade Tanımlama

Kütüphane dahil edildikten sonra, /App/Config dizininde bulunan Service.php içerisinde provider ve facade tanımlamaları yapılmalıdır.


# Provider Tanımlama

Provider tanımlamak için, kütüphanenin namespace'i, providers anahtarına eklenir.

// --- [+] /App/Config/Services.php --- //
'providers' => [
	'Deneme'	=> 'App\Libs\DenemeDizin\DenemeClass',
],

# Facade Tanımlama

Kütüphanenin methodlarına statik yöntemle erişebilmek için, ilgili kütüphaneye ait facade oluşturulmalı ve bu facade'ın namespace'i /App/Config dizininde bulunan Service.php dosyasında tanımlanmalıdır.

Örneğimizdeki "DenemeClass" kütüphanesinin facade sınıfı aşağıdaki gibi olmalıdır;

// --- [+] /System/Facades/DenemeClass.php --- //
namespace System\Facades;

use System\Facades\Facade;

class DenemeClass extends Facade
{

	protected static function getFacadeAccessor()
	{
		return 'DenemeClass';
	}

}

Yukarıdaki örnekte oluşturulan facade sınıfına ait namespace, /App/Config/Service.php dosyasında bulunan facades anahtarında tanımlanır.

// --- [+] /App/Config/Services.php --- //
'facades' => [
	'Deneme'	=> 'System\Facades\DenemeClass',
],

Yukarıdaki tanımlamaların ardından, ilgili kütüphane aşağıdaki gibi kullanılabilir;

// --- [+] /App/Controllers/Home.php ---//
namespace App\Controllers;

use Deneme;

class Home
{
	public function index()
	{
		echo Deneme::ornekMethod();
	}
}