Tải bản đầy đủ (.pdf) (94 trang)

Xây dựng module quản lý công tác và phân công công việc cho website quản lý của bộ môn mạng truyền thông – khoa công nghệ thông tin

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.05 MB, 94 trang )

 LỜI CẢM ƠN
Em xin chân thành cảm ơn các thầy cô giáo, gia đình và bạn bè đã
động viên giúp đỡ em rất nhiều trong quá trình hoàn thành đề tài này. Đặc
biệt em xin bày tỏ lòng cảm ơn sâu sắc tới thầy giáo hướng dẫn Ts. Nguyễn
Toàn Thắng về sự chỉ dẫn tận tình và tận tâm hướng dẫn em từ những ý
tưởng ban đầu cho đến lúc hoàn thành đề tài này.
Em rất mong đón nhận sự đánh giá, bổ sung và những lời chỉ bảo của
các thầy cô giúp em có thể tiếp tục nghiên cứu kĩ hơn về lĩnh vực này.
Em xin chân thành cảm ơn!
Thái Nguyên, tháng 06 năm 2016
Sinh viên thực hiện

Nguyễn Đức Dương

1


 LỜI CAM ĐOAN
Em xin cam đoan đồ án này là công trình tổng hợp và nghiên cứu của
cá nhân em, được thực hiện trên cơ sở nghiên cứu lý thuyết, kiến thức dưới
sự hướng dẫn tận tình của thầy giáo Ts. Nguyễn Toàn Thắng. Trong đồ án
có sử dụng một số tài liệu tham khảo như đã nêu trong phần tài liệu tham
khảo.
Thái Nguyên, tháng 06 năm 2016
Sinh viên thực hiện

Nguyễn Đức Dương

2



 MỤC LỤC
MỤC LỤC 4
DANH MỤC HÌNH ẢNH
LỜI NÓI ĐẦU

7

9

CHƯƠNG 1. CƠ SỞ LÝ THUYẾT

10

1.1. Giới thiệu chung 10
1.1.1. Laravel là gì

10

1.1.2. Lịch sử phát triển của Laravel 10
1.2. Tổng quan cấu trúc ứng dụng 13
1.2.1. Nội dung thư mục gốc 13
1.2.2. Nội dung thư mục app 14
1.3. Ưu nhược điểm 14
1.3.1. Ưu điểm

14

1.3.2. Nhược điểm

15


1.4. Điểm mới ở Laravel 5 16
1.4.1. Laravel 5 và cấu trúc thư mục 16
1.4.2. Thay đổi về template engine Blade 17
1.4.3. Các khái niệm về Contracts , Commands và Events
1.4.4. Hàm hỗ trợ Helpers

17

1.4.5. Định tuyến Routes

18
3

17


1.4.6. Controller Method Injection – Bộ điểu khiển theo phương
thức chia nhỏ

18

1.4.7. Authentication Scaffolding – chứng thực khung 19
1.4.8. Tính giao thiệp Socialite
1.4.9. Hệ thống Flysystem

19

19


1.4.10. dotenv – Environmental Detection – phát hiện môi trường
20
1.4.11. Form Requests – mẫu yêu cầu

20

1.4.12. Laravel Scheduler – laravel lịch trình
1.4.13. Hàm dd mới

20

21

1.4.14. Tính năng Eloquent Attribute Casting

21

1.4.15. Bỏ trang báo lỗi Whoops và Các lệnh generator mới
1.5. Lựa chọn Laravel

22

22

CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH THIẾT KẾ 25
2.1. Khảo sát thực tế 25
2.1.1. Giới thiệu chung về bộ môn Mạng và Truyền thông
2.1.2. Hiện trạng 26
2.1.3. Các biểu mẫu


27

2.1.4. Nhu cầu có một trang web thay thế. 30
2.1.5. Phân tích yêu cầu đề tài 30
2.2. Thiết kế hệ thống

31

2.2.1. Biểu đồ ca sử dụng (UseCase Diagram)
4

31

25


2.2.2. Biểu đồ lớp (Class Diagram) 35
2.2.3. Biểu đồ trình tự (Sequence Diagram) 40
CHƯƠNG 3. XÂY DỰNG CHƯƠNG TRÌNH
3.1. Xây dựng và cài đặt chương trình

47

47

3.1.1. Cài đặt webserver (không bắt buộc) 47
3.1.2. Cài đặt composer 50
3.1.3. Tích hợp module vào hệ thống51
3.2. Demo chương trình


