Oluşturma Kütüphanesi


    × Bunları biliyor muydunuz?
"Başlangıç kontrolcüsü üzerinden $this nesnesini data olarak göndererek statik olmayan sınıflara ilgili data üzerinden erişebilirsiniz."


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


Generate::databases() : array
Generate::model(string $name, array $settings = []) : bool
Generate::controller(string $name, array $settings = []) : bool
Generate::library(string $name, array $settings = []) : bool
Generate::grandVision(mixed $databases = NULL) : bool
Generate::delete(string $name, string $type = 'controller', string $app = DEFAULT_PROJECT) : bool
Generate::settings(array $settings) : this

 

 

# 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();
Info [6.17.0][2021-07-01]

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"' ]
]);
Dosya: Libraries/TestLib.php
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.

Dosya: Models/Visions/UsersVision.php
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');