Artisan ( การเรียกใช้งาน php ผ่านทาง cmd )

<a name="introduction"></a> ## แนะนำ

Artisan คือ ชุดคำสั่งที่ใช้เรียกงานผ่านทาง command line เพื่อช่วยให้จัดการงานต่างให้ง่าย รวดเร็วขึ้น ซึ่ง laravel นำ Class console ของ symfony มาปรับใช้

<a name="usage"></a> ## การใช้งาน

ในการเรียกดูคำสั่งทั้งหมดใช้คำสั่ง list

1 php artisan list

ทุกคำสั่งจะมีวิธีการใช้ให้เราดู โดยเพิ่ม parameter help เข้าไปนะครับ

ตัวอย่างการใช้งาน help

1 php artisan help migrate

เราสามารถเรียก พร้อมกับเปลี่ยนการตั้งค่าโดยรวมของเว็บโดยเพิ่มพารามิเตอร์ --env

ตัวอย่างนี้เราเรียกในการตั้งค่าแบบ local

1 php artisan migrate --env=local

จะเรียกดูรุ่นของ laravel ก็ได้โดยพารามิเตอร์ --version

1 php artisan --version

<br /><br /><br /><br /><br /><br /> ## การสร้างคำสั่งขึ้นใช้งานเอง ##

เราสามารถสร้างคำสั่ง artisan ขึ้นมาใช้ โดยไฟล์จะเก็บที่โฟลเดอร์ app/commands ถ้าเราไม่อยากเก็บไว้ตรงนี้ก็ไปตั้งค่าที่ไฟล์ composer.json ได้

<a name="building-a-command"></a> ## การสร้างคำสั่ง

เริ่มสร้างคลาส

เราจะใช้คำสั่ง command:make ใน command line เพื่อสร้าง class ขึ้นมาก่อนครับ

ตัวอย่างการใช้ command line สร้างคำสั่ง

1 php artisan command:make FooCommand

ถ้าเราอยากจะเปลี่ยนที่อยู่ให้กับไฟล์คำสั่งของเรา ก็ใช้คำสั่งนี้ไปเลยครับ

1 php artisan command:make FooCommand --path="app/classes" --namespace="Classes"

การตั้งค่าคำสั่ง

เริ่มต้นโดยการตั้ง name และ description รวมถึงส่วนประกอบอื่นของคลาส, โดยค่าเหล่านี้จะไปปรากฏตอนคำสั่ง artisan list ฟังก์ชัน fire ใช้ในการเรียกฟังก์ชันต่างๆ ที่จะทำงานในคำสั่งนี้

การตั้งค่าต่างๆ

getArguments กับ getOptions เมทอด เป็นที่ๆ เราะทำการตั้งค่าจะต่างๆ ทั้ง พารามิเตอร์ที่ 1 ที่ 2 การตั้งค่าจะมีลักษณะการส่งค่าลงอาเรย์.

เมื่อเรา คำสั่งของเรามีการให้ป้อนพารามิเตอร์ ตัวของ array ต้องมีรูปแบบดังนี้

1 array($name, $mode, $description, $defaultValue)

ตัวแปร mode เรากำหนดให้เป็นแบบต้องมี InputArgument::REQUIRED หรือไม่มีก็ได้ InputArgument::OPTIONAL.

เมื่อเรากำหนดให้มีการใส่คำสั่งเพิ่มเติม ลักษณะอาเรย์จะเป็นแบบนี้

1 array($name, $shortcut, $mode, $description, $defaultValue)

ในการกำหนด mode ให้เป็นได้หลายๆแบบได้เช่น

InputOption::VALUE_REQUIRED, InputOption::VALUE_OPTIONAL, InputOption::VALUE_IS_ARRAY, InputOption::VALUE_NONE.

ตัวอย่างรูปแบบค่าที่ต้องป้อนให้เมื่อกำหนด mode เป็น VALUE_IS_ARRAY

1 php artisan foo --option=bar --option=baz

<br /><br /><br /><br /><br /> ### การเข้าถึงตัวแปร

