Artisan Konsolu
- giriiş
- Komut Yazma
- Girdi Beklentilerini Tanımlama
- Komut G/Ç
- Komutları Kaydetme
- Program Aracılığıyla Komutları Yürütme
- Sinyal İşleme
- Saplama Özelleştirme
- Olaylar
giriş
Artisan, Laravel’in içerdiği komut satırı arayüzüdür. Artisan, uygulamanızın kökünde artisan
komut dosyası olarak bulunur ve uygulamanızı oluştururken size yardımcı olabilecek bir dizi yararlı komut sağlar. Mevcut tüm Artisan komutlarının bir listesini görüntülemek için şu komutu kullanabilirsiniz list
:
php artisan list
Örnek; yukarıda ki komutu verdiğimizde ekrana yazan bilgileri aşağıda bulabilir siniz.
Laravel Framework 9.52.16
Kullanımı:
command [options] [arguments]
Seçenekler:
-h, --help Display help for the given command. When no command is given display help for the list command
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi|--no-ansi Force (or disable --no-ansi) ANSI output
-n, --no-interaction Do not ask any interactive question
--env[=ENV] The environment the command should run under
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Mevcut komutlar:
about Display basic information about your application
clear-compiled Remove the compiled class file
completion Dump the shell completion script
db Start a new database CLI session
docs Access the Laravel documentation
down Put the application into maintenance / demo mode
env Display the current framework environment
help Display help for a command
inspire Display an inspiring quote
list List commands
migrate Run the database migrations
optimize Cache the framework bootstrap files
serve Serve the application on the PHP development server
test Run the application tests
tinker Interact with your application
up Bring the application out of maintenance mode
auth
auth:clear-resets Flush expired password reset tokens
cache
cache:clear Flush the application cache
cache:forget Remove an item from the cache
cache:table Create a migration for the cache database table
coinpayment
coinpayment:activate Activate ladmin coinpayment plugin
coinpayment:install Coinpayment instalation wizard
config
config:cache Create a cache file for faster configuration loading
config:clear Remove the configuration cache file
db
db:monitor Monitor the number of connections on the specified database
db:seed Seed the database with records
db:show Display information about the given database
db:table Display information about the given database table
db:wipe Drop all tables, views, and types
debugbar
debugbar:clear Clear the Debugbar Storage
env
env:decrypt Decrypt an environment file
env:encrypt Encrypt an environment file
event
event:cache Discover and cache the application's events and listeners
event:clear Clear all cached events and listeners
event:generate Generate the missing events and listeners based on registration
event:list List the application's events and listeners
jwt
jwt:generate-certs Generates a new cert pair
jwt:secret Set the JWTAuth secret key used to sign the tokens
key
key:generate Set the application key
make
make:cast Create a new custom Eloquent cast class
make:channel Create a new channel class
make:command Create a new Artisan command
make:component Create a new view component class
make:controller Create a new controller class
make:event Create a new event class
make:exception Create a new custom exception class
make:factory Create a new model factory
make:job Create a new job class
make:listener Create a new event listener class
make:mail Create a new email class
make:middleware Create a new middleware class
make:migration Create a new migration file
make:model Create a new Eloquent model class
make:notification Create a new notification class
make:observer Create a new observer class
make:policy Create a new policy class
make:provider Create a new service provider class
make:request Create a new form request class
make:resource Create a new resource
make:rule Create a new validation rule
make:scope Create a new scope class
make:seeder Create a new seeder class
make:test Create a new test class
migrate
migrate:fresh Drop all tables and re-run all migrations
migrate:install Create the migration repository
migrate:refresh Reset and re-run all migrations
migrate:reset Rollback all database migrations
migrate:rollback Rollback the last database migration
migrate:status Show the status of each migration
model
model:prune Prune models that are no longer needed
model:show Show information about an Eloquent model
notifications
notifications:table Create a migration for the notifications table
optimize
optimize:clear Remove the cached bootstrap files
package
package:discover Rebuild the cached package manifest
queue
queue:batches-table Create a migration for the batches database table
queue:clear Delete all of the jobs from the specified queue
queue:failed List all of the failed queue jobs
queue:failed-table Create a migration for the failed queue jobs database table
queue:flush Flush all of the failed queue jobs
queue:forget Delete a failed queue job
queue:listen Listen to a given queue
queue:monitor Monitor the size of the specified queues
queue:prune-batches Prune stale entries from the batches database
queue:prune-failed Prune stale entries from the failed jobs table
queue:restart Restart queue worker daemons after their current job
queue:retry Retry a failed queue job
queue:retry-batch Retry the failed jobs for a batch
queue:table Create a migration for the queue jobs database table
queue:work Start processing jobs on the queue as a daemon
route
route:cache Create a route cache file for faster route registration
route:clear Remove the route cache file
route:list List all registered routes
sanctum
sanctum:prune-expired Prune tokens expired for more than specified number of hours
schedule
schedule:clear-cache Delete the cached mutex files created by scheduler
schedule:list List all scheduled tasks
schedule:run Run the scheduled commands
schedule:test Run a scheduled command
schedule:work Start the schedule worker
schema
schema:dump Dump the given database schema
session
session:table Create a migration for the session database table
storage
storage:link Create the symbolic links configured for the application
stub
stub:publish Publish all stubs that are available for customization
vendor
vendor:publish Publish any publishable assets from vendor packages
view
view:cache Compile all of the application's Blade templates
view:clear Clear all compiled view files
Umarım yukarıda ki bilgiler sizlere yardımcı oluyordur.
Her komut aynı zamanda komutun mevcut argümanlarını ve seçeneklerini görüntüleyen ve açıklayan bir “yardım” ekranı içerir. Yardım ekranını görüntülemek için komut adının önüne şunu koyun help
:
php artisan help migrate
Bu komutu girdiğmizde aşağıdaki bilgiler gelir;
Tanım:
Veritabanı geçişlerini çalıştırın
Kullanımı:
taşıma [seçenekler]
Description:
Run the database migrations
Usage:
migrate [options]
Seçenekler:
–database[=DATABASE] Kullanılacak veritabanı bağlantısı
–force Üretimdeyken işlemi çalıştırmaya zorlayın
–path[=PATH] Yürütülecek geçiş dosyalarının yolu (birden fazla değere izin verilir)
–realpath Sağlanan geçiş dosyası yollarının önceden çözümlenmiş mutlak yollar olduğunu belirtin
–schema-path[=SCHEMA-PATH] Şema döküm dosyasının yolu
–pretend Çalıştırılacak SQL sorgularının dökümünü alın
–seed Çekirdek görevin yeniden çalıştırılması gerekip gerekmediğini belirtir
–seeder[=SEEDER] Kök ekicinin sınıf adı
–step Taşıma işlemlerinin tek tek geri alınabilmesi için çalıştırılmaya zorlanması
–isolated[=ISOLATED] Komutun başka bir örneği zaten çalışıyorsa komutu çalıştırmayın [varsayılan: false]
-h, –help Verilen komut için yardımı görüntüler. Hiçbir komut verilmediğinde liste komutu için yardım görüntüle
-q, –quiet Herhangi bir mesaj çıktısı verme
-V, –version Bu uygulama sürümünü görüntüle
–ansi|–no-ansi ANSI çıkışını zorla (veya devre dışı bırak) –no-ansi
-n, –no-interaction Etkileşimli soru sormayın
–env[=ENV] Komutun altında çalışması gereken ortam
-v|vv|vvv, –verbose Mesajların ayrıntı düzeyini artırın: Normal çıktı için 1, daha ayrıntılı çıktı için 2 ve hata ayıklama için 3
Yerel geliştirme ortamınız olarak Laravel Sail’i kullanıyorsanız sail
Artisan komutlarını çağırmak için komut satırını kullanmayı unutmayın . Sail, Artisan komutlarınızı uygulamanızın Docker kapsayıcılarında yürütecektir:
./vendor/bin/sail artisan list
Laravel Tinker (Tamirci), Laravel çerçevesi için PsySH paketi tarafından desteklenen güçlü bir REPL’dir .
Kurulumu
Tüm Laravel uygulamaları varsayılan olarak Tinker’ı içerir. Ancak Tinker’ı daha önce uygulamanızdan kaldırdıysanız Composer’ı kullanarak yükleyebilirsiniz:
composer require laravel/tinker
Laravel uygulamanızla etkileşimde bulunurken çalışırken yeniden yükleme, çok satırlı kod düzenleme ve otomatik tamamlama mı arıyorsunuz? Tinkerwell’e göz atın !
Kullanım
Tinker, Eloquent modelleriniz, işleriniz, etkinlikleriniz ve daha fazlası dahil olmak üzere Laravel uygulamanızın tamamıyla komut satırı üzerinden etkileşim kurmanıza olanak tanır. Tinker ortamına girmek için tinker
Artisan komutunu çalıştırın:
Tinker’in yapılandırma dosyasını şu komutu kullanarak yayınlayabilirsiniz vendor:publish
:
Sınıftaki yardımcı işlev ve yöntem, işi
dispatch
kuyruğa yerleştirmek için çöp toplamaya bağlıdır. Bu nedenle, tinker’ı kullanırken işleri dağıtmak için veya kullanmalısınız .dispatch
Dispatchable
Bus::dispatch
Queue::push
Komut İzin Listesi
Tinker, kabuğunda hangi Artisan komutlarının çalıştırılmasına izin verildiğini belirlemek için bir “izin ver” listesi kullanır. Varsayılan olarak clear-compiled
, down
, env
, inspire
, migrate
, optimize
ve komutlarını çalıştırabilirsiniz up
. Daha fazla komuta izin vermek istiyorsanız bunları yapılandırma commands
dosyanızdaki diziye ekleyebilirsiniz tinker.php
:
Takma Ad Kullanılmaması Gereken Sınıflar
Tipik olarak Tinker, Tinker’da onlarla etkileşim kurduğunuzda sınıflara otomatik olarak takma ad verir. Ancak bazı sınıflara asla takma ad vermemek isteyebilirsiniz. Bunu , yapılandırma dosyanızın dont_alias
dizisindeki sınıfları listeleyerek gerçekleştirebilirsiniz :tinker.php
Komut Yazma
Artisan ile sağlanan komutlara ek olarak kendi özel komutlarınızı oluşturabilirsiniz. Komutlar genellikle dizinde saklanır app/Console/Commands
; ancak komutlarınız Composer tarafından yüklenebildiği sürece kendi depolama konumunuzu seçmekte özgürsünüz.
Komut Oluşturma
Yeni bir komut oluşturmak için Artisan komutunu kullanabilirsiniz make:command
. Bu komut dizinde yeni bir komut sınıfı yaratacaktır app/Console/Commands
. Bu dizin uygulamanızda yoksa endişelenmeyin; Artisan komutunu ilk kez çalıştırdığınızda oluşturulacaktır make:command
:
Komut Yapısı
Komutunuzu oluşturduktan sonra sınıfın signature
ve özelliklerine uygun değerleri tanımlamalısınız . description
Bu özellikler, komutunuzu ekranda görüntülerken kullanılacaktır list
. Bu özellik ayrıca komutunuzun giriş beklentilerinisignature
tanımlamanıza da olanak tanır . Komutunuz yürütüldüğünde yöntem çağrılacaktır . Komut mantığınızı bu yönteme yerleştirebilirsiniz.handle
Örnek bir komuta bakalım. İhtiyacımız olan tüm bağımlılıkları komutun yöntemi aracılığıyla isteyebileceğimizi unutmayın handle
. Laravel hizmet kapsayıcısı, bu yöntemin imzasında tür ipuçları verilen tüm bağımlılıkları otomatik olarak enjekte edecektir:
Kodun daha fazla yeniden kullanımı için, konsol komutlarınızı hafif tutmak ve görevlerini yerine getirmek için uygulama hizmetlerine ertelemelerine izin vermek iyi bir uygulamadır. Yukarıdaki örnekte, e-posta göndermenin “ağır yükünü” üstlenmek için bir hizmet sınıfı enjekte ettiğimizi unutmayın.
Kapatma Komutları
Kapatma tabanlı komutlar, konsol komutlarını sınıflar olarak tanımlamaya bir alternatif sağlar. Rota kapanışlarının denetleyicilere bir alternatif olduğu gibi, komut kapanışlarını da komut sınıflarına bir alternatif olarak düşünün.
Dosya HTTP rotalarını tanımlamasa da routes/console.php
uygulamanıza konsol tabanlı giriş noktalarını (rotaları) tanımlar. Bu dosya içerisinde tüm kapatma tabanlı konsol komutlarınızı yöntemini kullanarak tanımlayabilirsiniz Artisan::command
. Yöntem command
iki argümanı kabul eder: komut imzası ve komutun argümanlarını ve seçeneklerini alan bir kapanış:
Kapatma, temeldeki komut örneğine bağlıdır, dolayısıyla tam komut sınıfında genellikle erişebileceğiniz tüm yardımcı yöntemlere tam erişime sahip olursunuz.
Tip-İpucu Bağımlılıkları
Komutunuzun argümanlarını ve seçeneklerini almanın yanı sıra, komut kapanışları aynı zamanda hizmet kapsayıcısının dışında çözülmesini istediğiniz ek bağımlılıkları da belirtebilir :
Kapatma Komutu Açıklamaları
purpose
Kapatmaya dayalı bir komut tanımlarken, komuta bir açıklama eklemek için yöntemi kullanabilirsiniz . Bu açıklama php artisan list
veya komutlarını çalıştırdığınızda görüntülenecektir php artisan help
:
Yalıtılabilir Komutlar
Bu özelliği kullanmak için uygulamanızın, uygulamanızın varsayılan önbellek sürücüsü olarak
memcached
,redis
,dynamodb
,database
,file
veya önbellek sürücüsünü kullanıyor olması gerekir.array
Ayrıca tüm sunucuların aynı merkezi önbellek sunucusuyla iletişim kurması gerekir.
Bazen bir komutun yalnızca bir örneğinin aynı anda çalışabileceğinden emin olmak isteyebilirsiniz. Bunu başarmak için Illuminate\Contracts\Console\Isolatable
arayüzü komut sınıfınıza uygulayabilirsiniz :
Bir komut olarak işaretlendiğinde Laravel komuta Isolatable
otomatik olarak bir seçenek ekleyecektir . --isolated
Komut bu seçenekle çağrıldığında Laravel, bu komutun başka hiçbir örneğinin halihazırda çalışmadığından emin olacaktır. Laravel bunu, uygulamanızın varsayılan önbellek sürücüsünü kullanarak bir atomik kilit elde etmeye çalışarak başarır. Komutun diğer örnekleri çalışıyorsa komut yürütülmez; ancak komut yine de başarılı bir çıkış durum koduyla çıkılacaktır:
Komutun yürütülememesi durumunda döndürmesi gereken çıkış durum kodunu belirtmek isterseniz, istenen durum kodunu şu isolated
seçenek aracılığıyla sağlayabilirsiniz:
Kimliği kilitle
Varsayılan olarak Laravel, uygulamanızın önbelleğindeki atomik kilidi elde etmek için kullanılan dize anahtarını oluşturmak için komutun adını kullanacaktır. Ancak isolatableId
Artisan komut sınıfınızda, komutun argümanlarını veya seçeneklerini anahtara entegre etmenize olanak tanıyan bir yöntem tanımlayarak bu anahtarı özelleştirebilirsiniz :
Kilit Sona Erme Süresi
Varsayılan olarak, komut tamamlandıktan sonra izolasyon kilitlerinin süresi dolar. Veya komut kesilirse ve bitirilemezse kilit bir saat sonra sona erer. Ancak isolationLockExpiresAt
komutunuz üzerinde bir yöntem tanımlayarak kilidin geçerlilik süresini ayarlayabilirsiniz :
Girdi Beklentilerini Tanımlama
Konsol komutları yazarken, argümanlar veya seçenekler aracılığıyla kullanıcıdan girdi toplamak yaygındır. Laravel, signature
komutlarınızdaki özelliği kullanarak kullanıcıdan beklediğiniz girişi tanımlamayı çok kullanışlı hale getirir . Özellik signature
, komutun adını, bağımsız değişkenlerini ve seçeneklerini tek, anlamlı, rota benzeri bir sözdiziminde tanımlamanıza olanak tanır.
Argümanlar
Kullanıcı tarafından sağlanan tüm argümanlar ve seçenekler küme parantezleri içine alınmıştır. Aşağıdaki örnekte komut, gerekli bir bağımsız değişkeni tanımlar: user
:
Ayrıca bağımsız değişkenleri isteğe bağlı hale getirebilir veya bağımsız değişkenler için varsayılan değerleri tanımlayabilirsiniz:
Seçenekler
Argümanlar gibi seçenekler de kullanıcı girişinin başka bir biçimidir. --
Komut satırı aracılığıyla sağlandığında seçeneklerin önüne iki tire ( ) eklenir . İki tür seçenek vardır: değer alanlar ve almayanlar. Değer almayan seçenekler boolean “anahtar” görevi görür. Bu tür seçeneğin bir örneğine bakalım:
Bu örnekte, --queue
Artisan komutu çağrılırken anahtar belirtilebilir. Eğer --queue
geçiş yapılırsa seçeneğin değeri olacaktır true
. Aksi takdirde değer şöyle olacaktır false
:
Değerleri Olan Seçenekler
Şimdi değer bekleyen bir seçeneğe bakalım. Kullanıcının bir seçenek için bir değer belirtmesi gerekiyorsa seçenek adının sonuna bir işaret eklemelisiniz =
:
Bu örnekte kullanıcı şu şekilde seçenek için bir değer iletebilir. Komut çağrılırken seçenek belirtilmezse değeri şöyle olacaktır null
:
Seçenek adından sonra varsayılan değeri belirterek seçeneklere varsayılan değerler atayabilirsiniz. Kullanıcı tarafından hiçbir seçenek değeri aktarılmazsa varsayılan değer kullanılacaktır:
Seçenek Kısayolları
Bir seçeneği tanımlarken bir kısayol atamak için, bunu seçenek adından önce belirtebilir ve |
kısayolu tam seçenek adından ayırmak için karakteri sınırlayıcı olarak kullanabilirsiniz:
Komutu terminalinizde çalıştırırken, seçenek kısayollarının önüne tek bir tire konulmalı ve =
seçenek için bir değer belirtilirken hiçbir karakter dahil edilmemelidir:
Giriş Dizileri
Birden fazla giriş değeri bekleyecek argümanları veya seçenekleri tanımlamak isterseniz karakteri kullanabilirsiniz *
. Öncelikle böyle bir argümanı belirten bir örneğe bakalım:
Bu yöntemi çağırırken argümanlar user
komut satırına aktarılabilir. Örneğin, aşağıdaki komut user
, bir diziye değerini 1
ve 2
değerleri olarak ayarlayacaktır:
Bu *
karakter, bir argümanın sıfır veya daha fazla örneğine izin vermek için isteğe bağlı bir argüman tanımıyla birleştirilebilir:
Seçenek Dizileri
Birden fazla giriş değeri bekleyen bir seçeneği tanımlarken, komuta iletilen her seçenek değerinin önüne seçenek adı eklenmelidir:
Böyle bir komut birden fazla argüman iletilerek çağrılabilir --id
:
Giriş Açıklamaları
Bağımsız değişken adını açıklamadan iki nokta üst üste işaretiyle ayırarak giriş bağımsız değişkenlerine ve seçeneklerine açıklamalar atayabilirsiniz. Komutunuzu tanımlamak için biraz daha fazla alana ihtiyacınız varsa, tanımı birden fazla satıra yaymaktan çekinmeyin:
Eksik Giriş İstemi
Komutunuz gerekli argümanları içeriyorsa, bunlar sağlanmadığında kullanıcı bir hata mesajı alacaktır. Alternatif olarak, arayüzü uygulayarak komutunuzu, gerekli argümanlar eksik olduğunda kullanıcıya otomatik olarak bilgi verecek şekilde yapılandırabilirsiniz PromptsForMissingInput
:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Contracts\Console\PromptsForMissingInput;
class SendEmails extends Command implements PromptsForMissingInput
{
/**
* The name and signature of the console command.
Laravel’in kullanıcıdan gerekli bir argüman toplaması gerekiyorsa, argüman adını veya açıklamasını kullanarak soruyu akıllıca ifade ederek kullanıcıdan otomatik olarak argümanı isteyecektir. Gerekli argümanı toplamak için kullanılan soruyu özelleştirmek isterseniz, promptForMissingArgumentsUsing
argüman adlarıyla anahtarlanan bir dizi soru döndürerek yöntemi uygulayabilirsiniz:
/**
* Prompt for missing input arguments using the returned questions.
*
* @return array<string, string>
*/
protected function promptForMissingArgumentsUsing(): array
{
return [
'user'=>'Which user ID should receive the mail?',
];
}
Soruyu ve yer tutucuyu içeren bir demet kullanarak yer tutucu metni de sağlayabilirsiniz:
return [
'user'=> ['Which user ID should receive the mail?', 'E.g. 123'],
];
Bilgi istemi üzerinde tam kontrol istiyorsanız, kullanıcıyı uyaracak ve yanıtını döndürecek bir kapatma sağlayabilirsiniz:
use App\Models\User;
use function Laravel\Prompts\search;
// ...
return [
'user'=>fn() => search(
label: 'Search for a user:',
placeholder: 'E.g. Taylor Otwell',
options: fn ($value) => strlen($value) > 0
?User::where('name','like',"%{$value}%")->pluck('name','id')->all()
:[]
),
];
Kapsamlı Laravel İstemleri belgeleri, mevcut istemler ve bunların kullanımına ilişkin ek bilgiler içerir.
Kullanıcının seçenekleri seçmesini veya girmesini istemek istiyorsanız , komut yönteminize istemleri dahil edebilirsiniz handle
. Bununla birlikte, kullanıcıya yalnızca eksik argümanlar için otomatik olarak sorulduğunda soru sormak istiyorsanız, o zaman yöntemi uygulayabilirsiniz afterPromptingForMissingArguments
:
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use function Laravel\Prompts\confirm;
// ...
/**
* Perform actions after the user was prompted for missing arguments.
*/
protected function afterPromptingForMissingArguments(InputInterface $input, OutputInterface $output): void
{
$input->setOption('queue', confirm(
label: 'Would you like to queue the mail?',
default: $this->option('queue')
));
}
Komutunuz yürütülürken büyük olasılıkla komutunuz tarafından kabul edilen argümanların ve seçeneklerin değerlerine erişmeniz gerekecektir. Bunu yapmak için argument
ve yöntemlerini kullanabilirsiniz option
. Bir argüman veya seçenek mevcut değilse null
döndürülür:
$arguments = $this->arguments();
Seçenekler, yöntem kullanılarak argümanlar kadar kolay bir şekilde alınabilir option
. Tüm seçenekleri bir dizi olarak almak için options
yöntemi çağırın:
// Retrieve a specific option...
$queueName = $this->option('queue');
// Retrieve all options as an array...
$options = $this->options();
Laravel Prompts , yer tutucu metin ve doğrulama gibi tarayıcı benzeri özelliklere sahip, komut satırı uygulamalarınıza güzel ve kullanıcı dostu formlar eklemenizi sağlayan bir PHP paketidir.
Çıktıyı görüntülemenin yanı sıra, kullanıcıdan komutunuzun yürütülmesi sırasında girdi sağlamasını da isteyebilirsiniz. Yöntem ask
, kullanıcıya verilen soruyu soracak, girdilerini kabul edecek ve ardından kullanıcının girdisini komutunuza geri döndürecektir:
Yöntem ask
ayrıca, kullanıcı girişi sağlanmadığı takdirde döndürülmesi gereken varsayılan değeri belirten isteğe bağlı ikinci bir bağımsız değişkeni de kabul eder:
Yöntem, yöntemine secret
benzer ask
ancak kullanıcının girişi, konsola yazarken onlar tarafından görülemez. Bu yöntem, şifreler gibi hassas bilgiler istendiğinde kullanışlıdır:
Onay istemek
Kullanıcıdan basit bir “evet veya hayır” onayı istemeniz gerekiyorsa bu confirm
yöntemi kullanabilirsiniz. Varsayılan olarak bu yöntem geri dönecektir false
. Ancak kullanıcı istemi girerse y
veya yes
yanıt verirse yöntem geri döner true
.
Gerekirse, yönteme ikinci argüman olarak true
ileterek onay isteminin varsayılan olarak geri dönmesi gerektiğini belirtebilirsiniz :true
confirm
Otomatik Tamamlama
Yöntem anticipate
, olası seçimler için otomatik tamamlama sağlamak amacıyla kullanılabilir. Otomatik tamamlama ipuçlarına bakılmaksızın kullanıcı yine de herhangi bir yanıt verebilir:
Alternatif olarak, yönteme ikinci argüman olarak bir kapanış iletebilirsiniz anticipate
. Kullanıcı her giriş karakteri yazdığında kapatma çağrılacaktır. Kapatma, kullanıcının o ana kadarki girişini içeren bir dize parametresini kabul etmeli ve otomatik tamamlama için bir dizi seçenek döndürmelidir:
Çoktan seçmeli sorular
Soru sorarken kullanıcıya önceden tanımlanmış bir dizi seçenek vermeniz gerekiyorsa bu yöntemi kullanabilirsiniz choice
. Hiçbir seçenek seçilmediğinde döndürülecek varsayılan değerin dizi indeksini, indeksi yönteme üçüncü argüman olarak ileterek ayarlayabilirsiniz:
Ek olarak choice
yöntem, geçerli bir yanıt seçmek için maksimum deneme sayısını ve birden fazla seçime izin verilip verilmediğini belirlemek için isteğe bağlı dördüncü ve beşinci bağımsız değişkenleri kabul eder:
Çıkış Yazma
Çıktıyı konsola göndermek için line
, info
, comment
, question
, warn
ve error
yöntemlerini kullanabilirsiniz. Bu yöntemlerin her biri, amaçlarına uygun ANSI renklerini kullanacaktır. Örneğin kullanıcıya bazı genel bilgileri görüntüleyelim. Genellikle info
yöntem konsolda yeşil renkli metin olarak görüntülenir:
Bir hata mesajı görüntülemek için yöntemi kullanın error
. Hata mesajı metni genellikle kırmızı renkte görüntülenir:
line
Düz, renksiz metni görüntülemek için bu yöntemi kullanabilirsiniz :
newLine
Boş bir satır görüntülemek için yöntemi kullanabilirsiniz :
Tablolar
Yöntem table
, birden fazla veri satırını/sütununu doğru şekilde biçimlendirmeyi kolaylaştırır. Tek yapmanız gereken tablonun sütun adlarını ve verilerini sağlamaktır; Laravel sizin için tablonun uygun genişliğini ve yüksekliğini otomatik olarak hesaplayacaktır:
İlerleme Çubukları
Uzun süren görevler için, kullanıcılara görevin ne kadar tamamlandığını bildiren bir ilerleme çubuğu göstermek yararlı olabilir. Bu yöntemi kullanarak withProgressBar
Laravel bir ilerleme çubuğu görüntüleyecek ve her yineleme için ilerlemesini belirli bir yinelenebilir değer üzerinden ilerletecektir:
Bazen ilerleme çubuğunun nasıl ilerletileceği konusunda daha fazla manuel kontrole ihtiyacınız olabilir. İlk olarak, sürecin yineleneceği toplam adım sayısını tanımlayın. Ardından, her öğeyi işledikten sonra ilerleme çubuğunu ilerletin:
Komutları Kaydetme
Varsayılan olarak Laravel dizindeki tüm komutları otomatik olarak kaydeder app/Console/Commands
. Ancak withCommands
uygulamanızın dosyasındaki yöntemi kullanarak Laravel’e Artisan komutları için diğer dizinleri taraması talimatını verebilirsiniz bootstrap/app.php
:
Gerekirse, komutun sınıf adını yönteme sağlayarak komutları manuel olarak da kaydedebilirsiniz withCommands
:
Artisan boot ettiğinde uygulamanızdaki tüm komutlar servis konteyneri tarafından çözümlenecek ve Artisan’a kaydedilecektir.
Program Aracılığıyla Komutları Yürütme
Bazen bir Artisan komutunu CLI dışında yürütmek isteyebilirsiniz. Örneğin, bir rotadan veya denetleyiciden bir Artisan komutunu yürütmek isteyebilirsiniz. Bunu gerçekleştirmek için call
cephedeki yöntemi kullanabilirsiniz Artisan
. Yöntem call
, ilk argüman olarak komutun imza adını veya sınıf adını ve ikinci argüman olarak bir dizi komut parametresini kabul eder. Çıkış kodu döndürülecek:
call
Alternatif olarak, Artisan komutunun tamamını yönteme bir dize olarak iletebilirsiniz :
Dizi Değerlerini Geçirme
Komutunuz bir diziyi kabul eden bir seçeneği tanımlıyorsa, bu seçeneğe bir dizi değer iletebilirsiniz:
Boolean Değerlerini Geçme
--force
Komuttaki bayrak gibi dize değerlerini kabul etmeyen bir seçeneğin değerini belirtmeniz gerekiyorsa , seçeneğin değeri olarak veya değerini migrate:refresh
geçmelisiniz :true
false
Zanaatkar Komutlarını Sıraya Alma
queue
Cephedeki yöntemi kullanarak Artisan
Artisan komutlarını sıraya koyabilirsiniz, böylece kuyruk çalışanlarınız tarafından arka planda işlenirler . Bu yöntemi kullanmadan önce kuyruğunuzu yapılandırdığınızdan ve bir kuyruk dinleyicisi çalıştırdığınızdan emin olun:
onConnection
and yöntemlerini kullanarak onQueue
Artisan komutunun gönderilmesi gereken bağlantıyı veya kuyruğu belirtebilirsiniz:
Diğer Komutlardan Komutları Çağırma
Bazen mevcut bir Artisan komutundan başka komutları çağırmak isteyebilirsiniz. Yöntemi kullanarak bunu yapabilirsiniz call
. Bu call
yöntem, komut adını ve bir dizi komut argümanı/seçeneğini kabul eder:
Başka bir konsol komutunu çağırmak ve onun tüm çıktısını bastırmak istiyorsanız bu callSilently
yöntemi kullanabilirsiniz. Yöntem callSilently
, yöntemle aynı imzaya sahiptir call
:
Sinyal İşleme
Bildiğiniz gibi işletim sistemleri çalışan işlemlere sinyal gönderilmesine olanak sağlar. Örneğin SIGTERM
sinyal, işletim sistemlerinin bir programın sonlandırılmasını nasıl talep ettiğidir. Artisan konsolu komutlarınızdaki sinyalleri dinlemek ve oluştuğunda kodu çalıştırmak istiyorsanız, şu trap
yöntemi kullanabilirsiniz:
Aynı anda birden fazla sinyali dinlemek için yönteme bir sinyal dizisi sağlayabilirsiniz trap
:
$this->trap([SIGTERM, SIGQUIT], function (int $signal) {
Saplama Özelleştirme
Artisan konsolunun make
komutları denetleyiciler, işler, geçişler ve testler gibi çeşitli sınıflar oluşturmak için kullanılır. Bu sınıflar, girişinize dayalı olarak değerlerle doldurulan “taslak” dosyalar kullanılarak oluşturulur. Ancak Artisan tarafından oluşturulan dosyalarda küçük değişiklikler yapmak isteyebilirsiniz. Bunu başarmak için, stub:publish
en yaygın taslakları uygulamanızda yayınlamak ve böylece bunları özelleştirmek üzere bu komutu kullanabilirsiniz :
stubs
Yayınlanan taslaklar uygulamanızın kökündeki bir dizinde yer alacaktır . Bu taslaklarda yaptığınız herhangi bir değişiklik, Artisan’ın komutlarını kullanarak karşılık gelen sınıfları oluşturduğunuzda yansıtılacaktır make
.
Olaylar
Artisan, komutları çalıştırırken üç olay gönderir: Illuminate\Console\Events\ArtisanStarting
, Illuminate\Console\Events\CommandStarting
, ve Illuminate\Console\Events\CommandFinished
. ArtisanStarting
Artisan çalışmaya başladığında etkinlik hemen gönderilir . Daha sonra olay, CommandStarting
bir komut çalıştırılmadan hemen önce gönderilir. Son olarak, CommandFinished
bir komutun yürütülmesi bittiğinde olay gönderilir.