Khi mới làm quen với framework Laravel, tôi cũng như bạn rất ngạc nhiên khi biết có một công cụ dòng lệnh. Nhất là những người dùng hệ điều hành window như tôi. Đầu tiên chưa quen thấy ghét ghét nhưng càng về sau tôi lại thấy nó khá hữu ích, nó thật sự xuất sắc khi xử lý các công việc mang tính thủ công bằng cách tự động hóa chúng.
1. Artisan là gì ?
An artisan is a skilled craft worker who makes or creates things by hand that may be functional or strictly decorative – Theo wikipedia
Còn trong Laravel thì Artisan là giao diện command-line được thêm vào Laravel. Nó cung cấp một số lệnh hữu ích mà có thể hỗ trợ bạn trong khi xây dựng ứng dụng của mình. Để xem danh sách tất cả các lệnh Artisan có sẵn, bạn có thể sử dụng lệnh list
để xem toàn bộ cú pháp với Artisan
.
2. Tự Tạo Câu Lệnh
Chắc hẳn đối với ai làm việc với Laravel điều quen thuộc vào lệnh php artisan db:seed
.Nó dùng để seed
dữ liệu vào DB
. Nhưng hôm nay không dùng cái này nữa. Tôi sẽ tự tạo câu lệnh để seed
dữ liệu vào DB
.
Để tạo ra một command mới, sử dụng lệnh của Artisan make:command. Lệnh này sẽ tạo ra một command class trong app/Console/Commands. Đừng lo lắng nếu thư mục này không tồn tại trong ứng dụng của bạn, vì nó sẽ được tạo ra khi lần đầu tiên bạn chạy câu lệnh Artisan make:comand. Các command này được tạo ra sẽ bao gồm các thiết lập mặc định của properties và methods có mặt trên tất cả các command.
php artisan make:command UserCommand
Mở file UserCommand.php lên ta sẽ thấy cấu trúc class như sau
<?php
namespace AppConsoleCommands;
use IlluminateConsoleCommand;
class UserCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'command:name';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
//
}
}
Giả thích qua một chút:
Các tham số cho câu lệnh Artisan được định nghĩa trong thuộc tính signature
. Thuộc tính này cho phép bạn định nghĩa tên câu lệnh, tham số và các tùy chọn. Các tham số được định nghĩa trong hai dấu ngoặc nhọn {parameter}. Chúng ta cũng có thể mặc định giá trị ban đầu cho các tham số.
protected $signature = 'user:insert {numberOfUser=1}'
Ví dụ ta chạy lệnh php artisan user:insert 10 thì sẽ tạo ra 10 user.
Vậy làm sao câu lệnh php artisan user:insert
có thể insert được dữ liệu vào cơ sở dữ lệnh. Mấu chốt vấn đề nằm ở handle()
, trong function
handle()
ta xử lí như sau.
public function handle()
{
$numberOfUser = $this->argument('numberOfUser');
if($this->confirm('Are you sure create user?')) {
$faker = FakerFactory::create();
try {
for ($i=0; $i < $numberOfUser; $i++) {
DB::table('users')->insert([
'name' => $faker->name,
'email' => $faker->unique()->email,
'password' => Hash::make('123456')
]);
}
$this->info($numberOfUser . 'user create success');
} catch (Exception $e) {
$this->error('Error ' . $e . ' when create users.');
}
}
}
Nhớ khai báo thêm use Faker
use Hash
use DB
trên class nhé!!!
Tiếp theo, để sử dụng được câu lệnh này chúng ta cần đăng ký nó trong appConsoleKernel.php trong thuộc tính commands
:
protected $commands = [
CommandsUserCommand::class,
];
Thực hiện liệt kê danh sách các lệnh artisan xem đã có chưa?
php artisan list
....
user
user:insert Create an user by Nguyen Huu Su
....
OK, bước theo là config tên DB
trong file .env
và chạy migrate để tạo bảng users
trong DB
Xong rồi thì mở comand line lên và chạy lệnh php artisan user:insert 10
.
php artisan user:insert 10
Are you sure create user? (yes/no) [no]:
> yes
10 user create success
Lên DB
vào bảng users
kiểm tra kết quả bạn sẽ thấy được 10 trường được thêm vào bảng. Done !
3. Tổng Kết
Laravel Artisan giúp cho các công việc phần backend dễ chịu hơn rất nhiều, chúng ta hoàn toàn có thể tạo ra những câu lệnh thực hiện các kịch bản giúp việc viết code hoặc quản trị website. Có thể nói Laravel Artisan là một ý tưởng rất hay, một công cụ giúp cho framework Laravel đang tạo ra sự khác biệt so với các framework khác. Cũng có thể do Taylor Otwell, người phát triển ra framework Laravel là một lập trình viên lâu năm của .NET được sử dụng công cụ Microsoft Visual Studio quá tiện lợi, muốn đưa luồng gió đó vào với ngôn ngữ PHP. Chúng ta hãy cùng chờ xem, liệu Laravel còn những cái gì khác khiến chúng ta phải trầm trồ.
Bài viết liên quan
[CSF-2] Một số thiết lập CSF, LFD
Hôm nay mình sẽ thực hiện một số thiết lập trên CSF Mở file config để sửa đổi một số tính năng dưới /etc/csf/csf.conf Nội dung chính1. Artisan là gì ?2. Tự Tạo Câu Lệnh3....
[CSF-1] Tăng bảo mật Server với ConfigServer Firewall (CSF)
Nội dung chính1. Artisan là gì ?2. Tự Tạo Câu Lệnh3. Tổng Kết1. Khái niệm CSF: CSF (ConfigServer & Firewall) là một bộ ứng dụng hoạt động trên Linux như một firewall được phát hành...
Sử dụng SSH Key với Gitlab và Github
Bài viết này mình sẽ hướng dẫn các bạn tạo ssh key cho Gitlab và Github SSH là gì? Secure Socket Shell là một giao thức mạng dùng để thiết lập kết nối mạng một...
Directory traversal vulnerabilities (phần 4)
Nội dung chính1. Artisan là gì ?2. Tự Tạo Câu Lệnh3. Tổng KếtV. Phân tích và khai thác các lỗ hổng Directory traversal (tiếp) 5. Bypass lỗ hổng khi trang web sử dụng đường dẫn...
Directory traversal vulnerabilities (phần 3)
Nội dung chính1. Artisan là gì ?2. Tự Tạo Câu Lệnh3. Tổng KếtV. Phân tích và khai thác các lỗ hổng Directory traversal 1. Lỗ hổng xảy ra khi sử dụng các hàm đọc file...
Directory traversal vulnerabilities (phần 2)
Nội dung chính1. Artisan là gì ?2. Tự Tạo Câu Lệnh3. Tổng KếtIII. Vì sao lỗ hổng Directory traversal xuất hiện? Với mỗi ngôn ngữ lập trình khác nhau, điểm xuất hiện các lỗ hổng...