LARAVEL AND ARTISAN CLI Sayed Ahmed Computer Engineering, BUET, Bangladesh MSc. Computer Science, U of Manitoba, Canada http://sayed.justetc.net TOPICS Introduction Usage Common New artisan commands also come with packages Laravel artisan commands 4 generators package will be discussed How to develop new artisan commands SHOULD YOU USE THEM In general, it’s better to use Will make your development faster However, you may also consider the aspect Just the command is there, do you really need to use it Just because, you can generate something, are you doing for that or there is a need (business or technical) Is there time for it? Justify the need, justify the time assigned for the project, justify budget, justify usefulness, also what is most important right now Use for the benefit; do not use just to use it But you need to learn it all WHAT IS ARTISAN A command-line interface Comes with Laravel Provides helpful commands That facilitates rapid application development It is driven by the powerful Symfony Console component But Artisan is not that difficult If you have to use it, You have to know it for sure, But knowing is not that difficult. You can just read and know So relax, you will see LARAVEL - USAGE php artisan list List all available commands php artisan help migrate Help php artisan migrate --env=local Run screen for the command migrate the migrate on local development platform php artisan –version Artisan version ARTISAN COMMANDS CAN BE EXTENSION/PACKAGE SPECIFIC Install this package, you will get more commands https://github.com/JeffreyWay/Laravel-4-Generators New generators as we get from the package generate:model generate:controller generate:seed generate:view generate:migration generate:resource generate:scaffold generate:form generate:test generate:pivot LARAVEL-4-GENERATORS COMMANDS Related Artisan Commands php artisan generate:migration create_posts_table php artisan generate:migration add_user_id_to_posts_table LARAVEL-4-GENERATORS ARTISAN COMMANDS php artisan generate:migration create_posts_table --fields="title:string, body:text“ php artisan generate:migration destroy_posts_table php artisan generate:migration destroy_posts_table --fields="title:string, body:text“ LARAVEL-4-GENERATORS ARTISAN COMMANDS php artisan generate:migration remove_completed_from_tasks_table -fields="completed:boolean“ php artisan generate:model Post php artisan generate:view dog php artisan generate:view index -path=views/dogs php artisan generate:seed dogs LARAVEL-4-GENERATORS ARTISAN COMMANDS php artisan generate:resource dog -fields="name:string“ php artisan generate:resource dog -fields="name:string, age:integer“ php artisan serve php artisan generate:scaffold tweet -fields="author:string, body:text“ php artisan generate:form tweet LARAVEL-4-GENERATORS ARTISAN COMMANDS php artisan generate:form tweet -method="update“ php artisan generate:form tweet --html="div“ # copy the output to the clipboard php artisan generate:form tweet | pbcopy # save it to a form partial php artisan generate:form tweet > app/views/posts/form.blade.php LARAVEL-4-GENERATORS ARTISAN COMMANDS php artisan generate:test FooTest php artisan generate:pivot posts tags php artisan migrate php artisan generate:migration create_posts_table --fields="title:string, description:text" php artisan generate:migration create_tags_table -fields="name:string" php artisan generate:pivot posts tags DEVELOPING NEW ARTISAN COMMANDS By default the commands are in the app/commands folder You can store your commands in other locations as you want However, the location has to autoload by composer.json settings DEVELOPING NEW ARTISAN COMMANDS php artisan command:make FooCommand php artisan command:make FooCommand -path=app/classes --namespace=Classes Generate command class in a user provided path php artisan command:make AssignUsers -command=users:assign Create a new command class Specify the term to be used from command line php artisan command:make AssignUsers -bench="vendor/package“ If you need to create the command for a package INSIDE THE CLASS FOR THE COMMAND Name and description properties Provide them for help Fire method will be triggered The getArguments and getOptions methods are to accept the command line parameters for the command to be created How options are passed to a command php artisan foo --option=bar --option=baz RETRIEVING OPTIONS AND ARGUMENTS Retrieving options and arguments from command line To be used inside your command class And then you can process as you want $value = $this->option('name'); $arguments = $this->argument(); CALLING OTHER COMMANDS Calling other commands inside from your commands $this->call('command:name', 'foo', '--option' => 'bar')); array('argument' => MESSAGE TO THE USER After the intended operation, you may want to display something to the user $this->info('Display this on the screen'); $this->error('Something went wrong!'); ASKING THE USER FOR INFO Asking the user for info in between of the intended operation $name = $this->ask('What is your name?'); $password = $this->secret('What is the password?'); $this->confirm($question, true); REGISTERING COMMANDS • Once you are done writing your commands Done in the app/start/artisan.php Use Artisan::add to register the method You need to register it Artisan::add(new CustomCommand); Artisan::resolve('binding.name'); Artisan::resolve('binding.name'); Registering Container A Command That Is In The IoC REFERENCE http://laravel.com/docs/artisan https://github.com/JeffreyWay/Laravel-4Generators http://net.tutsplus.com/tutorials/tools-andtips/pro-workflow-in-laravel-and-sublime-text/