เมื่อคำสั่งทำงาน เราก็ต้องมีตัวจัดการในการ ดึงค่าต่างๆ ในพารามิเตอร์ของการตั้งค่า ที่รับมา

การดึงค่าจากพารามิเตอร์เฉพาะตัว

1 $value = $this->argument('name');

การดึงค่าทั้งหมด

1 $arguments = $this->argument();

การรับค่าจากค่าการตั้งค่าแบบเฉพาะตัว

1 $value = $this->option('name');

การรับค่าจากค่าการตั้งค่าแบบทั้งหมด

1 $options = $this->option();

<br /><br /><br /><br /><br /><br /> ### การส่งผลการทำงาน

มีประเภทของคำสั่งที่จะแสดงออกทาง commandline 4 ประเภท คือ info , comment , question และ error ทั้ง 4 มีรูปบแบบ unicode เป็น ANSI

ส่งข้อมูลของคำสั่งออกทางหน้าจอ

1 $this->info('Display this on the screen');

ส่งข้อความออกไปทางหน้าจอ

1 $this->error('Something went wrong!');

ให้ผู้ใช้งานเลือก

เราสามารถใช้การถามคำถาม และ ยืนยัน เพื่อความรวดเร็วในการใช้งาน

การถามคำถาม

1 $name = $this->ask('What is your name?');

<br /><br /> การถามคำถามและค่าที่ป้อนมาเป็นรูปแบบ

1 $password = $this->secret('What is the password?');

ยืนยันการเลือก

1 if ($this->confirm('Do you wish to continue? [yes|no]'))
2 {
3 	//
4 }

เราสามารถกำหนดค่าเริ่มต้นของคำสั่ง confirm ให้เป็นtrue หรือ false ได้

1 $this->confirm($question, true);

<a name="registering-commands"></a> ## การลงทะเบียนคำสั่ง

เมื่อการสร้างคำสั่งเสร็จสิ้น เราต้องนำไปลงทะเบียนที่ไฟล์ app/start/artisan.php โดยใช้คำสั่ง Artisan::add เพื่อลงทะเบียน

ตัวอย่างการใช้งาน

1 Artisan::add(new CustomCommand);

ถ้าคำสั่งเราใช้ใน IoC container เราต้องใช้คำสั่ง Artisan::resolve เพื่อผูกคำสั่งของเราไปกับ IOC ด้วย

ตัวอย่างการใช้งาน

1 Artisan::resolve('binding.name');

<a name="calling-other-commands"></a> ## การเรียกใช้คำสั่งอื่นร่วม

บางเวลาเราต้องการจะเรียกใช้คำสั่งอื่นๆ สามารถใช้ฟังก์ชัน call เรียกได้

ตัวอย่างการใช้งาน

1 $this->call('command.name', array('argument' => 'foo', '--option' => 'bar'));

เราสามารถสร้างคำสั่ง artisan ขึ้นมาใช้โดยไฟล์จะเก็บที่โฟลเดอร์ app/commands ถ้าเราไม่อยากเก็บไว้ตรงนี้ก็ไปตั้งค่าที่ไฟล์ composer.json ได้

<a name="building-a-command"></a> ## การสร้างคำสั่ง

เริ่มสร้างคลาส

เราใช้คำสั่ง command:make ใน command line เพื่อสร้าง class ขึ้นมาก่อนครับ

ตัวอย่างการใช้ command line สร้างคำสั่ง

1 php artisan command:make FooCommand

ถ้าเราอยากจะเปลี่ยนที่อยู่ให้กับไฟล์คำสั่งของเรา ก็ใช้คำสั่งนี้ไปเลยครับ

1 php artisan command:make FooCommand --path="app/classes" --namespace="Classes"

เริ่มลงรายละเอียด

เริ่มต้นโดยการตั้ง name และ description รวมถึงส่วนประกอบอื่นของคลาส, โดยค่าเหล่านี้จะไปปรากฏตอนคำสั่ง artisan list. ฟังก์ชัน fire ใช้ในการเรียกฟังก์ชันต่างๆ ที่จะทำงานในคำสั่งนี้ ### การตั้งค่าต่างๆ

