Oluşturma Kütüphanesi


    × Bunları biliyor muydunuz?
"External/ dizini tüm projeleriniz için ortak dosya kullanımı sunar."


Generate:: kütüphanesi daha hızlı bir şekilde controller, model ve library taslakları oluşturmak için geliştirilmiştir. Taslak denilmesinin nedeni oluşturulan sınıfların içerinin boş olmasıdır. Daha doğrusu sınıf iskeleti olmasıdır. Kullanımı ile ilgili örnekler aşağıda verilmiştir.

 

 

# Kurulum


ZN SE ve ZN CE dağıtımları için terminal kurulum komutu.

↓ composer require znframework/package-generator

 

 

# Yöntemler


Void databases(Void)
Bool model(String $name, Array $settings = [])
Bool controller(String $name, Array $settings = [])
Bool library(String $name, Array $settings = [])
Bool grandVision(Mixed $databases = NULL)
Bool delete(String $name, String $type = 'controller', String $app = DEFAULT_PROJECT)
This settings(Array $settings)

 

 

# 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.

Parametreler

Void
Return Bool

Konsol Kullanımı

php zerocore generate-databases

Kullanımı

Generate::databases();

 

 

# Controller (ZN >= 4.0.1)


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 (ZN >= 4.0.1)


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 (ZN >= 4.0.1)


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 Void

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 (ZN >= 4.0.1)


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');