Artisan, Laravel’in içerdiği komut satırı arayüzüdür. Artisan, uygulamanızın kökünde artisankomut 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
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 !
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 tinkerArtisan komutunu çalıştırın:
php artisan tinker
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 dispatchkuyruğ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 .dispatchDispatchableBus::dispatchQueue::push
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, optimizeve komutlarını çalıştırabilirsiniz up. Daha fazla komuta izin vermek istiyorsanız bunları yapılandırma commandsdosyanızdaki diziye ekleyebilirsiniz tinker.php:
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_aliasdizisindeki sınıfları listeleyerek gerçekleştirebilirsiniz :tinker.php
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.
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:
Komutunuzu oluşturduktan sonra sınıfın signatureve özelliklerine uygun değerleri tanımlamalısınız . descriptionBu ö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:
<?php
namespace App\Console\Commands;
use App\Models\User;
use App\Support\DripEmailer;
use Illuminate\Console\Command;
class SendEmails extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = ‘mail:send {user}’;
/**
* The console command description.
*
* @var string
*/
protected $description = ‘Send a marketing email to a user’;
/**
* Execute the console command.
*/
public function handle(DripEmailer $drip): void
{
$drip->send(User::find($this->argument(‘user’)));
}
}
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 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.phpuygulamanı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 commandiki argümanı kabul eder: komut imzası ve komutun argümanlarını ve seçeneklerini alan bir kapanış:
Artisan::command(‘mail:send {user}’, function (string $user) {
$this->info(“Sending email to: {$user}!”);
});
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.
purposeKapatmaya dayalı bir komut tanımlarken, komuta bir açıklama eklemek için yöntemi kullanabilirsiniz . Bu açıklama php artisan listveya komutlarını çalıştırdığınızda görüntülenecektir php artisan help:
Artisan::command(‘mail:send {user}’, function (string $user) {
Bu özelliği kullanmak için uygulamanızın, uygulamanızın varsayılan önbellek sürücüsü olarak memcached, redis, dynamodb, database, fileveya önbellek sürücüsünü kullanıyor olması gerekir. arrayAyrı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\Isolatablearayüzü komut sınıfınıza uygulayabilirsiniz :
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Contracts\Console\Isolatable;
class SendEmails extends Command implements Isolatable
{
// …
}
Bir komut olarak işaretlendiğinde Laravel komuta Isolatableotomatik olarak bir seçenek ekleyecektir . --isolatedKomut 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:
php artisan mail:send 1 –isolated
Komutun yürütülememesi durumunda döndürmesi gereken çıkış durum kodunu belirtmek isterseniz, istenen durum kodunu şu isolatedseçenek aracılığıyla sağlayabilirsiniz:
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 isolatableIdArtisan 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 :
Varsayılan olarak, komut tamamlandıktan sonra izolasyon kilitlerinin süresi dolar. Veya komut kesilirse ve bitirilemezse kilit bir saat sonra sona erer. Ancak isolationLockExpiresAtkomutunuz üzerinde bir yöntem tanımlayarak kilidin geçerlilik süresini ayarlayabilirsiniz :
use DateTimeInterface;
use DateInterval;
/**
* Determine when an isolation lock expires for the command.
*/
public function isolationLockExpiresAt(): DateTimeInterface|DateInterval
Konsol komutları yazarken, argümanlar veya seçenekler aracılığıyla kullanıcıdan girdi toplamak yaygındır. Laravel, signaturekomutları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.
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:
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = ‘mail:send {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:
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, --queueArtisan komutu çağrılırken anahtar belirtilebilir. Eğer --queuegeçiş yapılırsa seçeneğin değeri olacaktır true. Aksi takdirde değer şöyle olacaktır false:
Ş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:
php artisan mail:send 1 –queue=default
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:
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:
‘mail:send {user} {–Q|queue}’
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:
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:
‘mail:send {user*}’
Bu yöntemi çağırırken argümanlar userkomut satırına aktarılabilir. Örneğin, aşağıdaki komut user, bir diziye değerini 1ve 2değerleri olarak ayarlayacaktır:
php artisan mail:send 1 2
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:
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:
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.
*
* @var string
*/
protected $signature = ‘mail:send {user}’;
// …
}
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, promptForMissingArgumentsUsingargü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:
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
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 argumentve yöntemlerini kullanabilirsiniz option. Bir argüman veya seçenek mevcut değilse nulldö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 optionsyöntemi çağırın:
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:
/**
* Execute the console command.
*/
public function handle(): void
{
$name = $this->ask(‘What is your name?’);
// …
}
Yöntem askayrı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:
$name = $this->ask(‘What is your name?’, ‘Taylor’);
Yöntem, yöntemine secretbenzer askancak 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:
$password = $this->secret(‘What is the password?’);
Kullanıcıdan basit bir “evet veya hayır” onayı istemeniz gerekiyorsa bu confirmyöntemi kullanabilirsiniz. Varsayılan olarak bu yöntem geri dönecektir false. Ancak kullanıcı istemi girerse yveya yesyanıt verirse yöntem geri döner true.
if ($this->confirm(‘Do you wish to continue?’)) {
// …
}
Gerekirse, yönteme ikinci argüman olarak trueileterek onay isteminin varsayılan olarak geri dönmesi gerektiğini belirtebilirsiniz :trueconfirm
if ($this->confirm(‘Do you wish to continue?’, true)) {
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:
$name = $this->anticipate(‘What is your name?’, [‘Taylor’, ‘Dayle’]);
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:
$name = $this->anticipate(‘What is your address?’, function (string $input) {
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:
$name = $this->choice(
‘What is your name?’,
[‘Taylor’, ‘Dayle’],
$defaultIndex
);
Ek olarak choiceyö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:
Çıktıyı konsola göndermek için line, info, comment, question, warnve erroryö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 infoyöntem konsolda yeşil renkli metin olarak görüntülenir:
/**
* Execute the console command.
*/
public function handle(): void
{
// …
$this->info(‘The command was successful!’);
}
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:
$this->error(‘Something went wrong!’);
lineDüz, renksiz metni görüntülemek için bu yöntemi kullanabilirsiniz :
$this->line(‘Display this on the screen’);
newLineBoş bir satır görüntülemek için yöntemi kullanabilirsiniz :
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:
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 withProgressBarLaravel bir ilerleme çubuğu görüntüleyecek ve her yineleme için ilerlemesini belirli bir yinelenebilir değer üzerinden ilerletecektir:
use App\Models\User;
$users = $this->withProgressBar(User::all(), function (User $user) {
$this->performTask($user);
});
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:
Varsayılan olarak Laravel dizindeki tüm komutları otomatik olarak kaydeder app/Console/Commands. Ancak withCommandsuygulamanızın dosyasındaki yöntemi kullanarak Laravel’e Artisan komutları için diğer dizinleri taraması talimatını verebilirsiniz bootstrap/app.php:
->withCommands([
__DIR__.’/../app/Domain/Orders/Commands’,
])
Gerekirse, komutun sınıf adını yönteme sağlayarak komutları manuel olarak da kaydedebilirsiniz withCommands:
use App\Domain\Orders\Commands\SendEmails;
->withCommands([
SendEmails::class,
])
Artisan boot ettiğinde uygulamanızdaki tüm komutlar servis konteyneri tarafından çözümlenecek ve Artisan’a kaydedilecektir.
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 callcephedeki 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:
use Illuminate\Support\Facades\Artisan;
Route::post(‘/user/{user}/mail’, function (string $user) {
$exitCode = Artisan::call(‘mail:send’, [
‘user’ => $user, ‘–queue’ => ‘default’
]);
// …
});
callAlternatif olarak, Artisan komutunun tamamını yönteme bir dize olarak iletebilirsiniz :
--forceKomuttaki 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:refreshgeçmelisiniz :truefalse
queueCephedeki yöntemi kullanarak ArtisanArtisan 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:
use Illuminate\Support\Facades\Artisan;
Route::post(‘/user/{user}/mail’, function (string $user) {
Artisan::queue(‘mail:send’, [
‘user’ => $user, ‘–queue’ => ‘default’
]);
// …
});
onConnectionand yöntemlerini kullanarak onQueueArtisan komutunun gönderilmesi gereken bağlantıyı veya kuyruğu belirtebilirsiniz:
Bazen mevcut bir Artisan komutundan başka komutları çağırmak isteyebilirsiniz. Yöntemi kullanarak bunu yapabilirsiniz call. Bu callyöntem, komut adını ve bir dizi komut argümanı/seçeneğini kabul eder:
/**
* Execute the console command.
*/
public function handle(): void
{
$this->call(‘mail:send’, [
‘user’ => 1, ‘–queue’ => ‘default’
]);
// …
}
Başka bir konsol komutunu çağırmak ve onun tüm çıktısını bastırmak istiyorsanız bu callSilentlyyöntemi kullanabilirsiniz. Yöntem callSilently, yöntemle aynı imzaya sahiptir call:
Bildiğiniz gibi işletim sistemleri çalışan işlemlere sinyal gönderilmesine olanak sağlar. Örneğin SIGTERMsinyal, 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 trapyöntemi kullanabilirsiniz:
Artisan konsolunun makekomutları 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:publishen yaygın taslakları uygulamanızda yayınlamak ve böylece bunları özelleştirmek üzere bu komutu kullanabilirsiniz :
php artisan stub:publish
stubsYayı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.
Artisan, komutları çalıştırırken üç olay gönderir: Illuminate\Console\Events\ArtisanStarting, Illuminate\Console\Events\CommandStarting, ve Illuminate\Console\Events\CommandFinished. ArtisanStartingArtisan çalışmaya başladığında etkinlik hemen gönderilir . Daha sonra olay, CommandStartingbir komut çalıştırılmadan hemen önce gönderilir. Son olarak, CommandFinishedbir komutun yürütülmesi bittiğinde olay gönderilir.
Please note:
This action will also remove this member from your connections and send a report to the site admin.
Please allow a few minutes for this process to complete.