Trong mô hình chạy trên web này, các nhà cung cấp phần mềm thực hiện nhiệm vụ lưu trữ và bảo trì các máy chủ, cơ sở dữ liệu và các đoạn mã để cấu thành ứng dụng.. Tuy nhiên, trong 5 năm
Trang 11
MỤC LỤC
MỤC LỤC 1
DANH MỤC HÌNH 3
LỜI CẢM ƠN 4
LỜI MỞ ĐẦU 5
CHƯƠNG 1 : CƠ SỞ LÝ THUYẾT 6
1.1 Dịch vụ Software as a Service (SaaS) 6
1.1.1 Giới thiệu SaaS 6
1.1.2 Làm sao để chọn giữa SaaS và phần mềm on-premise? 6
1.1.3 SaaS có mới với người sử dụng? 7
1.1.4 Liệu tôi có thể tùy chỉnh phần mềm SaaS? 8
1.1.5 Ai sở hữu dữ liệu của tôi? 9
1.1.6 Dữ liệu của tôi có được an toàn? 9
1.1.7 Điều gì sẽ xảy ra nếu nhà cung cấp dịch vụ SaaS ngừng kinh doanh?10 1.1.8 Hạn chế của SaaS là gì? 10
1.1.9 Đâu là sự khác biệt giữa SaaS và điện toán đám mây? 11
1.2 Giới thiệu về Application Programming Interface(API) 11
1.2.1 API là gì 11
1.2.2 Ứng dụng API 12
1.3 Tìm hiểu về Laravel 13
1.3.1 Sự phát triển của Laravel 13
1.3.2 Các điểm nhấn đặc sắc của Laravel 14
1.3.3 Giới thiệu về Laravel 16
1.3.4 Cài đặt Laravel thông qua Composer 16
1.3.5 Cấu trúc Laravel 18
1.3.6 Các thành phần cơ bản trong Laravel 20
1.4 Tìm hiểu về Bootstrap 29
1.4.1 Giới thiệu về Bootstrap 29
1.4.2 Một số ưu điểm chính của Boostrap 30
1.4.3 Cách sử dụng Twitter Bootstrap 31
Trang 22
1.5 PHP & MySQL 33
1.5.1 Hệ quản trị CSDL MySQL 33
1.5.2 PHP 33
CHƯƠNG 2: KHẢO SÁT, PHÂN TÍCH THIẾT KẾ HỆ THỐNG 35
2.1 Khảo sát 35
2.2 Giới thiệu đề tài 36
2.2.1 Yêu cầu bài toán 36
2.2.2 Các chức năng chính 36
2.3 Phân tích thiết kế hệ thống 36
2.3.1 Yêu cầu hệ thống 36
2.3.2 Các biểu đồ 37
CHƯƠNG 3 : THIẾT KẾ GIAO DIỆN CHƯƠNG TRÌNH 48
3.1 Giới thiệu website 48
3.2 Giao diện chương trình 48
KẾT LUẬN 50
TÀI LIỆU THAM KHẢO 51
NHẬN XÉT, ĐÁNH GIÁ CỦA GIÁO VIÊN HƯỚNG DẪN 52
Trang 33
DANH MỤC HÌNH ẢNH
Hình 1.1: Tỉ lệ người sử dụng Laravel năm 2013 13
Hình 1.2: Tỉ lệ người sử dụng Laravel năm 2015 14
Hình 1.3: MVC trong Laravel 15
Hình 1.4: Cài đặt composer 17
Hình 1.5: Cấu trúc thư mục Laravel 18
Hình 1.6: Bootstrap trên Github 30
Hình 1.7: Cấu trúc thư mục css framework boostrap 31
Hình 1.8: Minh hóa form trong boostrap 32
Hình 1.9: Kết quả viết form 32
Hình 1.10: Kết quả bootstrap responsive 32
Hình 2.1: Biểu đồ UseCase quản lý tài khoản 39
Hình 2.2 : Biểu đồ UseCase quản lý cửa hàng 40
Hình 2.3 : Biểu đồ UseCase các chức năng khác 42
Hình 2.4 : Biểu đồ trình tự chức năng đăng ký 43
Hình 2.5 : Biểu đồ trình tự chức năng đăng nhập 44
Hình 2.6 : Biểu đồ trình tự chức năng tạo cửa hàng 45
Hình 2.7 : Biểu đồ trình tự thêm/xóa sản phẩm 46
Hình 2.8 : Biểu đồ trình tự cấu hình cửa hàng 47
Hình 3.1 : Giao diện trang chính 48
Hình 3.2 : Giao diện trang quản lý cửa hàng 48
Hình 3.3 : Giao diện trang quản lý sản phẩm 49
Trang 44
LỜI CẢM ƠN
Em xin chân thành cảm ơn sự giúp đỡ nhiệt tình của giảng viên, Thạc sĩ Nguyễn Quang Hiệp, người đã giúp đỡ em trong suốt quá trình thực hiện đồ án để
em có thể hoàn thành tốt đề tài của mình
Em cũng xin gửi lời cảm ơn đến các thầy cô giáo, giảng viên Khoa Công Nghệ Thông Tin – Trường Đại Học Công Nghệ Thông Tin và Truyền Thông Thái Nguyên – Đại học Thái Nguyên và các thầy cô đã giảng dạy em trong suốt quá trình
em học tập tại trường
Con cũng xin gửi lời cảm ơn chân thành đến gia đình, bố mẹ và bạn bè đã luôn là nguồn động viên to lớn giúp đỡ con vượt qua những khó khăn trong suốt quá trình học tập
Mặc dù đã cố gắng hoàn thiện đồ án với tất cả nỗ lực của bản thân, nhưng chắc không thể tránh khỏi những thiếu sót Kính mong quý thầy cô đóng góp ý kiến
để em có thể hoàn thiện kiến thức của bản thân!
Là sinh viên công nghệ thông tin, em rất tự hào về ngồi trường mà mình đang theo học, và tự hào về tất cả thầy cô của mình!
Em xin chân thành cảm ơn!
Thái Nguyên, ngày tháng năm 2017
Người viết báo cáo
Trần Mạnh Ninh
Trang 5Chỉ trong một thời gian ngắn Laravel đã trở thành một hiện tượng kỳ lạ giống với các sự kiện mà các bạn nhận thấy gần đây như "Flappy Bird",
"Gangnam style" làm say mê không ít các bạn trẻ Khi mà các lập trình viên bỗng dưng quay lưng với các framework đình đám như Zend, Cakephp, Yii và chọn lựa Laravel Framework
Vì vậy, cùng với những gợi ý của giảng viên Thạc sĩ Nguyễn Quang
Hiệp, em đã chọn đề tài:“Ứng dụng SAAS xây dựng hệ thống API cho cổng tiếp thị liên kết Salevia ”
Trang 66
CHƯƠNG 1 : CƠ SỞ LÝ THUYẾT 1.1 Dịch vụ Software as a Service (SaaS)
1.1.1 Giới thiệu SaaS
SaaS (Software as a Service) là một dạng chuyển giao phần mềm cho phép truy cập dữ liệu từ bất kì thiết bị nào có kết nối internet và cài đặt trình duyệt web Trong mô hình chạy trên web này, các nhà cung cấp phần mềm thực
hiện nhiệm vụ lưu trữ và bảo trì các máy chủ, cơ sở dữ liệu và các đoạn mã để cấu
thành ứng dụng Đây là sự cải tiến đặc biệt so với mô hình on-premise do doanh
nghiệp không cần đầu tư vào phần cứng dung lượng lớn để lưu trữ phần mềm Doanh nghiệp không phải chịu các trách nhiệm kỹ thuật như khắc phục sự cố và bảo trì hệ thống Các nhà cung cấp dịch vụ SaaS sẽ lo việc đó
Ngoài việc cho phép truy cập từ xa vào các phần mềm ứng dụng và dữ liệu thông qua web, SaaS cũng khác với phần mềm on-premise về phương diện chi phí Phần mềm on-premise thường được mua thông qua một giấy phép vĩnh viễn, nghĩa là doanh nghiệp sẽ sở hữu phần mềm đó Ngoài ra, doanh nghiệp còn phải trả
từ 15% đến 20% phí bảo trì và phí hỗ trợ hàng tháng Ngược lại, SaaS cho phép người mua trả một khoản phí thuê bao hàng năm hoặc hàng tháng, chi phí đã bao gồm giấy phép sử dụng phần mềm, phí hỗ trợ và hầu hết các chi phí khác Lợi ích chính của SaaS là có thể linh hoạt mở rộng quy mô dịch vụ để phù hợp với nhu cầu của doanh nghiệp theo thời gian, từ đó giúp tiết kiệm chi phí
1.1.2 Làm sao để chọn giữa SaaS và phần mềm on-premise?
Đầu tiên bạn phải xác định được mức độ phức tạp của mô hình kinh doanh của doanh nghiệp mình Chúng tôi thường đề xuất SaaS cho cácdoanh nghiệp vừa
và nhỏ với với quy trình làm việc đơn giản và mong muốn giảm bớt chi phí cố định Tại sao lại như vậy? Các giải pháp của SaaS đều giúp tiết kiệm chi phí nhưng nó vẫn có thể xử lý được những yêu cầu phức tạp của doanh nghiệp lớn Nếu muốn theo kịp hệ thống on-premise thì SaaS cần phát triển các chức năng mạnh mẽ tương
tự như hệ thống on-premise
Trong khi SaaS đang dần thu hẹp khoảng cách về chức năng thì giữa 2 hệ thống vẫn còn nhiều điểm khác biệt Đơn cử như một xí nghiệp cỡ vừa sản xuất các
Trang 77
chi tiết hàng không vũ trụ kỹ thuật cao theo đơn đặt hàng có thể rất phù hợp với hệ thống on-premise, đơn giản vì các hệ thống này có tuổi thọ lớn và có nhiều chức năng hơn Mặt khác, một nhà máy chuyên sản xuất các loại đai ốc và bu lông sẽ tìm
thấy tất cả các chức năng cần thiết trong một giải pháp SaaS như NetSuite hoặc Plex Systems Vì vậy, quan trọng nhất là bạn phải hiểu rõ những nhu cầu của tổ chức và
giải pháp nào có thể giúp bạn đáp ứng những nhu cầu đó trong tương lai gần hoặc
xa
1.1.3 SaaS có mới với người sử dụng?
Khởi nguồn của môi trường chia sẻ tài nguyên như điện toán đám mây xuất phát từ những năm thập niên 60 Trong một bài phát biểu năm 1961 gửi đến sinh viên Học viện Công nghệ Massachusetts, nhà khoa học máy tính lừng danh John McCarthy, người đạt giải thưởng Turing với tác phẩm Trí Tuệ Nhân Tạo đã
có câu nói nổi tiếng: “Thao tác điện toán ngày nào đó có thể sẽ được tổ chức
như một dịch vụ công cộng.” Nói cách khác, khái niệm điện toán đám mây chính
là cách thức chia sẻ năng lực tính toán Trong khi ý tưởng đã có từ trước, công nghệ dựa trên nền tảng web yêu cầu hỗ trợ SaaS chỉ phát triển mạnh mẽ từ cuối những năm 1990 Đó là khi các công ty như Salesforce bắt đầu cung cấp các giải pháp cho hoạt động kinh doanh truyền thống, chẳng hạn như quản lý quan hệ khách hàng thông qua mô hình SaaS
Lúc đầu, các doanh nghiệp phần mềm trên thế giới đã không nhìn nhận SaaS một cách nghiêm túc Tuy nhiên, trong 5 năm trở lại đây, đã có sự chuyển biến mạnh mẽ khi các doanh nghiệp SaaS chứng minh được họ có thể tăng doanh thu và nền tảng người dùng của mình thông qua mô hình cấp giấy phép đăng ký Đồng thời, người mua đang ngày càng bị thu hút bởi tính tiết kiệm chi phí và sự quen thuộc của giao diện người dùng (UI) giống trình duyệt web mà các giải pháp SaaS cung cấp
Trang 88
Chi phí cố định ban đầu Không Có – mua một giấy phép
vĩnh viễn và thuộc sở hữu của doanh nghiệp
Mở rộng quy mô dịch
vụ
Có thể mở rộng bất kỳ lúc nào, tùy theo nhu cầu sử dụng và tăng phí thuê bao
Phải mua bản nâng cấp mới
Trách nhiệm kỹ thuật
(khắc phục sự cố hoặc
bảo trì hệ thống)
Nhà cung cấp dịch vụ SaaS Doanh nghiệp
Quy mô doanh nghiệp Doanh nghiệp vừa và nhỏ Doanh nghiệp lớn
Quyền sở hữu dữ liệu Doanh nghiệp sở hữu, cần
quy định rõ trong ‘Cam kết mức độ dịch vụ’ (SLA)
Thuộc quyền sở hữu của doanh nghiệp hoàn toàn
Cập nhật phiên bản mới Nhà cung cấp dịch vụ SaaS
tự động cập nhật thường xuyên, không cần trả phí
Cập nhật theo nhu cầu của doanh nghiệp, cần trả phí
1.1.4 Liệu tôi có thể tùy chỉnh phần mềm SaaS?
Khi các ứng dụng SaaS lần đầu tiên xuất hiện, sự tuỳ biến rất hạn chế Mọi doanh nghiệp đều có cùng một giải pháp và phải thay đổi quy trình kinh doanh của mình để phù hợp với phần mềm mà họ nhận được Ngày nay, việc tùy chỉnh hệ thống SaaS ngày càng trở nên dễ dàng và phổ biến Có hẳn những đội ngũ tư vấn viên chuyên tinh chỉnh các ứng dụng SaaS để phù hợp với quy trình kinh doanh của bạn
Trang 99
Người mua có thể tùy chỉnh giao diện người dùng của chương trình, cũng như sửa đổi các trường dữ liệu khi cần Một vài tính năng của quy trình kinh doanh cũng có thể được tắt và bật theo ý muốn Tuy nhiên, khả năng tương thích của phần mềm SaaS vẫn không phải là điểm cần so sánh với những giải pháp on-premise Khi thị trường SaaS tăng trưởng mạnh, các nhà cung cấp phần mềm sẽ đầu tư nhiều hơn vào việc phát triển để cung cấp nhiều hơn sự tuỳ chỉnh và linh hoạt mà các doanh nghiệp vốn đã quen thuộc với phần mềm on-premise Tất nhiên, tất cả điều này thay đổi tùy thuộc vào từng loại ứng dụng và từng nhà cung cấp
1.1.5 Ai sở hữu dữ liệu của tôi?
Rất nhiều khách hàng lo ngại rằng các nhà cung cấp SaaS sẽ “sở hữu” dữ liệu của họ Chắc chắn đây là điều cần được nhận biết khi đàm phán một Cam kết mức độ dịch vụ (SLA) với nhà cung cấp SaaS của bạn Ngoài các tiêu chuẩn hệ thống đáng tin cậy, SLA cần phải giải thích rõ ràng các thông số của sản phẩm, chẳng hạn như quyền sở hữu dữ liệu, các yêu cầu bảo mật và lịch bảo trì Đây là một tài liệu quan trọng và khá phức tạp mà chúng tôi không thể nói hết ở đây
Doanh nghiệp phải đảm bảo chắn chắn trong SLA sẽ có những điều khoản quy định quyền sở hữu dữ liệu Hầu hết các hợp đồng SaaS được lập với điều khoản trả trước dự phòng sẽ quy định quyền truy cập vào dữ liệu của doanh nghiệp nếu các nhà cung cấp ngừng kinh doanh (xem thêm câu hỏi số 7) Điều khoản này cũng đảm bảo rằng doanh nghiệp có quyền sở hữu những dữ liệu đó Hơn nữa, hầu hết các nhà cung cấp SaaS sẽ cho phép bạn truy xuất dữ liệu và sao lưu cục bộ bất cứ khi nào bạn muốn Sẽ rất bất thường khi nhà cung cấp khăng khăng giữ quyền sở hữu dữ liệu của bạn Nếu bạn nhận thấy điều này trong hợp đồng, đừng đặt bút kí
1.1.6 Dữ liệu của tôi có được an toàn?
Đây là một trong những điểm then chốt ảnh hưởng đến quyết định của các doanh nghiệp đang cân nhắc việc sử dụng SaaS Bảo mật là vấn đề cần được xem xét kĩ khi cho phép ai đó lưu trữ dữ liệu kinh doanh quan trọng của doanh nghiệp, đặc biệt là những doanh nghiệp có hệ thống dữ liệu lớn Tuy nhiên, ngày nay, với
hệ thống ngân hàng và hệ thống lương trực tuyến trở thành quy chuẩn, vấn đề an ninh không còn đáng lo Một số thứ còn quan trọng hơn cả tài khoản ngân hàng, tuy
Trang 101.1.7 Điều gì sẽ xảy ra nếu nhà cung cấp dịch vụ SaaS ngừng kinh doanh?
Đây là thắc mắc hợp lí trong giới phần mềm Các nhà cung cấp liên tục ra đời rồi phá sản do thực hiện việc hợp nhất doanh nghiệp hoặc kinh doanh thất bại Tuy nhiên, dữ liệu của bạn vẫn còn đó Hầu hết các nhà cung cấp SaaS đều trả trước cho công ty lưu trữ dữ liệu trung tâm để lưu trữ dữ liệu vĩnh viễn Lệ phí trả trước này dùng để bảo vệ các doanh nghiệp, đảm bảo dữ liệu của họ vẫn có thể được truy cập trong trường hợp nhà cung cấp gặp chuyện
Điều quan trọng ở đây là phải đảm bảo trong SLA của bạn có điều khoản quy định rõ ràng việc bạn có thể xuất dữ liệu từ nhà cung cấp Điều khoản này cũng nên quy định mức độ thường xuyên và bạn có thể truy cập vào dữ liệu của mình thông qua những loại định dạng nào Thông thường, SLAs cũng quy định việc các nhà cung cấp sẽ giúp di dời dữ liệu của bạn với mức phí thích hợp
1.1.8 Hạn chế của SaaS là gì?
Nhược điểm chính của SaaS là nó phụ thuộc vào đường truyền kết nối Internet Trong khi nhiều người tin rằng hệ thống on-premise là đáng tin cậy hơn thì thực tế không có hệ thống nào hoàn toàn không chịu ảnh hưởng của “downtime” Phần mềm on-premise dễ bị mất điện, lỗi phần cứng và một loạt các rủi ro khác Một số nhà cung cấp SaaS đã phát triển chức năng “offline” cho phép mọi người tiếp tục làm việc trong trường hợp rớt mạng như một biện pháp dự phòng Khi internet được kết nối lại, tất cả dữ liệu sẽ được đồng bộ hóa với hệ thống
Trang 1111
Ngoài việc kết nối Internet, một số doanh nghiệp còn lo lắng về khả năng tương thích với hệ điều hành Hầu hết các hệ thống của doanh nghiệp được xây dựng để chạy trên nền Windows hoặc Linux Gần đây bắt đầu có sự thay đổi Chúng tôi vui mừng khi thấy rằng nhiều nhà cung cấp còn hỗ trợ cả hệ điều hành Mac Hy vọng việc hỗ trợ chức năng để tăng tốc độ hệ điều hành Mac sẽ được chú ý hơn khi càng có nhiều doanh nghiệp dùng Mac Hơn nữa, hầu hết các công ty SaaS đều hỗ trợ nhiều trình duyệt web Vậy nên, bất kể bạn sử dụng hệ thống nào, bạn đều có thể truy cập các vào các ứng dụng SaaS của mình
1.1.9 Đâu là sự khác biệt giữa SaaS và điện toán đám mây?
Nó không chỉ khác về ngữ nghĩa Điện toán đám mây dùng để chỉ một tập hợp cơ sở hạ tầng công nghệ vô cùng phức tạp Về cơ bản, đó là một nhóm các máy tính, máy chủ và cơ sở dữ liệu được kết nối với nhau, theo đó người dùng có thể thuê việc truy cập để chia sẻ năng lượng kết hợp Doanh nghiệp có thể tăng hoặc giảm dung lượng sử dụng tùy thuộc vào nhu cầu của mình
Điện toán đám mây có thể liên quan đến bất kì thứ gì được lưu trữ từ xa và truyền tải thông qua Internet Trong khi tất cả các chương trình điện toán đám mây được vận hành bởi các phần mềm cơ bản, SaaS đề cập cụ thể đến các ứng dụng phần mềm doanh nghiệp được truyền tải thông qua điện toán đám mây Với sức ảnh hưởng ngày càng lớn của điện toán đám mây, các nhà phát triển SaaS có thể tung ra các ứng dụng dễ dàng hơn, nhanh hơn và ít tốn kém hơn so với việc phát triển phần mềm on-premise truyền thống Ngày nay, hầu hết các loại chức năng kinh doanh cốt lõi – từ nguồn nhân lực đến hoạch định nguồn lực doanh nghiệp – đều có sẵn thông qua SaaS
1.2 Giới thiệu về Application Programming Interface(API)
1.2.1 API là gì
API là viết tắt của từ "Application Programming Interface" (giao diện lập trình ứng dụng) Nó là 1 giao tiếp phần mềm được dùng bởi các ứng dụng khác nhau Cũng giống như bàn phím là một thiết bị giao tiếp giữa người dùng và máy tính, API là 1 giao tiếp phần mềm chẳng hạn như giữa chương trình và hệ điều hành (HĐH)
Trang 1212
Bộ API của từng HĐH là khác nhau, làm cho các HĐH khác nhau và thường không tương thích với nhau Ví dụ những phần mềm trên HĐH linux không thể chạy được trên máy Windows bởi vì Linux và Windows có các API hoàn toàn khác nhau
Một trong các mục đích chính của một API là cung cấp khả năng truy xuất đến một tập các hàm hay dùng — ví dụ, hàm để vẽ các cửa sổ hay các icon trên màn hình Các API, cũng như hầu hết các interfaces, là trừu tượng (abstract) Phần mềm
mà muốn cung cấp truy xuất đến chính nó thông qua các API cho sẵn, phải hiện thực API đó Trong nhiều tình huống, một API thường là một phần của bộ SDK, hay software development kit Một bộ SDK có thể bao gồm một API cũng như các công cụ/phần cứng, vì thế hai thuật ngữ này không thay thế cho nhau được
1.2.2 Ứng dụng API
Hiện nay nhiều người dùng mạng xã hội facebook và bạn muốn viết một ứng dụng để đăng tin lên mạng xã hội này Vậy làm sao để làm một ứng dụng như vậy khi facebook là của người khác? Hiểu được nhu cầu này của các lập trình viên
Trang 1313
facebook sẽ đưa ra các thư viện chứa các hàm đăng, like, share trên trang của mình
để các lập trình viên khai thác! Đó chính là API
Google+, Gmail, Blogger, Youtube, các ứng dụng của Windows (Windows media player, Internet Explorer, ), nhaccuatui, zing mp3, rất nhiều các trang web, ứng dụng đưa ra các API để hỗ trợ các lập trình viên
- Ví dụ: Các hàm API của hệ điều hành windows cho phép chúng ta lập trình ứng dụng thay đổi icon màn hình, xem thông tin máy tính, hay các hàm API của google cho phép lập trình viên lấy thông tin, sửa thông tin người dùng, Các hàm API của facebook cho chúng ta đăng stt, ảnh, cmt,
1.3 Tìm hiểu về Laravel
1.3.1 Sự phát triển của Laravel
Đến cuối năm 2013, khi các chuyên gia tổng hợp về sự tăng trưởng của Laravel trong những tháng cuối năm thì chúng ta có thể thấy Laravel vượt lên dẫn đầu trước các PHP framework lớn mạnh khác một cách ngoạn mục, khi tỷ lệ % của Laravel chiếm tới những 25,85%, trong khi các framework đình đám khác lại tụt giảm thê thảm như Zend framework 2 chỉ còn 4,51% là 1 ví dụ
Hình 1.1: Tỉ lệ người sử dụng Laravel năm 2013
Trang 1414
Còn đến đầu năm 2015 với sự ra mắt của Laravel 5 thì tỉ lệ người dùng Laravel cũng được thống kê như sau :
Hình 1.2: Tỉ lệ người sử dụng Laravel năm 2015
1.3.2 Các điểm nhấn đặc sắc của Laravel
Laravel là một PHP Framework Nó giảm bớt các tác vụ thường gặp của các trang web như authentication, routing, sessions, và caching Nó ra đời vào tháng 04/2011, có lẽ là khá mới mẻ, nhưng cũng chính vì ra đời muộn màng như thế đã buộc nó phải học hỏi cái hay từ các PHP Framework đàn anh đi trước Không những là các PHP Framework, nó còn học cái hay từ Ruby on Rails, ASP.NET MVC, và Sinatra
Tham khảo Best PHP Frameworks 2014 frameworks-2014/, ta thấy Laravel đang được cộng đồng đánh giá cao:
Trang 1515
Hình 1.3: MVC trong Laravel
Các tính năng nổi trội của Laravel có thể kể đến :
- RESTful routing: Sử dụng Closures để hỗ trợ việc trả lời các requests
- Blade templating (tượng tự Razor View Engine): giúp chúng ta tạo ra các mẫu cho các view và có thể kế thừa dễ dàng
- Eloquent ORM: đây 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
- Đáp ứng nhiều loại ứng dụng, từ ứng dụng dành cho Enterprise, hay ứng dụng hỗ trợ RESTful, hoặc là ứng dụng web đơn giản
- Laravel được xây dựng trên một số thành phần của Symphony, và ai lập trình PHP cũng biết rằng Symphony là một MVC Framework tuyệt vời, và Laravel
là một Framework tuyệt vời hơn khi kế thừa từ Symphony
- Sử dụng Composer để quản lý các gói của bên thứ ba, tượng tự như Nuget Package mà chúng ta thường sử dụng trên Visual Studio
Trang 1616
- Red, Green, Refactor: đây là các bước khi áp dụng TDD, nghĩa là Laravel
hỗ trợ TDD và Unit Test với PHPUnit và một IoC Container để bạn có thể áp dụng Dependency Injection và viết Unit Test dễ dàng cho ứng dụng của bạn
1.3.3 Giới thiệu về Laravel
Laravel là một bộ mã nguồn PHP Framework hoàn toàn miễn phí, được
thiết kế và xây dựng theo chuẩn mô hình MVC Laravel được phát hành theo giấy phép MIT, với mã nguồn của nó được lưu trữ trên GitHub Phiên bản đầu tiên được phát hành ngày 22 tháng 1 năm 2012 bởi Taylor Otwell và phiên bản mới nhất hiện này là Laravel 5 phát hành tháng 1 năm 2015 Theo thống kê đánh giá của một cuộc khảo sát các PHP Framework phổ biến 2013, thì Laravel đứng thứ hạng cao, sau đó là Zendframework, Symfony, Yii Framework, CodeIgniter… Đây là một framework khá mới mẻ và dễ tiếp cận, được rất nhiều
lập trình viên ưa thích và sử dụng
Trước hết, sự tinh tế của Laravel nằm ở chỗ bắt kịp được xu hướng công nghệ mà điểm nhấn ở đây là các tính năng mới trong các phiên bản PHP 5.3 trở lên Điều đó được thể hiện qua khái niệm namespace, composer, closure và rất nhiều những tiêu chuẩn trong design pattern được áp dụng trên nền tảng framework này Đồng thời, với cách hướng dẫn đơn giản và dễ tiếp cận giống với Codeigniter Framework đã khiến người dùng thích ngay từ lần đầu tiếp xúc
Laravel là một kết hợp tinh hoa từ các Framework khác, nó cung cấp một bộ công cụ mạnh mẽ và một kiến trúc ứng dụng kết hợp nhiều tính năng tốt nhất của CodeIgniter, Yii, ASP.NET MVC, Ruby on Rails, Sinatra
1.3.4 Cài đặt Laravel thông qua Composer
Giới thiệu Composer
- Nếu có một thư viện quá tuyệt vời muốn tích hợp vào dự án Khi mã nguồn update hay thư viện update thì ta phải chạy theo nghiên cứu và update lại chúng Compose là tài nguyên, thư viện trung gian quản lý việc tịch hợp thư viện, giải quyết vấn đề quản lý tài nguyên
- Composer là bộ thư viện xây dựng dựa trên Json Nhiệm vụ quản lý các thư viện thứ 3 từ bên ngoài Laravel sử dụng Composer để quản lý phụ thuộc của nó Vì
Trang 1818
Cài đặt Laravel thông qua Composer
- Tạo 1 project Laravel bằng Composer trong terminal của bạn:
composer create-project laravel/laravel your-project-name “5.0.0” prefer-dist
Hình 1.5: Cấu trúc thư mục Laravel
Trang 1919
config
Thư mục này chứa tất cả các thiết lập cấu hình của các ứng dụng như kết nối
cơ sở dữ liệu, bao gồm các lớp lõi, cài đặt email… vv
database
Thư mục này chứa các mã cho các giao dịch cơ sở dữ liệu như tạo bảng,
chỉnh sửa các cột, thêm hàng mặc định trong cơ sở dữ liệu… vv
public
Thư mục chứa các file tĩnh (css, js, less, etc.) File index.php trong thư mục này gọi đến các tập tin đó
resources
Thư mục chứa các mã nguồn của ứng dụng như Views, assets
Thư mục views chứa những file mẫu HTML mà người sử dụng bời controller
hay route
Thư mục lang chứa những file ngôn ngữ dùng cho việc phân trang và chứng
thực form người dùng với ngôn ngữ tiếng Anh
Thư mục này chứa tất cả các file của bên thứ ba (phụ thuộc và prepackages
bổ sung cho các plugin) và các tập tin mã nguồn của Frameworl laravel
1.3.5.2 Các thư mục và tập tin qua trọng khác
app/Http
Thư mục này chưa controller và routes Routes được đặt trong file route.php
và controller được đặt trong thư mục Controllers Trong đây còn có 2 folder khác là Resquests và Middleware Resquests chứa các file resquest, Middleware chứa các middlerware
Trang 20 Basic Routing (định tuyến cơ bản)
Bạn sẽ xác định hầu hết các tuyến cho ứng dụng của bạn trong tập tin app/Http/routes.php, được nạp bởi các lớp App\Providers\RouteServiceProvider Hầu hết các định tuyến Laravel cơ bản chỉ đơn giản là chấp nhận một URL và a Closure :
- Basic GET Route (định tuyến GET cơ bản)
Trang 21Route::match(['get', 'post'], '/', function(){
return 'Hello World';
Named Routes (Định tuyến được đặt tên)
- Các định tuyến được đặt tên cho phép bạn để thuận tiện tạo ra các URL hoặc chuyển hướng cho một định tuyến cụ thể Bạn có thể chỉ định một tên cho một định tuyến với mảng khóa as :
Route::get('user/profile', ['as' => 'profile', function(){
Trang 22Tất cả controller trong laravel được chứa trong thư mục app/Http/controllers
và việc tạo tên file, đặt tên controller cũng phải tuân theo nguyên tắc của nó như sau:
Trong laravel có một lớp xử lý Controller chính của nó, do đó các Controller tạo mới phải kế thừa controller này
Tên controller phải trùng với tên file
Có hai cách tạo controller:
Tạo trực tiếp trong thư mục app/Http/controllers:
Class <Tên controller> extends Controller{
//Các action
}
Tạo bằng câu lệnh artisan:
Trỏ đến thư mục gốc chứa project laravel, sau đó nhập câu lệnh:
php artisan make:controller controller nameController
Tạo các action trong controller
Khi làm việc với Route::controller thì cần chú ý việc đặt tên action phải tuân
theo quy tắc methodUri như sau:
- method là post, get, và viết thường
- Uri: Chữ cái đầu tiên của Uri sẽ bắt buộc viết in hoa, cứ 1 chữ in hoa
sẽ được tính là 1 đoạn uri được phân cách bởi dấu -
Trang 2323
Ví dụ: action getDemoAction sẽ có method là get và Url là demo-action
- Khi làm việc với Route::resource thì controller laravel hỗ trợ 8 action:
index, create, store, show, edit, update, destroy nhưng trong controller không nhất thiết phải tạo đủ 8 action này
Ngoại trừ những điều trên thì action bạn có thể đặt tên tùy ý
1.3.6.3 Eloquent ORM
Introduction (Giới thiệu)
- Các Eloquent ORM kèm với Laravel cung cấp một ActiveRecord đẹp mắt, đơn giản để thực hiện làm việc với cơ sở dữ liệu của bạn Mỗi bảng cơ sở dữ liệu có một "Model" tương ứng được sử dụng để tương tác với các bảng đó
- Trước khi bắt đầu, hãy chắc chắn đã cấu hình một kết nối cơ sở dữ liệu trong:
app/config/database.php
Basic Usage (Cách sử dụng cơ bản)
- Để bắt đầu, tạo ra một Eloquent model Model thường chứa trong các thư mục app/models, nhưng bạn được tự do để đặt chúng ở bất cứ đâu
có thể được tự động tải tập tin theo composer.json của bạn
- Defining An Eloquent Model (Định nghĩa một mô hình Eloquent): class User extends Eloquent {}
Lưu ý : Laravel không nói các bảng của Eloquent chỉ để sử dụng cho User
model của Laravel Các trường hợp thấp hơn, phần lớn tên của các lớp sẽ được sử dụng như tên bảng trừ khi tên khác được quy định một cách rõ ràng Vì vậy, trong trường hợp này, Eloquent sẽ cho rằng các lưu trữ User model ghi trong bảng người dùng Bạn có thể chỉ định một bảng tùy chỉnh bằng cách định nghĩa một thuộc tính bảng trên mô hình của bạn
Insert, Update, Delete (Chèn, Cập nhật, Xóa)
- Để tạo ra một bản ghi mới trong cơ sở dữ liệu từ một mô hình, chỉ đơn giản là tạo ra một trường mô hình mới và gọi phương thức save
Trang 2424
- Saving A New Model (Lưu một mô hình mới)
$user = new User;
$user->name = 'John';
$user->save();
Lưu ý: Thông thường, các mô hình Eloquent của bạn sẽ có các khoá tự động
tăng Tuy nhiên, nếu bạn muốn chỉ định các khóa riêng của bạn thì hãy thiết lập thuộc tính incrementing trên mô hình của bạn là false
Sau khi lưu hoặc tạo ra một mô hình mới mà sử dụng ID tự động tăng, bạn
có thể lấy lại ID bằng cách truy cập thuộc tính id của đối tượng:
$ insertedId = $ user-> id;
- Setting The Guarded Attributes On The Model (Thiết lập các thuộc tính bảo vệ trong mô hình)
class User extends Eloquent {
protected $guarded = array('id', 'account_id');
}
- Using The Model Create Method (Sử dụng mô hình tạo phương thức) /* Tạo một người dùng mới trong cơ sở dữ liệu… */
$user = User::create(array('name' => 'John'));
/* Lấy người dùng bởi các thuộc tính, hoặc tạo ra nó nếu nó không tồn tại
*/
$user = User::firstOrCreate(array('name' => 'John'));
/* Lấy người sử dụng bởi các thuộc tính, hoặc khởi tạo một trường mới */
$user = User::firstOrNew(array('name' => 'John'));
- Updating A Retrieved Model (Cập nhật một mô hình lấy dữ liệu)
Trang 2525
Đôi khi bạn có thể lưu lại không chỉ là một mô hình, mà còn tất cả các mối quan hệ của nó Để làm như vậy, bạn có thể sử dụng phương thức push:
$user->push();
Bạn cũng có thể chạy bản cập nhật như truy vấn đối với một tập hợp các mô hình:
$affectedRows = User::where('votes', '>', 100)->update(array('status' => 2));
- Deleting An Existing Model (Xóa một mô hình đang hiện tại)
$user = User::find(1);
$user->delete();
Timestamps (Mốc thời gian)
Theo mặc định, Eloquent sẽ duy trì các cột created_at và updated_at trên bảng cơ sở dữ liệu của bạn tự động Đơn giản chỉ cần thêm những cột mốc thời gian cho bảng của bạn và Eloquent sẽ lo phần còn lại Nếu bạn không muốn cho Eloquent giữ các cột này hãy thêm các quyền sau cho mô hình của bạn:
- Disabling Auto Timestamps (Vô hiệu hóa tự động lưu mốc thời gian) class User extends Eloquent {
protected $table = 'users';
public $timestamps = false;
}
- Providing A Custom Timestamp Format (Cung cấp một định dạng tùy chỉnh với mốc thời gian)
class User extends Eloquent {
protected function getDateFormat(){return 'U'; }
}
1.3.6.4 Views (Khung nhìn)
Basic Usage (Cách sử dụng cơ bản)
Views chứa HTML phục vụ cho ứng dụng của bạn, và đóng vai trò một phương pháp tiện lợi của việc tách điều khiển của bạn và phần logic từ sự trình bày logic của bạn Views được lưu trữ trong thư mục resources/views
<! View stored in resources/views/greeting.php >
<html>
Trang 26Tất nhiên, các view cũng có thể được lồng trong thư mục con của thư mục resources/views Ví dụ, nếu view của bạn được lưu trữ tại resources/views/admin/ profile.php, nó nên được lấy ra như sau :
return view('admin.profile', $data);
- Passing Data To Views (Thông qua dữ liệu để tạo khung nhìn)
// Using conventional approach
$view = view('greeting')->with('name', 'Victoria');
// Using Magic Methods
$view = view('greeting')->withName('Victoria');
Trong ví dụ trên, các biến $name có thể truy cập để xem và chứa Victoria Nếu bạn muốn, bạn có thể truyền một loạt các dữ liệu như là các tham số thứ hai cho các view helper:
$view = view('greetings', $data);
Khi đi qua các thông tin theo cách này, $data cần được một mảng với cặp khóa/giá trị Bên trong view của bạn, bạn có thể truy cập mỗi giá trị sử dụng nó với khóa tương ứng, như {{$ key}} (giả sử $data['$key'] tồn tại)
Blade Templating
Blade khá đơn giản nhưng thiết kế khuôn mẫu mạnh mẽ được cung cấp bởi Laravel Không giống như các layout điều khiển, phiến được định hướng bởi mẫu