Làm quen với Laravel framework

I. PHP FRAMEWORKS

Các PHP framework là các nền tảng open source viết bằng PHP, được tạo ra để giúp bạn phát triển các ứng dụng web nhanh chóng hơn. Các PHP Framework thường ứng dụng mô hình MVC, OOP. 

Đội ngũ phát triển framework cũng thường tạo sẵn các class, quy ước cấu trúc folder, tên biến và các chức năng cơ bản. Nhờ đó giúp bạn và team tiết kiệm được thời gian triển khai dự án, code sẽ ổn định hơn, hạn chế viết lại mã.

Hiện có nhiều PHP Framework như Laravel, CakePHP, CodeIgnitor, Yii, Kohana, Phalcon, Zend, Slim, PHPixie…

php frameworka

II. SỬ DỤNG COMPOSER

Composer là một chương trình open source miễn phí , nó giúp bạn quản lý các gói thư viện trong ứng dụng web. Nhờ composer mà bạn sẽ tiết kiệm nhiều thời gian và công sức trong việc bổ sung / cập nhật/ gỡ bỏ các gói thư việc trong project của mình. Khi cần cài thư viện nào, bạn chỉ cần khai báo, composer sẽ tự động tải chúng về thông qua một server cộng đồng.

Tóm lại, Composer giúp bạn quản lý thư viện một cách chuyên biệt từng project tương tự như npm của NodeJS hay Bundler của Ruby

Mọi thiết lập Composer cho project đều chứa trong file composer.json của folder project.

1. Download chương trình composer

Vào http://getcomposer.org/để thực hiện

2. Cài đặt composer

Chạy file composer đã download. Trong quá trình cài, nhớ khai báo đúng đường dẫn của chương trình php.exe

Sau khi cài xong, bạn có thể mở composer bằng cách gõ lệnh composer từ command line.

3. Các lệnh thường dùng trong composer

– Xem version:   composer –V

– Cập nhật composer:    composer selfupdate

– Tìm các gói thư viện:   composer search từ_khóa(vd từ khóa: mail/upload/json…)

– Bổ sung thư viện vào dự án:  composer require tênthưviện.
Ví dụ:
composer require symfony/mailer
composer require monolog/monolog

Composer sẽ down về bỏ vào folder vendor , tạo file vendor/autoload.php và cập nhật trong file composer.json code:

{
    "require": {
        "symfony/mailer": "^5.0",
        "monolog/monolog": "^2.0",
    }
}

– Có thể tìm các thư viện tại:  https://packagist.org/

– Cập nhật các gói thư viện trong file composer.json     composer update

– Xóa thư viện khỏi dự án :    composer remove vendor/package

III. LÀM QUEN VỚI LARAVEL

1. Giới thiệu Laravel

Laravel ra đời vào 2011, là framework PHP có tài liệu đầy đủ, dễ hiểu và nhiều ưu điểm hấp dẫn như:

  • Dễ dử dụng.
  • Các lệnh tương tác với database rất ngắn gọn,
  • Dễ dàng tích hợp các thư viện vào project.
  • Điều khiển định tuyến (resful routing)
  • Theo mô hình MVC
  • Blade templating: giúp tạo layout cho các view và có thể kế thừa dễ dàng.
  • Eloquent orm: là một orm tuyệt vời với khả năng migration data và làm việc tốt với mysql, postgres, sql server và sqlite
  • Tốc độ xử lý nhanh
  • Sử dụng composer để quản lí các gói mở rộng
  • Cache drivers
  • Rất nhiều chức năng hay: artisan, mirgration, seeder, …

Website: http://laravel.com/ .

2. Cài đặt laravel

composer create-project --prefer-dist laravel/laravel TênFolder

3. Khai báo thông số cơ bản

Các thông số quan trọng được đặt trong file .env

  • APP_URL là địa chỉ website của bạn, bổ sung vào folder website để có địa chỉ đúng.
  • APP_KEY: là 1 chuỗi được tạo ngẫu nhiên khi cài đặt laravel, dùng cho việc mã hóa và giải mã các biến cookie
  • DB_HOST : Là địa chỉ của server chạy mysql.
  • DB_PORT: Là cổng port của server Mysql (thường để mặc định là 3306).
  • DB_DATABASE: Là tên database bạn sẽ kết nối tới
  • DB_USERNAME: Là username để kết nối vào database.
  • DB_PASSWORD: Là password để kết nối vào database

