# Tasks
## Contents
- [The Basics](#the-basics)
- [Creating & Running Tasks](#creating-tasks)
- [Bundle Tasks](#bundle-tasks)
- [CLI Options](#cli-options)
## The Basics
Laravel's command-line tool is called Artisan. Artisan can be used to run "tasks" such as migrations, cronjobs, unit-tests, or anything that want.
## Creating & Running Tasks
To create a task create a new class in your **application/tasks** directory. The class name should be suffixed with "_Task", and should at least have a "run" method, like this:
#### Creating a task class:
class Notify_Task {
public function run($arguments)
{
// Do awesome notifying...
}
}
Now you can call the "run" method of your task via the command-line. You can even pass arguments:
#### Calling a task from the command line:
php artisan notify
#### Calling a task and passing arguments:
php artisan notify taylor
Remember, you can call specific methods on your task, so, let's add an "urgent" method to the notify task:
#### Adding a method to the task:
class Notify_Task {
public function run($arguments)
{
// Do awesome notifying...
}
public function urgent($arguments)
{
// This is urgent!
}
}
Now we can call our "urgent" method:
#### Calling a specific method on a task:
php artisan notify:urgent
## Bundle Tasks
To create a task for your bundle just prefix the bundle name to the class name of your task. So, if your bundle was named "admin", a task might look like this:
#### Creating a task class that belongs to a bundle:
class Admin_Generate_Task {
public function run($arguments)
{
// Generate the admin!
}
}
To run your task just use the usual Laravel double-colon syntax to indicate the bundle:
#### Running a task belonging to a bundle:
php artisan admin::generate
#### Running a specific method on a task belonging to a bundle:
php artisan admin::generate:list
## CLI Options
#### Setting the Laravel environment:
php artisan foo --env=local
#### Setting the default database connection:
php artisan foo --database=sqlite