1. Framework và PHP Framework:
Trong lĩnh vực phát triển ứng dụng CNTT hiện nay, trừ những dự án đặc biệt cần phải lập trình tất cả mọi thứ từ A-Z, còn thông thường các dự án đều được bắt đầu từ một nền tảng framework nào đó.
Vậy framework là gì?
- Framework là một bộ mã nguồn được xây dựng, phát triển và đóng gói – phân phối bởi các chuyên gia lập trình hoặc bởi các công ty lập trình.
- Framework sẽ cung cấp một cấu trúc phát triển chuẩn để các developer dựa vào đó xây dựng và phát triển các dự án.
- Đi kèm theo framework là một kho thư viện gồm nhiều lớp/hàm xử lý được đặt trong các packages hoặc namespace riêng. Các thư viện này cung cấp những tính năng thông dụng mà developer dùng đi dùng lại nhiều lần (nếu không dùng framework phải đi viết lại thư viện này thì ngành CNTT sẽ tốn thời gian khá nhiều cho một số công việc lặp lại).
- Các chuyên gia lập trình xây dựng framework sẽ sử dụng nhiều kỹ thuật lập trình và giải thuật/thuật toán để xây dựng các lớp xử lý một cách tối ưu nhất, giải quyết các bài toán lập trình nhanh chóng và chính xác. Các lớp trong một framework sẽ làm việc tốt nhất với cấu trúc chuẩn mà framework đó cung cấp.
Ngôn ngữ lập trình PHP là một trong các ngôn ngữ lập trình thuộc nhóm có nhiều framework nhất. Có thể kể tên những PHP framework nổi tiếng như Laravel, Symfony, CodeIgniter, Yii, Phalcon, CakePHP, Zend, Slim … Mỗi framework có một cách xây dựng khác nhau, tuy nhiên điểm chung của các PHP framework là sử dụng mô hình Model – View – Controller (MVC). Vì vậy, để sử dụng các PHP framework cần hiểu về MVC, nắm vững kiến thức MVC thì các developer sẽ càng dễ dàng làm việc với các PHP framework.
Lợi ích khi sử dụng PHP framework cho các dự án PHP:
- Nâng cao tốc độ phát triển sản phẩm
- Cung cấp code được tổ chức tốt, có thể sử dụng lại và dễ dàng bảo trì
- Cho phép bạn phát triển theo thời gian khi các ứng dụng web chạy trên các framework này có khả năng mở rộng
- Giải phóng bạn khỏi những lo ngại về bảo mật ở mức thấp của một trang web
- Tuân theo mô hình MVC (Model-View-Controller) đảm bảo sự tách biệt phần trình diễn và phần logic nghiệp vụ
- Thúc đẩy phương thức phát triển web hiện đại như các công cụ lập trình hướng đối tượng
2. Giới thiệu Laravel Framework:
Laravel là một PHP Framework mã nguồn mở và miễn phí, được phát triển bởi Taylor Otwell với mục tiêu hỗ trợ phát triển các ứng dụng web theo cấu trúc model – view – controller (MVC) với cú pháp đẹp (slogan của Laravel là “Love beautiful code? We do too.“). Trang chủ của Laravel tại địa chỉ: https://laravel.com .

