ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ
ĐẶNG HẢI AN
XÂY DỰNG FRAMEWORK HỖ TRỢ LẬP TRÌNH WEB
LUẬN VĂN THẠC SĨ
NGÀNH: CÔNG NGHỆ THÔNG TIN
Hà Nội – 2015
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ
ĐẶNG HẢI AN
XÂY DỰNG FRAMEWORK HỖ TRỢ LẬP TRÌNH WEB
Ngành
Chuyên ngành
Mã số
: Công nghệ thông tin
: Kỹ thuật phần mềm
: 60480103
LUẬN VĂN THẠC SĨ
NGÀNH: CÔNG NGHỆ THÔNG TIN
LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình của riêng tôi. Các số liệu, kết quả nêu
trong Luận văn là vô cùng trung thực, và chưa ai công bố trong bất kỳ công trình
nào khác.
Tôi xin cam đoan các thông tin trích dẫn trong Luận văn đã được chỉ rõ
nguồn gốc.
Học viên thực hiện Luận văn
ĐẶNG HẢI AN
5
MỤC LỤC
LỜI CẢM ƠN ...................................................................................................... 2
LỜI CAM ĐOAN ................................................................................................ 3
MỤC LỤC ............................................................................................................ 4
Danh mục các ký hiệu và chữ viết tắt ................................................................ 6
Danh mục các bảng ............................................................................................. 7
Danh mục hình vẽ, đồ thị .................................................................................... 8
MỞ ĐẦU ............................................................................................................ 10
CHƢƠNG 1. TỔNG QUAN VỀ NỀN TẢNG HỖ TRỢ LẬP TRÌNH ỨNG
DỤNG WEB (WEB APPLICATION FRAMEWORK)................................ 12
1.1. Framework ................................................................................................ 12
1.2. Web Application Framework ................................................................... 12
1.3. PHP Framework ....................................................................................... 14
1.4. Mô hình Model - View - Controller (MVC) ............................................ 14
1.4.1. Lịch sử mô hình MVC ........................................................................ 14
1.4.2. Khái niệm mô hình MVC ................................................................... 15
1.4.3. Các thành phần trong Web Framework ............................................ 16
SỬ DỤNG FRAMEWORK THỬ NGHIỆM.................................................. 40
3.1. Giới thiệu về quy trình quản lý và sử dụng phòng thực hành. ................. 40
3.2 Phân tích nhu cầu....................................................................................... 40
3.3. Thiết kế hệ thống ...................................................................................... 41
3.3.1. Biểu đồ Use Case ............................................................................... 41
3.3.2. Biểu đồ chi tiết lớp ............................................................................. 43
3.4. Ứng dụng quản lý phòng thực hành ......................................................... 45
KẾT LUẬN ........................................................................................................ 49
TÀI LIỆU THAM KHẢO ................................................................................ 51
7
DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT
STT
1
2
3
4
5
6
7
8
9
10
11
Từ viết tắt
CSS
HTTP
Bảng 3.3. Danh mục máy/thiết bị trong phòng thực hành .................................. 44
Bảng 3.4. Đăng ký phòng thực hành ................................................................... 45
9
DANH MỤC HÌNH VẼ, ĐỒ THỊ
Hình 1.1. Mô hình MVC ..................................................................................... 15
Hình 1.2. Biểu đồ tuần tự một chuỗi MVC đơn giản.......................................... 17
Hình 2.1. Mô hình Model – View – Controller trong Zend Framework ............ 20
Hình 2.2. Cấu trúc thư mục của Zend Framework.............................................. 21
Hình 2.3. Cấu trúc hệ thống thư mục Framework thử nghiệm ........................... 25
Hình 2.4. Quy trình xử lý một HTTP Request của Framework thử nghiệm ...... 26
Hình 3.1. Biểu đồ Use Case các tác nhân và mối quan hệ giữa các tác nhân ..... 41
Hình 3.2. Biểu đồ Use Case theo hướng chức năng của tác nhân Admin .......... 42
Hình 3.3. Biểu đồ Use Case theo hướng chức năng của tác nhân Giảng viên.... 42
Hình 3.4. Biểu đồ Use Case theo hướng chức năng của tác nhân Sinh viên ...... 42
Hình 3.5. Biểu đồ Use Case khi tích hợp hệ thống phụ ...................................... 43
Hình 3.6.Giao diện đăng nhập hệ thống.............................................................. 45
Hình 3.7. Giao diện khi đăng nhập thành công với quyền Admin ..................... 46
Hình 3.8. Giao diện cập nhật lớp học trong trường ............................................ 46
Hình 3.9. Giao diện cập nhật thiết bị trong phòng máy ...................................... 47
Hình 3.10. Giao diện cập nhật phòng thực hành trong trường ........................... 47
Hình 3.11. Giao diện đăng ký lịch thực hành phòng máy .................................. 48
Hình 3.12. Giao diện xem lịch thực hành phòng máy ........................................ 48
10
MỞ ĐẦU
nguồn mở. Trước khi giới thiệu về Framework thử nghiệm xây dựng được tác
giả luận văn đưa ra Zend Framework, phân tích các chức năng và thành phần
của nó. Dựa trên kiến thức thu được khi phân tích Zend Framework, tác giả xây
dựng PHP Framework thử nghiệm, và đưa ra kiến trúc của Framework thử
nghiệm, với hệ thống thư mục và các thành phần trong Framework thử nghiệm.
11
Ngoài ra luận văn cũng giới thiệu các lớp thư viện, và hàm hỗ trợ tự xây dựng
được khi làm Framework thử nghiệm.
Xây dựng ứng dụng Web “Quản lý đăng ký sử dụng phòng thực hành máy
tính trường Đại học Hải Dương” dựa trên Framework thử nghiệm, chỉ ra phương
thức vận hành của ứng dụng. Trước khi xây dựng ứng dụng, tác giả đã tìm hiểu
về quy trình quản lý và sử dụng thực tế phòng thực hành máy tính trường Đại
học Hải Dương. Từ đó đi phân tích các nhu cầu và xây dựng các chức năng
chính trong ứng dụng Web “Quản lý đăng ký sử dụng phòng thực hành máy tính
trường Đại học Hải Dương”. Luận văn cũng trình bày bản thiết kế hệ thống ứng
dụng. Và tác giả viết ứng dụng với Framework thử nghiệm. Cuối cùng trong
luận văn tác giả cũng mô tả về cách thức hoạt động của ứng dụng Web “Quản lý
đăng ký sử dụng phòng thực hành máy tính trường Đại học Hải Dương”.
3. Bố cục luận văn
Luận văn được thiết kế bao gồm 3 chương:
Chƣơng 1. Tổng quan về nền tảng hỗ trợ lập trình Web (Web
Application Framework)
Chương này giới thiệu tổng quan về framework, ứng dụng web, so sánh
web tĩnh và web động. Lợi ích khi sử dụng web application framework để xây
dựng ứng dụng web, web động, các dịch vụ web….
Ngoài ra chương 1 còn giới thiệu về PHP Framework với ý tưởng làm
việc chung của PHP Framework hiện nay qua mô hình kiến trúc MVC, và giới
viện hỗ trợ cho các nhà phát triển ứng dụng sử dụng.
- Framework hoạt động chủ động: Bản thân Framework có thể tự đưa ra
các quyết định gọi (hoặc bị gọi bởi) một cái gì đó, có thể là thư viện hoặc ứng
dụng.
- Framework đưa ra một phương pháp luận để viết ứng dụng và thư viện
trên nó.
Như vậy có thể nói, người lập trình ra Framework thực tế là viết ra một
phần mềm ứng dụng khái quát, tạo ra một thư viện và một bộ gọi - tải - nạp ứng
dụng. Người lập trình ứng dụng sẽ dựa vào ứng dụng khái quát để phát triển ứng
dụng trên Framework.
1.2. Web Application Framework
Ứng dụng Web là một chương trình ứng dụng có thể tiếp cận web thông
qua mạng như Internet hoặc mạng nội bộ. Để thiết kế website có 2 phương thức
chính để có thể thiết kế lên ứng dụng web đó là thiết kế web tĩnh và thiết kế web
động:
- Web tĩnh: là các website chỉ bao gồm các trang web tĩnh, nội dung ít
thay đổi và người sử dụng không tương tác được với nó, muốn thay đổi nội dung
của nó người ta phải thay đổi trong mã nguồn. Thiết kế web tĩnh người ta
thường sử dụng ngôn ngữ HTML, và thường không có cơ sở dữ liệu đi kèm.
Như vậy với web tĩnh ta có thể thấy nó có ưu điểm là thiết kế đẹp (vì có thể trình
bày ý tưởng về đồ họa và mỹ thuật trên từng diện tích trang web), tốc độ truy
cập nhanh (vì không mất thời gian truy cập cơ sở dữ liệu), chi phí đầu tư thấp (vì
không mất phí cho việc lập trình web, thiết kế cơ sở dữ liệu và thuê chỗ cho cơ
sở dữ liệu,…). Nhưng sử dụng web tĩnh gặp khó khăn ở chỗ: khó thay đổi và
13
cập nhật thông tin (muốn thay đổi phải biết ngôn ngữ html, sử dụng được
chương trình thiết kế đồ họa và thiết kế web), thông tin không có tính linh hoạt
tuyến, Đấu giá trực tuyến, Diễn đàn thảo luận, Weblog, Hệ quản trị nội
dung, Phần mềm quản lý nguồn nhân lực và nhiều chức năng khác.
Web Application Framework là một Framework được thiết kế để hỗ trợ
việc phát triển các website động, các ứng dụng web và các dịch vụ web.
14
1.3. PHP Framework
PHP framework là web framework được viết bằng PHP - một ngôn ngữ
lập trình nguồn mở phổ biến nhất hiện nay.
PHP framework làm cho sự phát triển của những ứng dụng web viết bằng
ngôn ngữ PHP trở nên trôi chảy hơn, bằng cách cung cấp một cấu trúc cơ bản để
xây dựng những ứng dụng đó. Hay nói cách khác, PHP framework giúp đỡ
chúng ta thúc đẩy nhanh chóng quá trình phát triển ứng dụng, tiết kiệm được
thời gian, tăng sự ổn định cho ứng dụng, và giảm thiểu số lần phải viết lại mã
cho lập trình viên. Ngoài ra PHP Framework còn giúp những người mới bắt đầu
có thể xây dựng các ứng dụng ổn định hơn nhờ việc tương tác chính xác giữa
các Database, mã (PHP) và giao diện (HTML) một cách riêng biệt. Điều này cho
phép chúng ta dành nhiều thời gian để tạo ra các ứng dụng web, hơn là phí thời
gian để viết các đoạn mã lặp lại trong một project.
PHP là một ngôn ngữ script khá mạnh mẽ dùng để xây dựng website, và
hiện nay nó cũng đang có rất nhiều framework tốt như: zend framework,
symfony, yii framework, codeigniter… được rất nhiều nhà phát triển ưa thích và
sử dụng. Các PHP Framework đều được xây dựng theo chuẩn mô hình Model View - Controller (MVC) và cung cấp rất nhiều lớp hỗ trợ xử lý về bảo mật,
phân quyền, captcha, view helper, module manager, database, service… khi đó
các lập trình viên sẽ xây dựng, phát triển website một cách dễ dàng và nhanh
chóng.
Ý tưởng chung đằng sau cách thức làm việc của một PHP
framework được kể đến là Model - View - Controller (MVC). MVC là một mô
Hình 1.1. Mô hình MVC
Trong đó [3, 4]:
- Model: Cách thức cung cấp dữ liệu và xử lý dữ liệu (đóng vai trò Phát
triển). Các lớp thuộc thành phần Model thường thực hiện các tác vụ như truy
vấn, thêm, xoá, cập nhật dữ liệu. Khi dữ liệu trong Model thay đổi, thành phần
View sẽ được cập nhật lại. Nói đơn giản hơn, Model là lớp thao tác với cơ sở dữ
liệu là chính.
- View: là thành phần thể hiện dữ liệu trong Model thành các giao diện
tương tác với người sử dụng (đóng vai trò thiết kế). Một mô hình có thể có nhiều
View phụ thuộc vào các mục đích khác nhau. Nói đơn giản hơn, View là lớp
hiển thị dữ liệu ra bên ngoài cho người dùng xem.
- Controller: đóng vai trò trung gian giữa Model và View. Thông tin
người dùng từ View được gửi cho Controller xử lý, sau đó Controller tương tác
với Model để lấy dữ liệu được yêu cầu, sau cùng Controller trả dữ liệu này về
16
cho View. Nói đơn giản hơn, Controller là lớp điều khiển, có chức năng điều
khiển các hành vi, yêu cầu.
Mô hình MVC thường được sử dụng trong các ứng dụng web, vì thành
phần View (mã HTML/XHTML) được sinh ra từ các ngôn ngữ thiết kế website.
Thành phần Controller sẽ nhận các dữ liệu GET/POST, xử lý những dữ liệu này,
sau đó chuyển sang Model xử lý. Model sẽ trả dữ liệu về phía Controller, sau đó
Controller sinh mã HTML/XHTML để thể hiện trên View.
Cách thức làm việc của MVC:
- Khi user tương tác với View bằng cách click vào button, user gửi yêu
cầu đi.
- Controller nhận và điều hướng chúng đến phương thức xử lý ở Model.
- Cotroller nhận thông tin và thực thi yêu cầu
Là các lớp định nghĩa cách thức trình bày dữ liệu (không cập nhật dữ
liệu). View bao gồm 2 phần chính [2, 4]:
- Template file: định nghĩa giao diện cho người dùng. Ví dụ như bố cục,
màu sắc, khung nhìn ...
- Phần Logic: xử lý cách áp dụng dữ liệu vào cấu trúc trình bày. Phần này
có thể kiểm tra dữ liệu để có thể hiển thị dữ liệu với cấu trúc template đang có...,
kiểm tra trạng thái và đặc tính của dữ liệu để lựa chọn một cấu trúc hiển thị phù
hợp.
Bản thân View cũng là một tổ hợp của nhiều lớp. Và nó cũng có thể có
View con để giảm tải trên một số lớp chính và để tái sử dụng mã.
Trong mô hình truyền thống, View có trách nhiệm chuyển đổi dữ liệu hay
trạng thái của Model thành cấu trúc trực quan. Do vậy dữ liệu của Model cần
được định nghĩa một cách hợp lý. Sự tách biệt của hai thành phần này sẽ giúp
cho người lập trình phân biệt rõ ràng giữa cách thức lưu trữ/lấy dữ liệu và cách
trình bày dữ liệu. Do vậy tính phức tạp của quy trình lấy dữ liệu, xử lý dữ liệu
(sự thay đổi của chúng theo thời gian) trước khi trả về sẽ không làm ảnh hưởng
đến việc trình bày dữ liệu. Rõ ràng sự khác biệt về công nghệ lấy dữ liệu và
công nghệ sinh trang không gây ảnh hưởng đến ứng dụng. Điều này khá quan
trọng trong việc tích hợp các ứng dụng. Ngoài ra, cách làm này thực sự đảm bảo
việc tách biệt vai trò của người thiết kế giao diện với vai trò của lập trình viên
thiên về dữ liệu. Như vậy khi làm việc theo nhóm, người quản trị dự án có thể tổ
chức nhóm phát triển thành các nhóm kĩ năng và phát triển ứng dụng song song
với nhau.
Các công nghệ thường được sử dụng ở View là HTML, CSS và
JavaScript.
Hình 1.2. Biểu đồ tuần tự một chuỗi MVC đơn giản
18
cụ thể, tương tác với database, tương tác với các web services.
- Tạo đối tượng view, gán các nguồn dữ liệu lấy được từ đối tượng dịch
vụ vào cho view.
Khi Controller gọi Model thông qua các giao diện lập trình (API) của
Model, nó cần biết một số ứng xử chung của Model. Ví dụ: cách Model đó gửi
tín hiệu về quá trình nó xử lý yêu cầu, kiểu trả về cần mang tính nhất quán.
Mô hình Model - View - Controller được áp dụng chủ yếu trong các Web
framework hiện nay. Các PHP framework phổ biến nhất có thể kể đến:
19
- CakePHP: là một lựa chọn tốt cho những lập trình viên có kiến thức
nâng cao về PHP. Mục đích của nó là cung cấp một framework cho người sử
dụng php phát triển những ứng dụng web nhanh, mạnh mẽ, linh hoạt, và điều
quan trọng là CakePHP là một OpenSource (miễn phí). Để sử dụng nó, yêu cầu
người làm phải biết những kiến thức như: Cơ bản về PHP và HTML, kiến trúc
Model - View - Controller, Lập trình hướng đối tượng. Với các hệ thống hỗ trợ,
tính đơn giản và môi trường mở cao đã giúp cho CakePHP trở thành một trong
những framework phổ biến nhất hiện nay. Điểm nổi bật của CakePHP là được
cộng đồng mạng tích cực chia sẻ, cấu trúc khung rất dễ hiểu và đặc biệt là Cake
Bakerry là nơi các nhà phát triển bên thứ ba có thể thêm mã riêng của họ và chia
sẻ với cộng đồng. CakePHP là khung framework không có sự ủng hộ của công
ty, nhưng đó cũng có thể coi là một thuận lợi của nó vì như vậy nó được cộng
đồng lựa chọn và phát triển nhiều hơn [9,10].
- CodeIgniter: một MVC framework viết bằng PHP4 (đã tương thích hoàn
toàn với PHP 5.3.0 trong phiên bản 1.7.2). Được biết đến như một framework dễ
hiểu, dễ sử dụng và rất nhẹ nên nó có tốc độ rất nhanh. Đặc biệt là bạn có thể
thêm phần mềm của bên thứ ba nào khác mà chạy vẫn không cảm thấy chậm đi.
CodeIgniter được Rasmus Lerdorf - cha đẻ của ngôn ngữ PHP - đánh giá rất cao
điểm của Zend Framework [1, 6]:
- Tạo ứng dụng web theo mô hình chuẩn Model - View - Controller.
- URL tiêu chuẩn, ngắn gọn.
- Hỗ trợ phân quyền tới từng Action.
- Có các thành phần thư viện hỗ trợ API của các nhà cung cấp như Yahoo,
Google, Flick.
- Có rất nhiều thư viện được hỗ trợ sẵn.
- Được xây dựng trên nền tảng lập trình hướng đối tượng nên có thể thừa
kế, nâng cấp ứng dụng một cách dễ dàng.
- Dễ dàng phát triển thêm các ứng dụng nhúng, sử dụng các plugins.
- Ta đi tìm hiểu cấu trúc và chức năng của các thành phần trong Zend
Framework, trước khi phân tích PHP Framework thử nghiệm, để thấy được sự
khác nhau giữa chúng.
Mô hình Model - View - Controller trong Zend Framework (Xem hình 2.1)
Hình 2.1. Mô hình Model – View – Controller trong Zend Framework
Model: Thành phần model được xây dựng thành các lớp kế thừa từ lớp
Zend_Db_Table hoặc Zend_Db_table_Abstract được đặt trong thư mục
application/models của ứng dụng. Mỗi lớp sẽ đảm nhận việc kết nối và thao tác
đến table trong cơ sở dữ liệu.
21
View: Thành phần của view được đặt trong thư mục application/views.
Trong thư mục views có 3 thành phần:
- Scripts: chứa các thư mục gồm các file ánh xạ đến các controller/action
để hiển thị trang giao diện tương ứng.
- Helpers: trong thư mục này chứa các lớp mà chúng ta tạo ra và các lớp
này sẽ được nạp tự động cho đối tượng Zend_View thông qua
tin này.
- Thư mục Data: thư mục chứa những dữ liệu được cached từ database,
hoặc cache những toàn bộ cấu hình của dự án… Chúng ta lưu trữ các tập tin dữ
liệu trong thư mục này để dễ dàng quản lý và xử lý.
- Thư mục Module: nơi chứa những module mở rộng, bạn có thể xây
dựng những module mới dành riêng cho dự án của bạn giúp bạn xây dựng dự án
một cách nhanh chóng và hiệu quả nhất.
- Thư mục public: là nơi những tập tin như css, js, font, hình ảnh,…. để
hỗ trợ cho việc hiển thị website trên trình duyệt, nó chứa những tài nguyên công
khai và dễ dàng truy nhập.
- Thư mục vendor: nơi chứa bộ thư viện Zend Framework 2 và những
module mở rộng khác. Bạn có thể đặt module mở rộng ở cả trong 2 thư
mực module hoặc vendor
PHP Framework thử nghiệm được chúng tôi xây dựng và phát triển, có
nhiều ưu điểm khác so với các PHP framework hiện nay:
- Tạo ứng dụng web theo mô hình chuẩn Model – View – Controller,
nhưng với nguyên tắc đặt tên của các thành phần View, Controller là View_ini,
Controller_ini. Với giá trị biến ini được lấy từ yêu cầu người dùng (địa chỉ
URL), như vậy với việc triệu gọi lớp join_path nó sẽ thực hiện việc ghép các
thành phần Model – View – Control có liên quan lại với nhau. Thành phần
Model được thừa kế từ lớp mysql (system/Database) chủ yếu tương tác với cơ sở
dữ liệu, thành phần Controller sử dụng lớp Model tương tác với cơ sở dữ liệu để
thực hiện các thao tác xử lý yêu cầu người dùng, thành phần View tạo giao diện
tương tác với người dùng sử dụng lớp Controller tương ứng để nhận kết quả của
trang ứng dụng.
- Có thể sử dụng ngay hàm trong thư viện (thư mục system\Lib) với các
lớp Registry (system\CoreAc) và autoload (system\Lib) mà không cần khai báo.
Vì với lớp Registry Framework thử nghiệm sẽ tiến hành đăng ký với hệ thống,
- Kiến trúc MVC hiện đại: mô hình dữ liệu (Model), điều khiển ứng
dụng (Controller), chức năng hiển thị (View).
- Khả năng tổ chức ứng dụng thành các lớp Controller đa tầng, giúp ứng
dụng có tính module hóa.
- Thư viện hỗ trợ caching.
- Mềm dẻo trong việc định tuyến URL (URL Routing).
- Tích hợp một số lớp và thư viện hàm hỗ trợ thuận tiện cho người sử
dụng: gửi Email, hỗ trợ đính kèm, HTML/Text email, đa giao thức (sendmail,
24
SMTP, and Mail) – Email Class; đăng tải một file lên server – Upload Class;
tương tác với máy chủ thông qua giao thức FTP-FTP Class; phân trang tự động
– Pagination Class; tạo ảnh Captcha - một loại kiểm thử dạng hỏi đáp được dùng
trong máy tính để xác định xem người dùng có phải là con người hay không Captcha Class; xuất dữ liệu ra định dạng khác (Excel, tsv hay csv) – ExportData
Class; lớp quy định việc bảo mật - Password_en_de Class (lớp này bao gồm 2
hàm xử lý việc mã hóa encode($str) và hàm xử lý việc giải mã decode($str));
đặc biệt hệ thống sẽ tự động add theo cấu trúc tên lớp và file trùng nhau và nằm
trong thư mục Lib nếu người dùng sử dụng mà không khai báo; một lượng lớn
các hàm hỗ trợ (trong thư mục System/helpers).
Yêu cầu khi sử dụng Framework thử nghiệm: Để hệ thống vận hành được,
yêu cầu tối thiểu sau cần được đáp ứng:
- Web server: Apache, Nginx, Lighttpd
- PHP 5.2.6 trở lên
- Database: MySQL
Khuyến cáo:
- Web server: Apache 2.2.11 kết hợp với PHP như là một module
- PHP 5.2.6 trở lên có bật Apache
2.2. Kiến trúc của Framework thử nghiệm
Database
25
Hình 2.3. Cấu trúc hệ thống thư mục Framework thử nghiệm
Có thể thấy Framework thử nghiệm được xây dựng hỗ trợ cho các lập
trình viên viết các ứng dụng web quản lý. Ví dụ có thể thấy Framework thử
nghiệm hỗ trợ chức năng xuất excel từ các bảng biểu báo cáo với lớp
ExportDataExcel trong thư viện Lib. Hay Framework thử nghiệm đưa ra những
quy định riêng về vấn đề bảo mật, nên việc bảo mật hệ thống của Framework
thử nghiệm cũng khác so với các Framework khác hiện nay. Framework thử
nghiệm sẽ sử dụng hàm Session để lưu lại các phiên làm việc, và với các máy
khác nhau nó cũng sẽ có các phiên làm việc khác nhau.
Ngoài ra trong Framework thử nghiệm xây dựng hàm autoload
(System/Lib/autoload.php), có thể tự động add các lớp và hàm theo cấu trúc tên
lớp và file trùng nhau nằm trong thư mục Lib. Như vậy khiến cho người dùng có
thể phát triển thêm các plugin theo nhu cầu của họ.