Belajar Laravel 4 : 02. Artisan

laravel_logo

Seperti framework modern yang lain, Laravel juga punya command-line utility yang disebut Artisan (pake “t“, bukan arisan). Dalam bab ini, kita akan berkenalan dengan Artisan & coba bikin perintah sendiri. Daftar perintah (command) yang udah bawaan Laravel 4 bisa diliat pake perintah:

php artisan list

Dari sekian banyak command, beberapa yang nantinya sering kita pake adalah:

  • migrate
  • migrate:rollback
  • controller:make
  • routes
  • db:seed
  • up
  • down

Main-main dengan Artisan

Kita mau coba bikin command sederhana yang bisa nerima input & menghasilkan output di terminal. Kita bikin kalkulator aja.

Pertama kita bikin subdirektori laler di app/commands/. Terus kita ketik perintah berikut:

php artisan command:make Calc --command=laler:calc --path=app/commands/laler --namespace=Laler

Hasilnya adalah file app/commands/laler/Calc.php yang isinya:

<?php namespace Laler;

use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;

class Calc extends Command {

	protected $name = 'laler:calc';
	protected $description = 'Command description.';
	
	public function __construct()
	{
		parent::__construct();
	}

	public function fire()
	{
		//
	}

	protected function getArguments()
	{
		return array(
			array('example', InputArgument::REQUIRED, 'An example argument.'),
		);
	}

	protected function getOptions()
	{
		return array(
			array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null),
		);
	}

}

Kita ganti nilai variabel $description.

$description = 'Contoh command bikinan sendiri'

Sebelum command bisa kita pake, kita harus daftarin dulu. Caranya, buka file app/start/artisan.php. Terus tambahin baris berikut:

Artisan::add(new Laler\Calc);

Sekarang kalo kita ketik php artisan list, kita akan liat command yang kita buat udah ada di daftar.

laler
  laler:calc   Contoh command bikinan sendiri.

Dan kalo kita jalanin command ini, kita bakal dapet error 🙂

[RuntimeException]     
Not enough arguments.

Sekarang coba edit 3 function berikut:

public function fire()
{
    $this->info($this->argument('num1'));
    $this->info($this->argument('num2'));
    $this->info($this->option('operasi'));
}

protected function getArguments()
{
    return array(
        array('num1', InputArgument::REQUIRED, 'Angka pertama.'),
        array('num2', InputArgument::REQUIRED, 'Angka kedua.'),
    );
}

protected function getOptions()
{
    return array(
        array('operasi', null, InputOption::VALUE_REQUIRED, 'Operasi. add/sub/mul.', 'add'),
    );
}

Coba kita jalanin lagi perintah ini.

php artisan laler:calc 1 2 --operasi=mul

Hasilnya:

1
2
mul

Kalo ga pake opsi --operasi, hasilnya begini:

1
2
add

Kembali ke fire(). Edit function ini untuk jalanin perhitungan.

public function fire()
{
    $this->info($this->argument('num1'));
    $this->info($this->argument('num2'));
    $this->info($this->option('operasi'));

    $n1  = $this->argument('num1');
    $n2  = $this->argument('num2');
    $op  = $this->option('operasi');
    $res = 'Error. Operasi nggak dikenal.';
    switch($op){
        case 'add':
            $res = $n1 + $n2;
            break;
        case 'sub':
            $res = $n1 - $n2;
            break;
        case 'mul':
            $res = $n1 * $n2;
            break;
    }

    $this->info('hasil = '.$res);
}

Jalanin lagi command ini.

php artisan laler:calc 1 2 
1
2
add
hasil = 3
php artisan laler:calc 1 2 --operasi=sub 
1
2
sub
hasil = -1
php artisan laler:calc 1 2 --operasi=mull 
1
2
mull
hasil = Error. Operasi nggak dikenal.

Jadi input untuk Artisan bisa berupa argumen atau opsi. Masing-masing bisa dibikin wajib (required) atau opsional. Untuk lebih detilnya, silakan baca dokumentasi Laravel 4.

Laravel Generator

Kita juga bisa pake command buatan orang lain. Salah satu yang populer adalah Laravel Generator bikinan Mas Jeffrey.

Instalasinya cukup gampang. Sama dengan instalasi paket Composer yang lain. Buka file composer.json & tambahin kode berikut:

"require-dev":{
	"way/generators":"2.*"
}

Terus jalanin perintah

composer update --dev

Kalo pas update composer ada error, coba update Composer-nya dulu dengan perintah composer self-update terus ulangi perintah di atas.

Terakhir buka file app/config/app.php. Cari array providers & tambahin baris berikut:

'Way\Generators\GeneratorsServiceProvider'

Sekarang kalo kita jalanin perintah php artisan list, kita akan lihat ada beberapa command baru antara lain:

  • generate:controller
  • generate:migration
  • generate:pivot
  • generate:model
  • generate:seed
  • generate:view

Paket Composer yang Lain

Karena Laravel 4 pake Composer, kita bisa pake paket Composer lain yang kita mau. Kita bisa cari paket yang isinya Artisan command atau library PHP.

Coba buka composer repository di alamat www.packagist.org. Di situs ini kita bisa cari paket-paket composer yang bisa kita pake untuk aplikasi PHP kita. Nggak hanya untuk Laravel tapi juga framework lain yang support Composer seperti Symfony, Fuel, dan lain-lain. Jadi sebagai catatan, kalo mau instal paket baca dulu keterangan kompatibilitasnya, karena ada paket yang khusus untuk framework tertentu aja.

Kita bisa pake adalah paket yang sifatnya framework-agnostic (nggak tergantung framework tertentu) seperti Guzzle HTTP Client, atau yang khusus untuk Laravel 4 seperti Laravel Generator.

Secara teori, karena Laravel 4 pake komponen dari Symfony, kita juga bisa instal paket yang kompatibel dengan framework tersebut. Saya bilang “secara teori” karena saya sendiri ga pernah nyoba 🙂

Sampe di sini dulu. Nanti lanjut lagi 🙂

Also in this category ...