Oluşturma Kütüphanesi
"Şablon sihirbazında (Wizard) (5.5.60) sürümünden beri döngülerin sonunda kullanılan : sembolünün kullanım zorunluluğu kaldırılmıştır."
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
ZN dağıtımları için kurulum gerekmez.
↓ composer require znframework/package-generator
# 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 (ZN >= 4.3.0)
Databases/ dizininde tasarlanan yapıyı uygulamak için kullanılır. Detaylar için bakınız.
return array |
Konsol Kullanımı
php zerocore generate-databases
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 zerocore create-controller 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 zerocore create-model 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 (ZN >= 4.0.23)
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 zerocore 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 InternalUsersVision 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' => 'zn', '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');