Laravel là một PHP Framework mã nguồn mở và miễn phí cha đẻ của nó là Taylor Otwell xây dựng bởi một FW khác là Symfony nên sử dụng rất nhiều thành phần được xây dựng từ Symfony. Laravel được ra mắt phiên bản beta đầu tiên vào ngày (9/6/2011) với mục đích ra đời nhằm phát triển ứng dụng đơn giản đến phức tạp theo mô hình Route - Model - View - Controller (RMVC).

laravel-banne

Mã nguồn được đặt trên Github ( Một mạng xã hội lưu trữ code nhằm giúp cho các Coder ( Người lập trình ) có thể quản lý và phổ biến code của mình góp phần là nơi để nâng cao CV ( Hồ sơ cá nhân ) của mình trước các nhà tuyển dụng). Và Laravel được cài đặt trực tiếp qua nhiều cách, còn cách nào thì đọc bên dưới bạn sẽ nắm bắt rõ hơn nhé, mình sẽ đưa ra những cách đơn giản và có thể áp dụng.

Laravel tính ra còn khá là mới tính tới thời điểm này 2017 thì Laravel đã 6 năm tuổi so với các FW. Chính vì sinh sau đẻ muộn nên nó kế thừa, thậm chí là cải tiến các tính năng của các FW đàn anh là Codeigniter. Với các Domcument được biên soạn và hướng dẫn chi tiết. Ngoài ra nó còn lấy những tính năng ưu việt của ASP.NET, Ruby on Rails và Sinatra, nên những ai không thuộc trường phái PHP có thể tiếp xúc và làm việc với Laravel rất nhanh chóng.

Mình sử dụng Laravel đến nay cũng làm năm thứ 4, trước đó mình rất thích dùng Codeigniter và đôi khi nghĩ không có FW nào có thể nhẹ và phát triển ứng dụng khá tốt như Codeigniter với bộ Core ít thay đổi, chỉ là code thuần khá là nhiều, qua Laravel rồi thì mọi thứ cảm thấy nhẹ nhàng hơn, bảo trì code tốt hơn, viết ứng dụng nhanh hơn rất nhiều.

Các thế mạnh chính của Laravel bạn có thể nắm đó là:

Composer: Từ phiên bản 4.x. Laravel sử dụng Composer để quản lý ví dự như nâng cấp, cài đặt... bạn có thể hiểu nôn na nó như là người quản lý ca sĩ, còn ca sĩ là laravel. Đây là cách cài cài đặt phổ biến nhất.

Eloquent ORM: Thao tác với cơ sở dữ liệu thông qua Model với cú pháp đẹp mắt và đơn giản, được cái này mất cái kia đó là ở những thao tác lấy dữ liệu phức tạp thì nó tỏ ra khá chậm so với Query Builder.

$article = Article::find(1) // Lấy bài viết có id = 1
$article = Article::whereSlug('hoc-lam-web')->first() // Lấy bài viết có slug = 'hoc-lam-web'
$article = Article::whereSlug('hoc-lam-web')->where('status_id',1)->first() // Lấy bài viết có slug = 'hoc-lam-web', có trạng thái = 1, và lấy duy nhất 1 bài
$article = Article::all() // Lấy tất cả các bài viết

Route: Nghĩa là các định tuyến, quản lý mọi thứ về đường dẫn (URL) như ví dụ sau:

huynhtong/slug.html
huynhtong.com/post.html

Các slug.html, post.html là các định tuyến mà mình có thể thay đổi đơn giản mà bạn không cần phải dùng .htaccess để tạo pretty url thân thiện với SEO ( hiểu đơn giản là tối ưu URL để dễ lọt vào mắt xanh top 10 của Google hay các bộ máy tìm kiếm khác).

// Trang chủ
Route::get('/',[
    'as'  => "home.index",
    'uses' => "HomeController@index"
]);

//Sitemap
Route::get('/sitemap.xml',[
    'as'  => "home.sitemap",
    'uses' => "HomeController@sitemap"
]);

Bạn có thể tưởng tượng Route đơn giản là người bảo vệ công ty, khi các truy vấn ( khách hàng ) tới bất kỳ phòng ban nào, thì Route có nhiệm vụ kiểm tra, hỏi han xem truy vấn muốn đi đâu, có phải là kẻ xấu không, có tìm đúng người cần gặp không thì mới cho phép đi tiếp, bên cạnh Route là các đệ tử Middleware ( Tạo các bộ lọc ) giúp Route chặn các truy vấn xấu, và nếu truy vấn vào nhiều ... và còn rất rất nhiều điều về route, nếu có thời gian, mình sẽ viết thêm.