Laravel ra đời năm 2011 nhưng đến Laravel 4 (phát hành năm 2013 với tên mã Illuminate) thì nó mới bắt đầu nổi tiếng (thực ra đến lúc đó tui mới biết có framework này, tại thời điểm đó tui đang dùng CakePHP). Đến năm 2015, khi Laravel 5 được phát hành thì Laravel thật sự “chiếm diễn đàn” PHP framework, nó nổi tiếng đến mức: khi ai đó nói về PHP framework thì hầu hết mọi người đều nghĩ ngay đến là Laravel. Phiên bản của Laravel tại thời điểm viết bài này là 5.8 (phiên bản hỗ trợ dài hạn gần nhất là 5.5 LTS).
Những tính năng nổi bật của Laravel là cú pháp dễ hiểu – rõ ràng – thân thiện, một hệ thống đóng gói module và quản lý gói phụ thuộc được bố trí khoa học, các tính năng dựng sẵn bằng lệnh artisan, quan tâm nhiều đến việc xử lý các vấn đề bảo mật, nhiều tiện ích khác nhau hỗ trợ việc triển khai và bảo trì ứng dụng.
Phần lõi của phiên bản Illuminate được tối ưu hóa từ lõi của Symfony nên các package Symfony-core bao giờ cũng được cài đặt kèm theo Laravel (khi tạo project xem trong composer.json của package Laravel sẽ thấy).
3. Khởi tạo một dự án Laravel
a/ Trước hết bạn hãy kiểm tra trên máy tính của mình xem Composer đã cài đặt và hoạt động tốt chưa.
b/ Mở CMD tại thư mục mong muốn và gõ lệnh:
composer create-project --prefer-dist laravel/laravel QuanLyNhanSu
Lưu ý: QuanLyNhanSu là tên dự án, cũng là tên folder chứa tất cả code của dự án, bạn có thể thay đổi tên cho phù hợp. Phần lệnh còn lại gõ như trên không được thay đổi.
c/ Nếu không có gì bất ngờ xảy ra thì lệnh sẽ chạy, sau đó dự án sẽ được khởi tạo hoàn tất với một cấu trúc thư mục và file nhìn cũng hơi nhiều nhiều.
4. Cấu trúc thư mục và file của dự án Laravel
Một số thư mục trong dự án cần đề cập:

- /app : đây là thư mục chứa nội dung code PHP sẽ viết, trong /app có các file models và thư mục /app/Http. Trong thư mục Http có thư mục Controllers, /app/Http/Controllers là nơi lưu các file controller sẽ viết.
- /database/migrations : đây là nơi chứa các file định nghĩa bảng cơ sở dữ liệu để khi chạy lệnh php artisan migrate sẽ tự động tạo các bảng cơ sở dữ liệu.
- /public : thư mục chứa file index.php và các thư viện JavaScript, CSS. Người dùng duyệt web sẽ được cấu hình trên webserver chạy thẳng vào thư mục này.
- /resources/views : thư mục chứa các file view. Laravel dùng template engine là Blade nên file view sẽ có tên dạng <tên>.blade.php
- /routes : thư mục này chứa các file route. Vì chúng ta đang viết web nên các route của web sẽ nằm trong web.php
- /vendor : chứa tất cả các gói cài xuống, kể cả laravel, composer.
- file .env : chứa nội dung thiết lập cơ bản cho dự án như tên dự án, thông số kết nối database, thông số kết nối gửi nhận email …
- file composer.json : quản lý các gói PHP của dự án.
5. Thiết lập biến môi trường
a/ Yêu cầu MySQL đang chạy trên máy bạn và PhpMyAdmin cũng đã được cài đặt.
b/ Login vào PhpMyAdmin và tạo người dùng mới: homestead, mật khẩu: secret, database mới: quanlynhansu (bạn có thể đặt tên khác tùy bạn).
c/ Mở file .env của dự án và kiểm tra lại thiết lập kết nối cơ sở dữ liệu như hình bên dưới.

Ngoài ra, bạn còn cần phải khai báo WebServer để thư mục public là thư mục duyệt web của site (DocumentRoot). Đồng thời kiểm tra xem các lệnh trong file .htaccess ở thư mục /public đã cấu hình trỏ vào index.php để xử lý route chưa.
Options +FollowSymLinks -Indexes RewriteEngine On RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L]
Sau khi mọi cái nêu trên đã cấu hình xong, từ trình duyệt web bạn hãy truy cập vào website đã thiết lập. Khi bạn thấy trang bên dưới hiện ra là thiết lập đã thành công.