62

KẾT LUẬN 69
TÀI LIỆU THAM KHẢO

71

NHẬN XÉT CỦA GIÁO VIÊN72

5


 DANH MỤC HÌNH ẢNH
Hình 1. Biểu đồ cho thấy mức độ yêu thích phổ biến và hiệu suất làm việc 23
Hình 2. Bản dữ liệu đầu vào đối với loại nhiệm vụ lịch thi

27

Hình 3. Bản dữ liệu đầu vào đối với loại nhiệm vụ lịch thi kiểm tra thi giữa kỳ
28
Hình 4. Kết quả thực hiện kế hoạch công tác28
Hình 5. Danh sách công việc

29

Hình 6. Danh sách nhiệm vụ

29

Hình 7. Biểu đồ usecase tổng quan hệ thống 33

Hình 8. Bản vẽ sơ bộ Class Diagram khi phân tích các Use Case

36

Hình 9. Bản vẽ Class Diagram sau khi thêm thuộc tính , tách các quan hệ và
đặc tả thuộc tính

37

Hình 10. Biểu đồ lớp chi tiết

39

Hình 11. Biểu đồ trình tự chức năng thêm công việc

41

Hình 12. Biểu đồ trình tự chức năng phân công công việc42
Hình 13. Biểu đồ trình tự chức năng tìm kiếm lọc thông tin công việc 43
Hình 14. Biểu đồ trình tự chức năng đồng bộ dữ liệu lên google calendar
44
Hình 15. Biểu đồ trình tự chức năng gửi mail
Hình 16. Cài đặt xampp bước 1 47

6

46


Hình 17. Cài đặt xampp bước 2 48

Hình 18. Cài đặt xampp bước 3 49
Hình 19. Thêm đường dẫn trong path 50
Hình 20. Giao diện đăng nhập quản trị

62

Hình 21. Giao diện quản lý gửi và nhập dữ liệu, giao diện chọn loại

62

Hình 22. Giao diện quản lý gửi và nhập dữ liệu, loại công việc là lịch thi
63
Hình 23. Giao diện quản lý gửi và nhập dữ liệu, loại công việc không phải
là lịch thi bước 1 63
Hình 24. Giao diện quản lý gửi và nhập dữ liệu, loại công việc không phải
là lịch thi bước 2 64
Hình 25. Giao diện danh sách dữ liệu được gửi lên 64
Hình 26. Giao diện quản lý phân công, danh sách công việc

65

Hình 27. Giao diện quản lý phân công, danh sách nhiệm vụ công việc 65
Hình 28. Giao diện quản lý phân công, thay đổi số người tham gia

66

Hình 29. Giao diện quản lý phân công, phân công và thay đổi phân công
công việc

66


Hình 30. Giao diện quản lý phân công, thay đổi thời gian thực hiện công
việc về công việc thực hiện trong ngày.

67

Hình 31. Giao diện quản lý phân công, thay đổi thời gian thực hiện công
việc về công việc thực hiện dài ngày 67
Hình 32. Giao diện quản lý phân công, gửi mail cho giảng viên 68

7


Hình 33. Giao diện quản lý phân công, lịch làm việc

8

68


 LỜI NÓI ĐẦU
Ngày nay Internet đã trở thành dịch vụ phổ biến và thiết yếu,
không thể thiếu. Cùng với sự phát triển nhanh chóng của Internet thì
các hình thức quản lý các thông tin cũng ngày càng đa dạng và phát
triển hơn. Tại bộ môn hiện nay, việc quản lý công việc có nhiều bất cập
do hầu hếu các tài liệu và thông tin được lưu và quản lý bằng Excel…
Việc thống kê cũng như theo dõi công việc cũng như lịch làm việc của
giảng viên gặp rất nhiều khó khăn.
Trong kế hoạch phát triển của bộ môn đã đặt ra nhiệm vụ phải xây
dựng một hệ thống quản lý trên nền web để hỗ trợ các công việc quản lý

