Konsol Komutları
"Databases/ dizini bir veritabanı tablolarının şemasını oluşturup Generate::databases() komutu ile bu şemanın gerçek bir veritabanı ve tablo olarak işlenmesini sağlayabilirsiniz."
İşletim sistemlerinde terminal üzerinden komut çalıştırmak için geliştirilmiştir.
# Kurulum
ZN dağıtımları için kurulum gerekmez.
↓ composer require znframework/package-console
# Söz Dizimi
php | zerocore | [project-name] | command | [parameters] |
Php yolu. | Kök dizindeki zerocore dosyasının yolu. | ZN FE ve ZN OE dağıtımlarında Projects/ dizini içerisinde yer alan ön tanımlı proje dizini (Frontend) dışında farklı bir proje üzerinde komut çalıştırmanız gerektiği durumda kullanır. | Komutlardan herhangi biri. | Varsa parametreler. |
Aşağıda sistem genelinde ki tüm yapılara ulaşabilmeyi sağlayan komutlar yer almaktadır.
php zerocore [project-name ProjectName] run-command command:method p1 p2 p 3 ... pN
php zerocore [project-name ProjectName] run-uri controller/function/p1/p2 ... /pN
php zerocore [project-name ProjectName] run-controller controller/function
php zerocore [project-name ProjectName] run-class controller:function p1 p2 ... pN
php zerocore [project-name ProjectName] run-model model:function p1 p2 p3 ... pN
php zerocore [project-name ProjectName] run-function function p1 p2 p 3 ... pN
Aşağıda tema entegrasyon işlemini başlatmak için kullanılan komutlar yer alır.
Aşağıda ZN Framework sürümün yükseltme komutları yer almaktadır.
Aşağıdaki komut son yapılan upgrade işlemini geri almak için kullanılır.
Aşağıda Crontab ile zamanlanmış görev yönetimi komutları yer almaktadır.
php zerocore [project-name ProjectName] run-cron controller/method time1 value1 ...
php zerocore [project-name ProjectName] cron-list
php zerocore [project-name ProjectName] remove-cron cronID
Aşağıda generate kütüphanesinin yeteneklerini kullanan komutlar yer almaktadır.
php zerocore create-project project name
php zerocore delete-project project name
php zerocore [project-name ProjectName] create-controller controller name
php zerocore [project-name ProjectName] delete-controller controller name
php zerocore [project-name ProjectName] create-model model name
php zerocore [project-name ProjectName] create-grand-model model name
php zerocore [project-name ProjectName] delete-model model name
php zerocore [project-name ProjectName] create-grand-vision [database name]
php zerocore [project-name ProjectName] delete-grand-vision [database name]
php zerocore [project-name ProjectName] generate-databases
php zerocore [project-name ProjectName] clean-cache
Yukarıdakı kullanımların dışında kalan standart terminal komutlarını kullanabilirsiniz.
composer require monolog/monolog
# run-command
Konsol kullanarak Projects/ProjectDirectory/Commands/ dizini altındaki komut sınıflarını çalıştırmak için kullanılır. Komut dosyalar terminal üzerinden çalıştırılabileceği gibi Async:: sınıf ile kontrolcüler üzerinden de tetiklenebilir.
Yukarıda belirtilen istisnalar dışında tüm sistem, kullanıcı ve composer kütüphanelerine doğrudan erişim sağlanabilir.
<?php namespace Project\Commands;
use Email;
class ExampleCommand extends Command
{
public function run($to)
{
Email::to($to)->send('Subject', 'Message');
}
}
php zerocore run-command ExampleCommand:run example@example.com
Yukarıdaki kullanımın kısa formudur.
php zerocore ExampleCommand:run example@example.com
php zerocore run-external-command ExampleCommand:run example@example.com
Yazılan komutları PHP üzerinden asenkron olarak çalıştırmakta mümkündür. Bunun için Async:: sınıf geliştirilmiştir. Bu sınıf sayesinde ön tarafta herhangi bir geçikmeye olmazken işlemler arkaplanda devam eder. Özellikle e-posta gönderimi gibi geçikmeye neden olan işlemler için kullanışlıdır.
İlgili komut dosyasına çalıştırma isteği gönderir.
string $command
Çalıştırılacak Commands/Command.php dosyası. array $data = []
İlgili komut dosyasına gönderilecek datalar. Gönderilecek datalar scalar|array türden olabilir. Gönderilen datalar bir dosya üzerine yazıldığından callable vb. türde verilerin gönderilebilmesi mümkün değildir. return string
İlgili işlemin ID'sini döndürür. ID bilgisi '64d20043cecbf' buna benzer eşsiz bir dosya adıdır. Dosya: Controllers/Example.phpKomut çalıştırma isteği ve beraberinde gönderilecek parametreler ilgili kontrolcüye yazılır. Bu yöntem çalıştırıldıktan sonra ilgili işlemle ilgili dosya Id bilgisi döndürür. Bu bilgiyi daha sonra işlemlerin tamamlanıp tamamlanmadığını kontrol etmek için kullanabilirsiniz.
public function main() { $procId = Async::run('SendMail:run', [ 'email' => 'example@mail.com', 'title' => 'Example', 'content' => 'Example Content' ]); }
Arkaplanda işleyecek kodlar.
string $procId
İşlem ID bilgisi. Bu bilgi aslında ilgili işlemin verilerinin yer aldığı dosya adıdır. Ve her işlem için eşsiz bir işlem dosyası oluşturulur. İşlemin başarı ile tamamlanmasından sonra bu dosya kendiliğinden silinir. callable $callable Çalıştırılacak kodların yazılacağı parametre. bool $displayError = false
[8.5.0][2023-08-08] Arkaplanda yürütme isteği sonrası oluşabilecek hataların {procId}-error formatında bir dosyaya yazılıp yazılmayacağı. Bu değerin true olarak ayarlanması oluşan hataların daha kolay farkedilmesi adına tavsiye edilir. Dosya: Commands/SendMail.phppublic function run($procId) { Async::process($procId, function($data) { try { Email::to($data['email'])->send($data['title'], $data['content']); } catch( Exception $e ) { Async::report(['error' => $e->getMessage()]); } }); }
Kodun çalışması dışında oluşacak hataları raporlamak için Async::report() yöntemi kullanılır. Bu yöntem herhangi bir değişiklik yapılmamışsa FILES_DIR sabitinin gösterdiği dizine procId-report formunda bir dosya oluşturur.
Bilgi: $data parametresi içerisinden işlemin durumu ile ilgili 'satus' anahtarlı bir durum dizisi saklar.Uyarı: $procId eşsiz işlem anahtarıdır ve sıraya alınan işlemlerin bir birinden ayrılması için gereklidir.Dikkat: Komut dosyalarının çalışması esnasında Starting dosyaları ve Başlangıç kontrolcüleri devreye girmez. Bu nedenle e-posta ve veritabanı gibi ayarların ayrıca ilgili komut dosyasında yapılandırılması gerekir.
Async::process() yönteminin 3. parametresinin true olarak ayarlanması durumunda arkaplanda çalışan kod üzerinde oluşan denetlenebilir hataların procId-error dosyasına yazılmasını sağlar. Böylece hatanın neyden kaynaklandığının tespitinde kolaylık sağlanmış olur.
DisplayError [8.6.0][2023-08-08]
$displayError parametresi true olan işlemlerde gerçekleşen hataların yazdılığı dosyanın içeriğinin anlaşılabilir şekilde görüntülenmesini sağlar.
string $errorFile
Hata içeriği gösterilecek işlemin hata dosyası adı. return string Hata içeriği. Dosya: Controllers/DisplayError.phppublic function main() { $errorFile = '64d20043cecbf-error'; echo Async::displayError($errorFile); exit; }
Yukarıda yer alan örnekteki gibi bir kontrolcü yardımı ile ilgili hata dosyasının görüntülenmesini sağlayabilirsiniz.
İşlem dosyaları varsayılan olarak FILES_DIR sabitinin gösterdiği konuma kaydeder. Bunu değiştirmek için bu yöntemden yararlanılır. Bu yöntemle konum değiştirmenin tüm işlemleri etkilemesi isteniyorsa başlangıç kontrolcüsü içerisinde kullanılabilir.
string $location
Hata içeriği gösterilecek işlemin hata dosyası adı. return this Dosya: Controllers/Initialize.phppublic function main() { Async::setProcDirectory(FILES_DIR . 'procs/'); }
Yukarıda yer alan örneğe göre artık ilgili işlem dosyalarının yolu Projects/Frontend/Resources/Files/procs/ dizini olacaktır.
İşlem ID'lerine göre işlemi devam edenleri dizi türünde döndür. Yani istekten sonra işlemi hala devam ediyor olanları listeler. Bu yöntemin doğru kullanımı asenkron çalıştırma başladıktan sonra bir ajax isteği ile belli bir perioda bu yöntemin sonucunun istenmesi şeklinde olacaktır.
string ...$procId
Durumu kontrol edilecek işlem ID veya ID'ler. return array Durumu devam eden işlemleri [$file1 => 1, $file2 => 2] biçiminde gösteren dizi döndürür. Dosya: Controllers/AjaxProcessComplete.phppublic function status() : void { $status = Async::status(...Post::procIds()); echo in_array(1, $status); # İçinde tamamlanmamış olan var mı? }
$status işlemi devam edenleri listeyelen aşağıdaki gibi bir dizi üretir.
[
'process-file-1' => 1,
'process-file-2' => 1
]
İşlem ID'lerine göre işlemlerin bitip bitmediğini döndürür. İşlemlerin hepsi bitmişse true en az biri bile bitmemişse false değeri döndürür. Bu yöntemin doğru kullanımı asenkron çalıştırma başladıktan sonra bir ajax isteği ile belli bir perioda bu yöntemin sonucunun istenmesi şeklinde olacaktır.
string ...$procId
Durumu kontrol edilecek işlem ID veya ID'ler. return bool Durumu devam eden işlem varsa false yoksa true türünde değer döndürür. Dosya: Controllers/AjaxProcessComplete.phppublic function isFinish() : void { echo Async::isFinish(...Post::procIds()); }
# run-uri / run-controller
Konsoldan kontrolcü çalıştırmak için kullanılır.
php zercore run-uri comments/view
Eğer farklı bir proje kontrolcüsüne istek yapılmak isternirse aşağıdaki gibi kullanılabilir.
php zerocore project-name OthersProject run-uri comments/view
# run-class / run-model
Konsoldan kütüphane çalıştırmak için kullanılır.
php zerocore run-class Migration:create Blog 1
php zerocore run-class MigrateBlog:up
php zerocore run-class MigrateBlog:down
php zercore run-class Migation:delete Blog
# run-function
Konsoldan fonkisyon çalıştırmak için kullanılır.
php zerocore run-function exampleFunction
# run-external-command
Konsol kullanarak Projects/ProjectDirectory/Commands/ dizini altındaki komut sınıflarını çalıştırmak için kullanılır. Kontrolcü üzerinden çalıştırmayı denerseniz hata ile karşılaşırsınız. Bu yapı sadece konsol üzerinden yapılan isteklerle çalışır.
<?php namespace External\Commands;
use Email;
class ExampleCommand extends Command
{
public function run($to)
{
Email::to($to)->send('Subject', 'Message');
}
}
php zerocore run-external-command ExampleCommand:run example@example.com
Yukarıdaki kullanımın kısa formudur.
php zerocore External\ExampleCommand:run example@example.com
# upgrade
Framework'ü güncellemek için kullanılır. Güncelleme başarılı olursa mesaj verir. Başarılı olmazsa herhangi bir çıktı üretmez.
php zerocore upgrade
# undo-upgrade
Gerçekleştirilen son yükseltme işlemini geri almak için oluşturulmuştur. Yükseltmenin istenmeyen bir çalışma biçimine neden olması durumunda bu komut ile yükseltmeyi geri alabilirsiniz.
php zerocore undo-upgrade
# run-cron
Crontab kütüphanesi ve yöntemlerini çalıştırmak için kullanılır. Bu komutla controller, command ve url çalıştırılabilir.
php zerocore run-cron home/main month october day saturday clock 12:00
php zerocore run-cron EmailCommand:sendMail daily
php zerocore run-cron http://example.com/ day monday clock 10:30
# cron-list
Zamanlanmış görevlerin listesini verir.
php zerocore cron-list
# remove-cron
Zamanlanmış görevi silmek için kullanılır. Silme işlemi silinecek görevin cron-list'deki id değerine göre yapılır.
php zerocore remove-cron 1
# create-project
Multi-edition'da Projects/ dizinine yeni bir proje açmak için kullanılır.
php zerocore create-project NewProject
# delete-project
Multi-edition'da Projects/ dizininde ki belirtilen projeyi silmek için kullanılır.
php zerocore delete-project NewProject
# create-controller
Kontrolcü oluşturmak için kullanılır. Proje adı belirtilmezse varsayılan proje dizini(Genellikle Frontend/) içerisinde yer alan Controllers/ dizini içerisinde bu işlem gerçekleşir.
php zerocore create-controller MyController
Varsayılan proje dışında farklı bir proje dizininde bu kontrolcüyü oluşturmak için komut aşağıdaki gibi düzenlenir.
php zerocore project-name Backend create-controller MyController
# delete-controller
Kontrolcü silmek için kullanılır.
php zerocore delete-controller MyController
# create-model
Model oluşturmak için kullanılır. Proje adı belirtilmezse varsayılan proje dizini(Genellikle Frontend/) içerisinde yer alan Models/ dizini içerisinde bu işlem gerçekleşir.
php zerocore create-model MyModel
Varsayılan proje dışında farklı bir proje dizininde bu modeli oluşturmak için komut aşağıdaki gibi düzenlenir.
php zerocore project-name Backend create-model MyModel
# create-grand-model
Grand Model oluşturmak için kullanılır. Model sınıfı GrandModel sınıfı ile genişletilerek oluşturulur.
php zerocore create-grand-model MyModelGrand
# delete-model
Modeli silmek için kullanılır.
php zerocore delete-model MyModel
# create-grand-vision
Veritabanının tüm tabloları ile aynı isimle GrandModel sınıfları oluşturmak için kullanılır. Veritabanı adı belirtilmezse varsayılan olarak ayarlanan veritabanı adı kabul edilir.
php zerocore create-grand-vision
Varsayılan veritabanı dışında başka bir veritabanına ait tablolardan model dosyaları oluşturmak için kullanılır.
php zerocore create-grand-vision OtherDatabase
# delete-grand-vision
Oluşturulan vizyon modellerini silmek için kullanılır.
php zerocore delete-grand-vision OtherDatabase
# generate-databases
Databases/ dizinine tasarladığınız yapının işlenmesini sağlar.
php zerocore generate-databases
# clean-cache
Storate/Cache/ dizininin temizlenmesini sağlar.
php zerocore clean-cache