atakansn Her komut bir sınıf. Eğer komut dosya oluşturuyorsa stub dosyaları da var:
make:controller
https://github.com/laravel/framework/blob/9.x/src/Illuminate/Routing/Console/ControllerMakeCommand.php
https://github.com/laravel/framework/blob/9.x/src/Illuminate/Routing/Console/stubs/controller.stub
make:model
https://github.com/laravel/framework/blob/9.x/src/Illuminate/Foundation/Console/ModelMakeCommand.php
https://github.com/laravel/framework/blob/9.x/src/Illuminate/Foundation/Console/stubs/model.stub
Komutlar içlerindeki $defaultName değerine göre yüklenip hangi sınıfta oldukları bulunuyor. Bunu yapan \Illuminate\Console\Application sınıfı ki o da \Symfony\Component\Console\Application kullanıyor.
Siz artisan make:controller ProductController
yazdığınızda ['make:controller', 'ProductController'] şeklinde iki argüman \Illuminate\Foundation\Console\Kernel aracılığıyla \Illuminate\Console\Application (Artisan) sınıfına iletiliyor ve \Symfony\Component\Console\Application::run() tarafından çalıştırılıyor (içlerindeki handle yöntemi ateşleniyor)
Yapılan bir çok işlem var, kodları takip ederek anlayabilirsiniz. Anlatımdan ziyade kod okuma ile anlaşılacak bir şey.