của bộ môn. Website quản lý này bao gồm bốn module chính: module
quản lý công tác và phân công công việc; module quản lý thực tập;
module quản lý đào tạo; module thông tin. Đề tài của đồ án là module
thứ nhất trong hệ thống quản lý của bộ môn.
Mục tiêu của đồ án là xây dựng module quản lý công tác và phân
công công việc cho website quản lý của bộ môn mạng & truyền thông –
khoa công nghệ thông tin sử dụng Laravel Framework.
Dự kiến kết quả đạt được: module quản lý nhiệm vụ cho bộ môn thực
hiện được các chức năng cơ bản: Nhập xuất dữ liệu công tác nhận được từ
văn phòng khoa; Hỗ trợ quản lý phân công nhiệm vụ; Gửi thông báo cho
giảng viên liên quan; Tích hợp với google calendar.
Nội dung báo cáo bao gồm các phần như sau:
Chương 1: Cơ sở lý thuyết
Chương 2: Khảo sát và phân tích thiết kế
Chương 3: Xây dựng chương trình
Tuy nhiên, do thời gian hạn hẹp, mặc dù đã nỗ lực hết sức mình
nhưng chắc rằng khó tránh khỏi thiếu sót. Em rất mong nhận được sự
thông cảm, những lời góp ý và chỉ bảo tận tình của quý Thầy Cô và
các bạn.

9


 CƠ SỞ LÝ THUYẾT
 Giới thiệu chung
 Laravel là gì
Laravel là một PHP framework mã nguồn mở và miễn phí, được phát
triển bởi Taylor Otwell và nhắm vào mục tiêu hỗ trợ phát triển các ứng dụng
web theo kiếm trúc Model-View-Controller (MVC). Những tính năng nổi
bật của Laravel bao gồm cú pháp dễ hiểu – rõ ràng , một hệ thống đóng gói

modular (khối kết cấu) và quản lý gói phụ thuộc, nhiều cách khác nhau để
truy cập vào các cơ sở dữ liệu quan hệ, nhiều tiện ích khác nhau hỗ trợ việc
triển khai vào bảo trì ứng dụng.
Vào khoảng Tháng 3 năm 2015, các lập trình viên đã có một cuộc
bình chọn PHP framework phổ biến nhất, Laravel đã giành vị trí quán quân
cho PHP framework phổ biến nhất năm 2015, theo sau lần lượt là
Symfony2, Nette, CodeIgniter, Yii2 vào một số khác. Trước đó, Tháng 8
2014, Laravel đã trở thành project PHP phổ biến nhất và được theo dõi
nhiều nhất trên Github.
Laravel được phát hành theo giấy phép MIT (Giấy phép MIT là một
loại giấy phép sử dụng cho các phần mềm, các mã nguồn mở được phát triển
dựa trên một loại giấy phép có nguồn gốc tại Viện Công nghệ
Massachusetts), với source code được lưu trữ tại Github (Git là tên gọi của
một Hệ thống quản lý phiên bản phân tán (Distributed Version Control
System – DVCS) là một trong những hệ thống quản lý phiên bản phân tán
phổ biến nhất hiện nay).
10


 Lịch sử phát triển của Laravel
Laravel được Taylor Otwell tạo ra như một giải pháp thay thế cho
CodeIgniter, cung cấp nhiều tính năng quan trọng hơn như xác thực và
phân quyền. Tôi cũng không chắc về điều này, nhưng có thể Taylor vốn là
một .NET developer khi bắt đầu có nhu cầu làm việc với PHP khoảng vào
những năm 2010-2011, đã chọn CodeIgniter khi đó đang là một ngôi sao
mới nổi, thậm chí lấn át cả Symfony gạo cội. Và Taylor nhanh chóng nhận
ra những điểm khiếm khuyết ở CodeIgniter, với tài năng và kiến thức xuất
sắc về design-pattern của mình, Taylor quyết định tự mình tạo ra một
framework sao cho thật đơn giản, dễ hiểu, hỗ trợ lập trình viên hiện thực ý
tưởng một cách nhanh nhất bằng nhiều tính năng hỗ trợ như Eloquent ORM

(Object Relational Mapping - kỹ thuật chuyển đổi dữ liệu giữa các hệ thống
khác không phải là mô hình hướng đối tượng sang các đối tượng trong ngôn
ngữ lập trình hướng đối tượng) mạnh mẽ, xác thực đơn giản, phân trang
hiệu quả, và hơn thế nữa.
Bản Laravel beta đầu tiên được phát hành vào ngày 9/6/2011, tiếp đó
là Laravel 1 phát hành trong cùng tháng. Laravel 1 bao gồm các tính năng
như xác thực, bản địa hóa, model, view, session, định tuyến và các cơ cấu
khác, nhưng vẫn còn thiếu controller, điều này làm nó chưa thật sự là một
MVC framework đúng nghĩa.
Laravel 2 được phát hành vào tháng 9 năm 2011, mang đến nhiều cài
tiến từ tác giả và cộng đồng. Tính năng đáng kể bao gồm hỗ trợ controller,
điều này thực sự biến Laravel 2 thành một MVC framework hoàn chỉnh, hỗ
trợ Inversion of Control (IoC – kiểm soát ngược), hệ thống template Blade.
Bên cạnh đó, có một nhược điểm là hỗ trợ cho các gói của nhà phát triển

