Oluşturma Kütüphanesi
Generate:: kütüphanesi daha hızlı bir şekilde controller, model ve library şablonu oluşturmak için geliştirilmiştir. Kullanımı ile ilgili örnekler aşağıda verilmiştir. # Kurulum KUT Full Pac…
This article is currently available in Turkish. Its English translation is being prepared.
Generate:: kütüphanesi daha hızlı bir şekilde controller, model ve library şablonu oluşturmak için geliştirilmiştir. Kullanımı ile ilgili örnekler aşağıda verilmiştir.
Kurulum
Bu bileşen KUT ile birlikte gelir; ayrıca kurulum gerektirmez.
↓ Paket KUT ile birlikte gelir.
Yöntemler
Ayarlar Parametresi
Library, model veya controller oluşturulurken bu dosyalarının içeriğinin nasıl olacağı ile ilgili ayarlara yer verilir. Aşağıdaki yöntemlerin 2. parametresi bu ayarları içerecek olan dizi parametresidir. Ya da settings() yönteminden de yararlanabilirsiniz. Bu parametrenin alabileceği dizi argümanları hakkında bilgi verelim.
| Türü | Anahtar | Anlamı |
| string | object | Nesne türü ayarlanır. Class dışında interface veya abstract class oluşturmak isterseniz bu parametre ayarlanabilir. |
| string | namespace | Dosyaya isim alanı tanımlamak için kullanılır. |
| array | use | Dosyaya use ile isim alanına sahip sınıfların tanımlamasını yapmak için kullanılır. |
| string | extends | Sınıfınıza genişletme sınıfı dahil etmek için kullanılır. |
| string |
implements |
Sınıfınıza isim alanları dahil etmek için kullanılır. |
| array | traits | Sınıfınıza traitler eklemek için kullanılır. |
| array | vars | Sınıfınıza değişkenler tanımlamak için kullanılır. |
| array | constants | Sınıfınıza sabitler tanımlamak için kullanılır. |
| array | functions | Sınıfınıza fonksiyonlar tanımlamak için kullanılır. |
# Databases KUT 1.0’da desteklenir
Databases/ dizininde tasarlanan yapıyı uygulamak için kullanılır. Detaylar için {{bakınız}}.
| return array |
Konsol Kullanımı
php buyruk database:generate
Kullanımı
Generate::databases();
Bu yöntem artık oluşturma işlemi esnasında gerçekleşen işlemler ve işlemlerin başarı ile yapılıp yapılmadığı hakkında bilgi veren bir dizi döndürmektedir.
output( Generate::databases() );
# Controller
Kontrolcü dosyası oluşturmak için kullanılır.
Parametreler
| string $name | Dosya adı. |
| array $parameters | Dosyada yer alacak içerikler. |
| return bool | |
Konsol Kullanımı
php buyruk controller:create MyController
Kullanımı
Generate::controller('Example',
[
'extends' => 'Controller',
'functions' => ['main', 'test']
]);
Farklı Proje Üzerinde Oluşturma
Farklı bir proje içerisine kontrolcü eklemek isterseniz;
Generate::controller('TestLib',
[
'application' => 'OtherApp',
'extends' => 'Controller',
'functions' => ['main', 'test']
]);
# Model
Model dosyası oluşturmak için kullanılır.
Parametreler
| string $name | Dosya adı. |
| array $parameters | Dosyada yer alacak içerikler. |
| return bool | |
Konsol Kullanımı
php buyruk model:create MyModel
Kullanımı
Generate::model('TestLib',
[
'extends' => 'GrandModel',
'constants' => ['key' => '"value"']
]);
# Library
Kütüphane dosyası oluşturmak için kullanılır.
Parametreler
| string $name | Dosya adı. |
| array $parameters | Dosyada yer alacak içerikler. |
| return bool | |
Kullanımı
Generate::library('TestLib',
[
'implements' => 'TestLibInterface',
'extends' => 'Controller',
'namespace' => 'TestExample',
'use' => ['Folder', 'File' => 'F'],
'functions' => ['main', 'test' => ['a', 'b' => '10', '...args']],
'constants' => ['TEST' => '"Test"', 'NUM' => '10'],
'traits' => ['abc', 'xxx'],
'vars' => ['protected:test' => '10', 'examples', 'test2' => '"Test"' ]
]);
namespace TestExample;
use Folder;
use File as F;
class TestLib extends Controller implements TestLibInterface
{
use abc;
use xxx;
const TEST = "Test";
const NUM = 10;
protected $test = 10;
public $examples = 10;
public $test2 = "Test";
public function main()
{
// Your codes...
}
public function test($a, $b = 10, ...$args)
{
// Your codes...
}
}
# GrandVision KUT 1.0’da desteklenir
Bu yöntemin kullanımı için önce veritabanı bağlantıların yapılmış olması gerekir. Veritabanında bulunan tabloların her birini model dosyası haline getirip doğrudan tablolar ile çalışılmasını sağlar. Bu yöntemin çalıştırılmasından sonra Models/Visions/ dizini altında mevcut veritabanına ait tabloların dosyalandığını görebilirsiniz. Örneğin tablo adı Users ise bu isimde bir model dosyası oluştuğunu kabul edersek bunu kullanabilmek için sınıf adı ve Vision son eki kullanmanız gerekir. UsersVision::result() gibi.
Parametreler
| mixed $databases = NULL | Veritabanı adı veya adları. Parametre belirtilmezse tüm veritabanına ait tablolara ait modeller oluşturulur. |
| return bool | |
Konsol Kullanımı
php buyruk create-grand-vision
Kullanımı
Generate::grandVision();
Yukarıdaki yöntem çalıştırıldıktan sonra Models/Visions/ dizini içinde tablo modelleri oluşturulur. Bu modeller GrandModel genişletmesi ile kullanılır. Yani veritabanı bölümünde bahsi geçen GrandModel genişletmesine yönelik kullanımlar söz konusudur. Oluşturulan dosyanın içeriği aşağıdaki gibidir.
namespace VisionsTest;
use GrandModel;
class FacadeUsersVision extends GrandModel
{
const table = 'users';
}
Modellerin Kullanımı
Oluşturulan bu model dosyalarını kullanmak için;
output( UsersVision::row() );
output( UsersVision::totalRows() );
output( UsersVision::drop() );
Çoklu Veritabanı Kullanımı
Eğer birden fazla veritabanı kullanımı gerektiren durumlarda veritabanı isimleri dışında diğer ayarlarda farklılık gösteriyorsa parametre gönderimi zorunlu hale gelir.
Generate::grandVision
([
'Test' => ['user' => 'KUT', 'password' => '1234'],
'Example' => ['user' => 'zero', 'password' => '4242']
]);
Yukarıdaki örnekte 2 farklı veritabanına ait model dosyalarının birbirinden farklı ayarlar ile oluşturulması gösterilmiştir.
Yukarıda bahsi geçen Users tablosu örnek bir isimdir. Bu model dosyası ile hangi yöntemlerin kullanılabildiğini görmek için Grand Genişletmesi anlatımına bakınız.
# Settings
Opsiyonel yöntemdir. 2. parametre yerine kullanılabilir.
Parametreler
| array $parameters | Dosyada yer alacak içerikler. |
| return this | |
Kullanımı
Generate::settings
([
'extends' => 'GrandModel',
'constants' => ['key' => '"value"']
])->model('TestLib');
İç içe proje üretimi
Generator aktif proje yolunu PROJECTS_DIR köküne göre çözer. FastRead/Site etkinse üretilen controller Projects/FastRead/Site/Controllers altında oluşturulur; yol Projects/Site biçiminde kısaltılmaz.