Restful API: Thời đại giờ là thời đại mobile rồi, thế nên việc biến Laravel thành một web service API khá là đơn giản bởi đã được hỗ trợ tới tận răng.

Artisan: Không thể không nhắc tới nó, nó là Command Line Interface ( CLI ) được tích hợp bên trong Laravel cung cấp các lệnh cần thiết để phát triển ứng dụng, ví dụ kể đến là quản lý các route, tạo bảng trong database, xóa cache... sẽ có bài giới thiệu chi tiết về nó, nhớ đón đọc nhé :D

View: sử dụng template engine Blade có đuôi file là file.blade.php, đây là thế mạnh và là điều tuyệt vời khi sử dụng Laravel, nó giúp code của bạn sạch sẽ hơn rất nhiều, thay vì phải viết php lồng trong HTML như:

<p><?php echo $huynhtong ?></p>

thì giờ bạn chỉ cần viết:

<p>{{ $huynhtong }}</p>

Quá đơn giản phải không? Thật ra nó lấy cảm hứng từ Razor template của ASP.NET và cách truyền dữ liệu giống Codeigniter. Ngoài ra việc tạo Master Layout rất hay với các cơ chế kế thừa và tạo vùng (section). Nó tạo ra một khái niệm đúng nghĩa về Frontend và Backend, việc ráp code HTML trở nên vô cùng đơn giản.

Migrations: cái này bạn hiểu đơn giản là nó giúp bạn tạo các trường trong cơ sở dữ liệu, mối quan hệ giữa các bảng, thêm thắt các cột trong bảng, và có thể quay lại nếu bạn muốn, nó rất cần thiết khi làm việc đội nhóm, và nhờ nó bạn có thể quản lý CSDL theo ý muốn của bạn trở nên đơn giản nhất nhờ lấy cảm hứng từ Ruby on Rails. Ở ví dụ bên dưới là mình tạo một bảng category_translations :

class CreateCategoryTranslationsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('category_translations', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->string('description');
            $table->string('keywords');
            $table->integer('category_id')->unsigned()->index();
            $table->foreign('category_id')
                ->references('id')
                ->on('categories')
                ->onDelete('cascade');
            $table->string('locale')->index();
            $table->unique(['category_id', 'locale']);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('category_translations');
    }
}

Authentication: Laravel đã cung cấp sẵn các tính năng đăng nhập, đăng ký, quên mật khẩu ... Tuy nhiên mình thì thường dùng bên thứ 3 như Sentinel để quản lý hơn thành viên, nhóm, quyền hạn tốt hơn.

Unit Testing: thật là thiếu sót khi làm một ứng dụng mà không test lỗi, Laravel hiểu được điều đó nên đã tích hợp để giúp người phát triển code nhẹ nhàng hơn, chia ứng dụng ra test giúp ứng dụng của bạn chắc chắn hơn rất nhiều so với làm xong mới test.

Ngoài ra còn nhiều tính năng mình sẽ viết hướng dẫn về các tính năng đó ở những bài sau.

Khi mình tiếp xúc với Laravel thì nó mới ở phiên bản 3.x, và cảm thấy nó rất mạnh ở phiên bản 4.x, hiện tại khi viết bài này nó đã là phiên bản 5.4. Trong đó mình thích nhất phiên bản 4.2 còn vì sao thích thì có lẽ do ăn ngủ với nó nhiều quá nên khi lên bản 5 thấy nó cứ nhớ nhớ, hiện tại bản 4.2.21 đã được cập nhật và mình cũng hay dùng nó để viết ứng dụng. Chi tiết sâu về các phiên bản thì bạn có thể hỏi giáo sư Google nhé.

Lời kết:

Bạn thấy đấy, với những thế mạnh bên trên thì Laravel thật là PHP FW đáng gờm trong các PHP FW và nói không xa thì nó đang là PHP FW phổ biến nhất, được nhiều người bình chọn nhất và các ebook ra mắt luôn đứng top. Với những kinh nghiệm và am hiểu về Laravel FW, mình hi vọng sẽ có thể hoàn thành series góp phần giúp bạn yêu thích FW này có thêm kinh kiệm, hướng đi, cách làm trong công việc.

Ngoài ra bạn có thể đọc thêm cách seo web vienit của bạn Hòa Huỳnh.

Cám ơn bạn đã đọc bài. Nếu có thắc mắc hay bổ sung, góp ý bài viết thì comment cho mình phát bên dưới nhé.