11


bên thứ 3 bị gỡ bỏ.
Laravel 3 được phát hành vào tháng 2 năm 2012, với một tấn tính
năng mới bao gồm giao diện dòng lệnh (CLI- Command-line interface
giao diện dòng lệnh) tên “Artisan” (nghệ nhân), hỗ trợ nhiều hơn cho hệ
thống quản trị cơ sở dữ liệu, chức năng ánh xạ cơ sở dữ liệu Migration
(di trú), hỗ trợ “bắt sự kiện” trong ứng dụng, và hệ thống quản lý gói gọi
là “Bundles” (bó). Lượng người dùng và sự phổ biến tăng trưởng mạnh
kể từ phiên bản Laravel 3.
Laravel 4, tên mã “Illuminate”, được phát hành vào tháng 5 năm
2013. Lần này thực sự là sự lột xác của Laravel framework, di chuyển và tái
cấu trúc các gói hỗ trợ vào một tập được phân phối thông qua Composer
(phần mềm soan thảo lệnh theo CLI), một chương trình quản lý gói thư viện

phụ thuộc độc lập của PHP. Bố trí mới như vậy giúp khả năng mở rộng của
Laravel 4 tốt hơn nhiều so với các phiên bản trước. Ra mắt lịch phát hành
chính thức mỗi sáu tháng một phiên bản nâng cấp nhỏ. các tính năng khác
trong Laravel 4 bao gồm tạo và thêm dữ liệu mẫu (database seeding), hỗ trợ
hàng đợi, các kiểu gởi mail, và hỗ trợ “xóa mềm” (soft-delete: record bị lọc
khỏi các truy vấn từ Eloquent mà không thực sự xóa hẳn khỏi DB).
Laravel 5 được phát hành trong tháng 2 năm 2015, như một kết quả
thay đổi đáng kể cho việc kết thúc vòng đời nâng cấp Laravel lên 4.3. Bên
cạnh một loạt tính năng mới và các cải tiến như hiện tại, Laravel 5 cũng giới
thiệu cấu trúc cây thư mục nội bộ cho phát triển ứng dụng mới. Những tính
năng mới của Laravel 5 bao gồm hộ trợ lập lịch định kỳ thực hiện nhiệm vụ
thông qua một gói tên là “Scheduler”, một lớp trừu tượng gọi là “Flysystem”
cho phép điều khiển việc lưu trữ từ xa đơn giản như lưu trữ trên máy local –
dễ thấy nhất là mặc định hỗ trợ dịch vụ Amazone S3, cải tiến quản lý assets
12


thông qua “Elixir”, cũng như đơn giản hóa quản lý xác thực với các dịch vụ
bên ngoài bằng gói “Socialite”.
Laravel 5.1 phát hành vào tháng 6 năm 2015, là bản phát hành đầu
tiên nhận được hỗ trợ dài hạn (LTS “Long Term Support" - có nghĩa là
"Hỗ trợ dài hạn") với một kết hoạch sửa lỗi (fix bug) lên tới 2 năm vào
hỗ trợ vá lỗi bảo mật lên tới 3 năm. Các bản phát hành LTS của Laravel
được lên kế hoạch theo mỗi 2 năm.

 Tổng quan cấu trúc ứng dụng
 Nội dung thư mục gốc
Tại thư mục gốc của Laravel chứa tệp cấu hình của Composer, các
thông tin về framework, thư mục chứa cấu hình môi trường, các tập tin công
khai, mã ứng dựng và thư mục với tất cả các gói được cài đặt bao gồm cả

gói làm nên Laravel framework.
Bảng 2.1. Mô tả các tệp và thư mục trong thư mục gốc của laravel

Tệp/Thư mục
/app

Mục đích