getArguments กับ getOptions เมทอด เป็นที่ๆ เราะทำการตั้งค่าจะต่างๆ ทั้ง พารามิเตอร์ที่ 1 ที่ 2 . การตั้งค่าจะมีลักษณะการส่งค่าลงอาเรย์.

เมื่อเรา คำสั่งของเรามีการให้ป้อนพารามิเตอร์ array ต้องมีรูปแบบดังนี้

1 array($name, $mode, $description, $defaultValue)

ตัวแปร mode เรากำหนดให้เป็นแบบต้องมี InputArgument::REQUIRED ไม่มีก็ได้ InputArgument::OPTIONAL.

เมื่อเรากำหนดให้มีการใส่คำสั่งเพิ่มเติมลักษณะอาเรย์จะเป็นแบบนี้

1 array($name, $shortcut, $mode, $description, $defaultValue)

ในการกำหนด mode ใหเป็นได้หลายๆแบบได้เช่น: InputOption::VALUE_REQUIRED, InputOption::VALUE_OPTIONAL, InputOption::VALUE_IS_ARRAY, InputOption::VALUE_NONE.

ตัวอย่างรูปแบบค่าที่ต้องป้อนให้เมื่อกำหนด mode เป็น VALUE_IS_ARRAY

1 php artisan foo --option=bar --option=baz

การเข้าถึงตัวแปร

เมื่อคำสั่งทำงาน เราก็ต้องมีตัวจัดการๆ ดึงค่าต่างๆ ในพารามิเตอร์ การตั้งค่า ที่รับมา

การดึงค่าจากพารามิเตอร์เฉพาะตัว

1 $value = $this->argument('name');

การดึงค่าทั้งหมด

1 $arguments = $this->argument();

การรับค่าแบบเฉพาะตัว

1 $value = $this->option('name');

การรับค่าแบบทั้งหมด

1 $options = $this->option();

ส่งผลการทำงาน

มีประเภทของคำสั่งที่จะแสดงออกทาง commandline 4 ประเภท คือ info , comment , question และ error ทั้ง 4 มีรูปบบ unicode เป็น ANSI

ส่งข้อมูลของคำสั่งออกทางหน้าจอ

1 $this->info('Display this on the screen');

ส่งเออเรอออกไปทางหน้าจอ

1 $this->error('Something went wrong!');

ให้ผู้ใช้งานเลือก

เราสามารถใช้การถามคำถาม และ ยืนยัน เพื่อความรวดเร็วในการใช้งาน

การถามคำถาม

1 $name = $this->ask('What is your name?');

**การถามคำถามและค่าที่ป้อนมาเป็นรูปแบบ ** **

1 $password = $this->secret('What is the password?');

Asking The User For Confirmation

1 if ($this->confirm('Do you wish to continue? [yes|no]'))
2 {
3 	//
4 }

เราสามารถกำหนดค่าเริ่มต้นให้คำสั่ง confirm ให้เป็นtrue หรือ false ได้

1 $this->confirm($question, true);

<a name="registering-commands"></a> ## การลงทะเบียนคำสั่ง

เมื่อการสร้างคำสั่งเสร็จสิ้น เราต้องนำไปลงทะเบียนที่ไฟล์ app/start/artisan.php โดยใช้คำสั่ง Artisan::add เพื่อลงทะเบียน

ตัวอย่างการใช้งาน

1 Artisan::add(new CustomCommand);

ถ้าคำสั่งเราใช้ใน IoC container,เราต้องใช้คำสั่งArtisan::resolve เพื่อมัดคำสั่งของเราไปกับ IOC ด้วย

ตัวอย่างการใช้งาน

1 Artisan::resolve('binding.name');

<a name="calling-other-commands"></a> ## การเรียกใช้คำสั่งอื่นร่วม

บางเวลาเราต้องการจะเรียกใช้คำสั่งอื่นๆ สามารถใช้ฟังก์ชัน call เรียกได้

ตัวอย่างการใช้งาน

1 $this->call('command.name', array('argument' => 'foo', '--option' => 'bar'));