4. Cấu trúc file và folder của Laravel

  • app là folder ứng dụng, chứa các folder, file php, các class php, các thư viện, models để xây dựng project của bạn.
    • Console folder chứa các file định nghĩa các lệnh thực thi trên Artisan.
    • Exception folder chứa các file quản lý, điều hướng lỗi
    • Http
      • Controllers là folder chứa các file controllers
      • Middleware là folder chứa các file lọc và ngăn chặn các requests.
      • Kernel.php là file cấu hình, định nghĩa Middleware hoặc nhóm Middleware.
    • Providers chứa các providers.
  • bootstrap folder chứa file khởi động hệ thống, đừng đụng tới nó.
  • config chứa mọi file cấu hình của Laravel
  • database chứa các folder file về CSDL
    •  migrations chứa các file định nghĩa khởi tạo và sửa các table trong database.
    •  seeds chứa các file định nghĩa dữ liệu insert vào database.
    •  factories chứa các file định nghĩa các cột dữ liệu để tạo ra các dữ liệu ảo phục vụ cho tests.
  • public chính là webroot người dùng sẽ truy cập vào đây.
  • resources chứa các file giao diện (js, css, less, sass,…), views, ngôn ngữ.
  • storage chứa các file hệ thống như upload, cache, session, cookie, log…
  • routes là folder chứa các file định nghĩa các route, gồm 3 loại là web, api và console.
  •  tests chứa các file định nghĩa tests.
  • vendor folder của composer.
  • .env là file cấu hình chính của laravel như key app, tên app, url app, email,  env mode, database hay bật tắt debug.
  • composer.json, composer.lock file của composer.
  • package.js file cấu hình của nodejs chứa các package cần thiết cho projects.
  • server.php là file để artisan trỏ đến tạo server khi gõ lệnh php artisan serve
  • artisan file thực thi của Laravel.

5. Sử dụng Artisan

Artisan là 1 tiện ích có sẵn trong Laravel và rất hữu ích, chạy nó trong command line. Nó cung cấp nhiều chức năng giúp tự động hóa công việc, giúp tiết kiệm thời gian và công sức khi khi xử lý các công việc mang tính thủ công. Ví dụ các việc chạy các công việc ngầm theo kiểu hàng đợi (queue job), sử dụng cache, các việc xử lý database như migrate, tạo dữ liệu test.

Artisan cũng có thể giúp bạn tạo các model, controller, event… Các việc liên quan đến bảo mật như cài đặt xác thực người dùng, sinh key mã hóa, các việc liên quan đến sử dụng OAuth2.

a. Chuẩn bị

Mở commanfd line rồi chuyển vào folder đã cài đặt laravel

b. Xem các lệnh trong artisan

php artisan list

Lệnh trên giúp xem các lệnh mà artisan cung cấp, có thể tạo thêm các lệnh riêng, các lệnh thường lưu trong folder app/Console/Commands

c. Kiểm tra version của laravel

php artisan --version

d. Đưa ứng dụng về chế độ bảo trì

php artisan down

e. Đưa ứng dụng hoạt động trở lại

php artisan up

f. Liệt kê các route

php artisan route:list

g. Tạo controller

php artisan make:controller HomeController

h. Tạo key mới

php artisan key:generate

i. Tạo model

php artisan make:model loaitin

j. Chạy project với artian serve

  • Ở command line, gõ lệnh   php artisan serve
  • Mở trình duyệt và gõ lệnh  http://localhost:8000 ==> sẽ thấy project được chạy

Ghi chú: nếu muốn chạy port khác (ví dụ 8080)  thì gõ lệnh : php artisan serve –port=8080

6. Tạo controller

Cách 1:  Tạo bằng tay:  app/Http/controllers/TheloaiController.php

<?php
namespace App\Http\Controllers;
class TheloaiController extends Controller {  
     //định nghĩa các action
}

Cách 2:   Tạo controller bằng artisan

php artisan make:controller ThuctapController

7. Tạo action trong controller

public function tinhtich($a,$b){
   return $a*$b;
}

8. View

Các file view được lưu trong folder   resources/views. Bạn có thể nạp view từ  action trong controller, hoặc từ từ view cha, cũng có  thể nạp view trong routing (không cần thông qua controller)

Nạp view từ view cha, từ routing:

return View::make('viewfilename' [, $data] );

trong đó $data là dãy chứa các biến sẽ truyền vào cho view

Có thể xác định 1 view tồn tại hay không

if (view()->exists(viewfilename')) {     // }

4. Routing trong Laravel

Routing là cách tạo đường dẫn (giống như htaccess) trong laravel cho các action, view. Các routing này được khai báo trong file routes/web.php

a. Routing để nạp view

Route::get('/chao', function(){
    return View::make('xinchao', array('goi'=>'Anh','ten' => 'Tèo'));
});

Tạo  resources/views/xinchao.php

<html><body> <h1>Xin chào <?=$goi?> <?=$ten?></h1> </body></html>

Test: http://localhost/la1/public/chao 

b.  Routing nạp view có tham số

Route::get('tinhtong/{x}/{y}', function($a,$b){
    $t = $a+$b;
    return View::make('tinhtong', array('tong'=>$t));
);

Tạo  resources/views/tinhtong.php

Tổng = <?=$tong;?>

Xem thử: http://localhost/la1/public/tinhtong/3/6 

c. Routing gọi action trong controller

/* Laravel 7 :
Route::get('tich/{a}/{b}', 'thuctapController@tinhtich'); 
*/

/*Laravel 8: 
*/
use App\Http\Controllers\ThuctapController;
Route::get('tich/{a}/{b}', [ThuctapController::class, 'tinhtich']);

Test: localhost/la1/public/tich/3/6

d. Routing có điều kiện của tham số

Route::get('tich/{a}/{b}', 'thuctapController@tinhtich')->where(['a' => '[0-9]+', 'b' => '[a-z0-9]{2}'])

Test: http://localhost/la1/public/tich/3/2a