Chứa mã ứng dụng
Chứa đường dẫn thư mục Laravel Framework, các tập
/bootstrap
tin được biên dịch và cấu hình môi trường ứng dụng.
Đây là thư mục công khai. nó sẽ chứa CSS,
Javascript và các file và thư mục khác sẽ cho phép
/public
truy cập bởi người sử dụng ứng dụng.
Chứa các gói của bên thứ 3 và các gói làm nên
Laravel Framework được cài đặt trong thư mục
/vendor
này.
Đây là tập tin cấu hình Composer chứa danh sách
các gói mà ứng dụng sử dụng, phiên bản cài đặt
composer.json
cho mỗi gói và thiết lập tính ổn định
Chứa hướng dẫn đóng góp vào Laravel
CONTRIBUTING.md
Framework
Cung cấp thông tin chung về Laravel và các liên kết tới
readme.md
tài liệu, các yêu cầu và giấy phép của ứng dụng.

Laravel có một lệnh đặc biệt chạy ứng dụng hiện
tại trên máy chủ PHP của hệ thống. Tệp này giúp
server.php
cho chức năng đó.
13


Cung cấp tích hợp trong giao diện dòng lệnh của
Laravel, giúp nhà phát triển có thể tăng tốc công việc.
Tệp cấu hình cho PHPUnit bộ môn công cụng
kiểm tra.

artisan
phpunit.xml

 Nội dung thư mục app
Khi xây dựng một ứng dụng với Laravel, các định tuyến, các bộ lọc
định tuyến, cấu hình thiết lập khác và di trú cơ sở dữ liệu cho ứng dụng sẽ
nằm trong thư mục này.
Bảng 2.2. Mô tả các tệp và thư mục trong thư mục app của laravel

Tệp/Thư

Mục đích

mục
/models

Chứa các lớp đại diện cho các mô hình dữ liệu


/views

Chứa các bản mẫu cho views và bố cục của view

/controller

Chứa các controllers của ứng dụng

/config
/database
/lang

Cài đặt các ứng dụng cụ thể như thông tin cơ sở dữ liệu,
thiết đặt trình điều khiển phiên và các bộ đệm.
Dữ liệu mẫu và di trú cơ sở dữ liệu
Chuỗi ngôn ngữ cho validation, pagination và các email
nhắc nhở

/commands

Các lớp tùy biến bao gồm các lệnh Artisan

/storage

Bộ đệm, phiên tạm thời và các views được biên dịch

/start

Các file hỗ trợ điều chỉnh lỗi và chế độ bảo trì ứng dụng


/test

Bộ môn kiểm tra của ứng dụng

filter.php

Logic và định nghĩa các bộ lọc sử dụng trong ứng dụng

routes.php

Danh sách đầu cuối được đăng ký của ứng dụng

 Ưu nhược điểm
14


 Ưu điểm
 Laravel, sử dụng Blade Template Engine. Rất nhẹ nhàng và hữu
dụng. Chỉ cần có 1 trang master template (template sườn) sẽ được sử dụng
và kế thừa từ các file template con.
 Laravel hỗ trợ nhiều cách viết để ngắn gọn nhất có thể và nhiều
cách viết khác nhau như Fluent Query Builder (trình tạo truy vấn) và
Eloquent (tài hùng biện). Cực kỳ ngắn gọn – dễ quản lý và hữu dụng. Hỗ trợ
sẵn các hàm để tìm dữ liệu , nạp dữ liệu, đếm dòng , … Laravel hỗ trợ tương
tác với cơ sở dữ liệu như tạo cơ sở dữ liệu, tạo bảng, chỉnh sửa bảng, insert
dữ liệu… thông qua Schema Builder (trình tạo giản đồ).
 Route trong Laravel, có thể nhóm các rule (quy định) lại với nhau,
các rule con nằm trong rule mẹ sẽ chịu ảnh hưởng. Ví dụ:
Route::group(array(‘before’=>’auth’),function(){
Route::get(‘admin/contacts’,’AdminController@contacts’);

Route::get(‘admin/deletessh’,’AdminController@deletessh’);
Route::post(‘admin/deletessh’,’AdminController@dodel’);
Route::get(‘admin/viewcontact/
{id}’,’AdminController@viewcontact’);
}

Có thể thấy các rule con bên trong trước khi được thực thi sẽ phải chạy
qua rule mẹ để kiểm tra, nếu thỏa mãn mới thực thi.
 Laravel được phát hành theo giấy phép MIT, với source code được
lưu trữ tại Github nên dễ dàng tìm kiếm và lấy code.
 Nhược điểm
 Laravel chưa có nhiều tài liệu tiếng việt nên gặp rất nhiều khó khan
15


trong việc học hỏi và tìm kiếm code, tìm kiếm cách sửa lỗi khi có lỗi sảy ra
trong quá trình code.
 Laravel thực hiện điều hướng hoàn toàn qua route. Tại đây người
lập trình có thể làm tất cả các việc mà ngay cả Models và Controller đảm
nhận theo mô hình MVC rất tiện bên cạnh đó khi đưa vào làm việc nhóm rất
có khả năng sảy ra tranh trấp Laravel , khi có lỗi sảy ra ở route thì toàn bộ
hệ thống sẽ bị lỗi và ngừng hoạt động.

 Điểm mới ở Laravel 5
Taylor Otwell đã nói rằng Laravel 4.3 có thể đổi tên thành Laravel 5
để phản ánh việc thay đổi cấu trúc thư mục và "những sáng kiến thú vị
khác". Đã có khoảng gần 20 tính năng mới được giới thiệu kể từ khi có
thông báo Laravel 5 và "những sáng sáng kiến thú vị" đã được phát triển.
Rất nhiều những bài viết hướng dẫn nâng cấp version chờ Laravel 5
ra mắt. Nhiều những tổ chức, công ty kiên nhẫn sử dụng tạm các developbranch (GIT - nd) để chờ Laravel 5 ra mắt.

Laravel 5 sẽ ra mắt với rất nhiều nâng cấp mới, những tính năng mới
nhưng đồng thời lại vẫn giữ được những yếu tố mà đã tạo nên sự thành công
của Laravel.
Thực tế là nó nhiều tính năng mới đến nỗi việc theo dõi xem nó có gì mới
cũng rất mệt. Sơ qua một số tính năng mới và những gì được mong chờ ở laravel 5.
 Laravel 5 và cấu trúc thư mục
Sự thay đổi quan trọng đầu tiên của phiên bản này đó cấu trúc thư
mục. Có một số thay đổi nhỏ trong thư mục app và một số thay đổi ở bên
ngoài nó nữa. Bao gồm sự thay đổi về config, database, storage và
resources.
16


Bên trong thư mục app sẽ được chia nhỏ thành các thư mục:
 Commands
 Console
 Events
 Exceptions
 Handlers
 Http
 Providers
 Services
 Thay đổi về template engine Blade
Blade (lớp cắt) không nhận được nhiều sự cải tiến nhưng lại có một
sự nâng cấp khá giá trị.
Trong Laravel 4, Blade sử dụng phong cách {{ và {{{. Ngoặc kép là
phép echo thuần, và ngoặc ba là phép echo có filter (lọc).
Bây giờ thì cả hai loại ngoặc trên quy về sử dụng một phong cách duy
nhất là {!! $var !!}.
Một trường hợp sử dụng phổ biến cho các hàm helper của lớp Form:

{!! Form::open() !!}

 Các khái niệm về Contracts , Commands và Events
Contracts là một tập các interfaces (giao diện) mà định nghĩa các core
services (dịch vụ cốt lõi) được cung cấp bởi framework. Về cơ bản thì nó
được dùng để mô tả các đặc điểm của framework.
Commands (lệnh) và Events (sự kiện) đã được làm lại.

17


 Hàm hỗ trợ Helpers
Một số hàm helper đã bị thay thế bởi các hàm khác phổ biến hơn. Ví
dụ, để render (biểu diễn) một view trong Laravel 4 cần gọi lệnh:
View::make('path.to.view');

Ở Laravel 5 chỉ cần gọi lệnh:
view('path.to.view');

Một vài các hàm khác mà laravel 5 đưa ra:
 abort()
 action()
 app()
 app_path()
 asset()
 Routing – get(), delete(), put()
 back()
 redirect()
 response()
 ...

 Định tuyến Routes
Routes có hai tính năng mới. Đó là Route caching và middlewares.
Route caching
Cũng không có gì nhiều để sử dụng tính năng này, một cách trung
thực. Có một Artisan lệnh mới, route:cache , mà sắp xếp các điều hướng
trong tập tin routes.php - nó thực hiện các hoạt động của phân tích các tuyến
đường một lần và sau đó lưu trữ những kết quả.
18


Khi các route đang được phân tích từ các tập tin lưu trữ, khôn thực
hiện route tập tin. Khi đó có thể làm cho tất cả những thay đổi đối với
routes.php và định tuyến các ứng dụng sẽ không thay đổi cho đến khi lưu
trữ cache.
Middleware (trung gian)
trung gian là một loạt các hàm bao xung quanh ứng dụng để trang trí
theo yêu cầu và các phản hồi theo một cách nào đó mà không phải là một
phần của logic ứng dụng.
 Controller Method Injection – Bộ điểu khiển theo phương thức
chia nhỏ
Laravel 4 đã hỗ trợ injection trong constructor của controller. Trong
Laravel 5, tính năng này đã tiến một bước xa hơn. Có thể injection được mọi
dependencies (phụ thuộc) trong các phương thức:
public function store(Request $request)

hoặc
public function taxes(TaxCalculator $tax)

 Authentication Scaffolding – chứng thực khung
Luồng authentication (chứng thực) mặc định đã được thiết lập sẵn.

Giới thiệu hai hàm chứng thực mới mới:
 AuthenticatesAndRegistersUsers
 ResetsPasswords

Hai hàm này có thể sử dụng để nhúng hoặc ghi đè các phương thức
trong đó nhằm tăng tính tùy chỉnh cho ứng dụng.

19


 Tính giao thiệp Socialite
Tính năng này là một sự tùy chọn, các gói tin của Laravel 5 làm cho
việc tương tác với OAuth dễ dàng hơn. Socialite hiện tại hỗ trợ Facebook,
Twitter, Google, and GitHub.
 Hệ thống Flysystem
Một tính năng tuyệt vời khác chính là việc include Flysystem của
Frank de Jonge. Flysystem là một tập các lớp trừu tượng của hệ thống file,
dễ dàng cho phép tương tác với hệ thống file trên máy tính hoặc hệ thống
file từ xa (Amazon S3, Dropbox, Ftp...).
Hiện tại đã include các bộ chuyển đổi (adapters) sau:
 Local
 Amazon Web Services – S3
 Rackspace Cloud Files
 Dropbox
 Copy
 Ftp
 Sftp (through phpseclib)
 Zip (through ZipArchive)
 WebDAV (through SabreDAV)
 Azure Blob Storage


20


 NullAdapter
Cho phép dễ dàng tải một tập tin lên bất kỳ dịch vụ lưu trữ nào.
 dotenv – Environmental Detection – phát hiện môi trường
Vance Lucas đã tạo một gói tin có tên là PHP dotenv để tải các biến
môi trường từ các file .env thông qua các hàm getenv(), $_ENV and
$_SERVER.
Laravel 5 đã thêm gói tin này để quản lý biến môi trường đơn giản
hơn. Không còn cần phải chỉnh sửa file bootstrap/start.php và mảng $app->
detectEnvironment() nữa.
Thay vì thế, sẽ thực hiện tạo một file .env và dễ dàng tùy chỉnh nó với
các thông tin cần sử dụng. Sau đó trong bất kỳ file config nào chỉ cần sử
dụng chúng như ví dụ sau:
'database' => env('DB_DATABASE’, 'myproddb'),

Gói tin này còn hỗ trợ tùy ý tạo ra những tùy chỉnh cho các môi
trường phát triển khác nhau như local, testing, develop...
 Form Requests – mẫu yêu cầu
Các vấn đề về form validation – mẫu xác nhận hay form requests –
mẫu yêu cầu đã được thảo luận rất nhiều. Về cơ bản, auth và validation có
thể được chuyển vào FormRequests và được chia nhỏ một cách dễ dàng.
 Laravel Scheduler – laravel lịch trình
Laravel Scheduler được thiết kế để đơn giản hóa các tác vụ cần thực
thi thông qua CRON ( một tiện ích cho phép thực hiện các tác vụ một cách
21



tự động theo định kỳ ). Tất cả việc cần làm là chạy một commandline artisan
schedule:run và cron job -công việc sẽ được chạy mỗi phút.
Một khi cron job của bạn được cài đặt, bạn có thể lên lịch cho bất kỳ
tác vụ nào chạy, rất ngắn gọn và đơn giản. Việc thiết lập Scheduler được
thực hiện trong thư mục app/Console/Commands.
Ví dụ:
$schedule->command('cache:clear')
->hourly()
->sendOutputTo($filePath)
->emailOutputTo('');
$schedule->call('SomeClass@method')->dailyAt('10:00');

 Hàm dd mới
Hàm yêu thích của rất nhiều người trong đó có tôi, và nay nó nhận
được một nâng cấp lớn. Symfony mới ra mắt thành phần VarDumper và
Laravel bây giờ sử dụng nó ở nền dưới.
 Tính năng Eloquent Attribute Casting
Attribute Casting cho phép chuyển đổi kiểu dữ liệu của các thuộc tính
trong model sang một kiểu khác. Ví dụ:
protected $casts = [
'is_admin' => 'boolean',
'options' => 'array',
];

22


Nó sẽ tự động chuyển is_admin về kiểu bool. Các tùy chọn có thể
được lưu trong json hoặc tự động chuyển đổi trong mảng khi trả ra.
Tính năng này thực sự rất tiện lợi khi sử dụng Javascript và cần kết

hợp chúng.
 Bỏ trang báo lỗi Whoops và Các lệnh generator mới
Trang báo lỗi Whoops trong Laravel 4 đã bị loại bỏ trong Laravel 5.
Tuy nhiên bạn vẫn có thể đưa nó vào lại nếu muốn.
Artisan bây giờ mạnh mẽ hơn nhiều bằng việc đem tới rất nhiều
lệnh như:
make:command — Tạo mới một class Command
make:console — Tạo mới một Artisan command
make:controller — Tạo mới một controller
make:event — Tạo mới một class event
make:middleware — Tạo mới một class middleware
make:migration — Tạo mới một file migration
make:model — Tạo mới một class Eloquent model
make:provider — Tạo mới một class service provider
make:request — Tạo mới một class form request
event:generate — Tự động sinh các missing events và handlers

 Lựa chọn Laravel
Sau một thời gian tìm hiểm và tham khảo qua các trang web trên
23


mạng xã hội. Laravel chứng tỏ được sự vượt trội của mình so với các
Framwork khác. Theo thống kê gần đây nhất của GitHub về 15 PHP
Framework miễn phí tốt nhất năm 2015 cho thấy.

Hình 1. Biểu đồ cho thấy mức độ yêu thích phổ biến và hiệu suất làm việc

Trong đề tài này em sẽ sử dụng Laravel 5 cụ thể là phiên bản laravel
5.2 để xây dựng demo chương trình.

Laravel 5.2 là phiên bản mới nhất của Laravel đưa ra khi em bắt đầu
24


nhận đề tài. Trước khi làm đề tài em đã nhận thấy được mặt tích cực và khả
năng Laravel 5.2 đưa ra hỗ trợ để em có thể hoàn thành bài demo của mình
với các ưu điểm sau:
 Với những tính năng nổi bật của Laravel bao gồm cú pháp dễ hiểu –
rõ ràng , một hệ thống đóng gói modular (khối kết cấu) và quản lý gói phụ
thuộc, nhiều cách khác nhau để truy cập vào các cơ sở dữ liệu quan hệ,
nhiều tiện ích khác nhau hỗ trợ việc triển khai vào bảo trì ứng dụng. Điều
này rất phù hợp với hệ thống như đề tài của em.
 Laravel đã bắt đầu được nhiều lập trình viên Việt Nam hướng tới
với những khả năng mà laravel đem lại. Nhận thấy có khả năng tìm hiểm và
học tập tuy không nhiều.
 Laravel 5.* đã thực hiện lược bỏ một số các tính năng không cần thiết,
tuy nhiên không bỏ hẳn mà được xem như một vendor (cung cấp) bổ sung tính
năng cho phiêm bản. Đặc biệt là Laravel 5 đã thực hiện lược bỏ tập hợp html
"laravelcollective/html": "~5.0" (cung cấp cách tạo định dạng html khác theo
hướng đối tượng) và quay về xây dựng theo html thông thường. Em không
cảm thấy bỡ ngỡ hay lạ lẫm khi làm việc với Laravel 5.*
 Laravel 5.* thực hiện đặt toàn bộ các file Models trong thư mục
/app và đặt file điều hướng route cũng như thư mục /Controller hoàn toàn
bên trong thư mục /Http dễ dàng cho việc kiểm soát cũng như quản lý code.
 Laravel 5* đặt toàn bộ nội dung phần hiển thị và định dạng ngôn
ngữ cho website bên trong thư mục /resources thuận tiện cho việc quản lý
các trang của website và định dạng lại ngôn ngữ một cách nhanh chóng.
 Cũng như các Framework khác Laravel cho phép xây dựng bộ thư
viện riêng và cho phép bất cứ đâu trong hệ thống có thể gọi tới và sử dụng.


25


×