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

Xây dựng hệ thống chia sẻ tài liệu điện tử cho sinh viên ICTU

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.03 MB, 50 trang )

LỜI CẢM ƠN
Trong thời gian thực hiện đề tài đồ án tốt nghiệp với sự giúp đỡ tạo điều kiện
của Trường Đại Học Công Nghệ Thông Tin Và Truyền Thông - ĐH Thái Nguyên, sự
góp ý của các bạn và đặc biệt là sự hướng dẫn trực tiếp, chỉ bảo tận tình của thầy
giáo: ThS. Nguyễn Văn Việt, em đã hoàn thành đề tài đồ án tốt nghiệp cùng với bản
báo cáo đúng thời gian quy định.
Mặc dù đã cố gắng, nhưng với trình độ còn hạn chế, trong quá trình làm đề tài
không tránh khỏi những thiếu sót. Em hy vọng sẽ nhận được những ý kiến xem xét, góp
ý của các nhà khoa học, các Thầy Cô giáo và các bạn bè về những vấn đề triển khai
trong đề tài.
Một lần nữa em xin chân thành cảm ơn tất cả các thầy, cô giáo trong Trường
Đại Học Công Nghệ Thông Tin Và Truyền Thông - ĐH Thái Nguyên, đã dạy dỗ, chỉ
bảo em. Đặc biệt em xin gửi lời cảm ơn sâu sắc tới thầy Nguyễn Văn Việt đã hướng
dẫn, hỗ trợ và chỉ dạy em hoàn thành tốt chương trình và bản báo cáo này.
Em xin chân thành cảm ơn!

1


Thái Nguyên, ngày 01 tháng 05 năm 2017
Sinh viên thực hiện

Lê Ngô Việt Anh

2


LỜI CAM ĐOAN
Em xin cam đoan toàn bộ đề tài: “Xây dựng hệ thống chia sẻ tài liệu điện tử
cho sinh viên ICTU” là do bản thân tìm hiểu, nghiên cứu. Không có sự sao chép nội
dung từ các đề tài khác. Ngoài ra còn có sự góp ý và định hướng của Thầy giáo Th.S


Nguyễn Văn Việt.
Em xin cam đoan những lời trên là đúng, mọi thông tin sai lệch em xin hoàn toàn
chịu trách nhiệm trước Hội đồng.

Thái Nguyên, tháng 05 năm 2017
Sinh viên

Lê Ngô Việt Anh

MỤC LỤC
MỤC LỤC ....................................................................................................................... 1
CHƯƠNG 1 : CƠ SỞ LÝ THUYẾT ................................................................................ 6
1.1. Tìm hiểu về Laravel............................................................................................ 6

3


1.1.1.
Giới thiệu về Laravel ................................................................................ 6
1.1.2.
Sự phát triển của Laravel.......................................................................... 7
1.1.3.
Các điểm nhấn đặc sắc của Laravel. ......................................................... 8
1.1.4.
Cài đặt Laravel thông qua Composer. ...................................................... 9
1.1.5.
Cấu trúc Laravel..................................................................................... 11
1.1.6.
Các thành phần cơ bản trong Laravel..................................................... 12
1.2 Tổng quan về ngôn ngữ UML........................................................................... 21

1.2.1
Giới thiệu về UML .................................................................................. 22
1.2.2
UML là ngôn ngữ.................................................................................... 23
1.2.3
UML là ngôn ngữ để hiển thị .................................................................. 23
1.2.4
UML là ngôn ngữ đặc tả ......................................................................... 24
1.2.5
UML là ngôn ngữ để xây dựng ................................................................ 24
1.2.6
UML là ngôn ngữ tài liệu ........................................................................ 24
1.3 PHP & MySQL ................................................................................................ 25
1.3.1
Hệ quản trị CSDL MySQL. ..................................................................... 25
1.3.2
Ngôn ngữ PHP ....................................................................................... 26
CHƯƠNG 2: KHẢO SÁT, PHÂN TÍCH THIẾT KẾ HỆ THỐNG ............................... 28
2.1. Khảo sát hiên trạng ........................................................................................... 28
2.2 Phân tích thiết kê hệ thống ................................................................................ 28
2.3 Phân tích thiết kế hệ thống website ................................................................... 30
2.3.1
Phân tích và yêu cầu ............................................................................... 30
2.3.2
Các yêu cầu đối với bài toán ................................................................... 30
2.3.3.
Biểu đồ Usecase ..................................................................................... 30
2.3.4.
Biểu đồ trình tự ....................................................................................... 39
2.3.5

Chi tiết cơ sở dữ liệu ............................................................................... 42
CHƯƠNG 3 :THIẾT KẾ GIAO DIỆN CHƯƠNG TRÌNH ............................................ 43
3.1 Giao diện chương trình ..................................................................................... 43
3.1.1
Giao diện phần quản lý ........................................................................... 43
3.1.2
Giao diện phần hiển thị chính ................................................................. 45
KẾT LUẬN ................................................................................................................... 46
TÀI LIỆU THAM KHẢO ............................................................................................. 47

LỜI MỞ ĐẦU

4


Trong thời đại ngày nay, mạng internet và các ứng dụng trên internet đã trở nên
phổ biến và đóng vai trò quan trọng trong nhiều lĩnh vực của cuộc sống, kinh tế, xã
hội. Chính sự phát triển mạnh mẽ của công nghệ mạng viễn thông và các ứng dụng
khai thác thông tin trên mạng internet ngày càng phát triển nhiều, phong phú và đa
dạng. Một trong những ứng dụng và cũng là thành phần quan trọng của mạng internet
đó chính là các website. Mọi thông tin trên mạng internet hầu hết được xuất bản và cập
nhật từ những website. Đây chính là nguồn tài nguyên thông tin vô cũng lớn, quý giá
đối với bất kỳ quốc gia, tổ chức hay cá nhân nào.
Hiện nay nhu cầu tìm kiếm thông tin là rất cần thiết nhất là với học sinh, sinh
viên về các kiến thức xã hội, chính trị, văn hóa, công nghệ, kỹ thuật...Mà các tài liệu,
giáo khoa, giáo trình còn đang khó khăn với các học sinh, sinh viên. Nhằm đáp ứng
nhu cầu đó, các website phục vụ cho việc trao đổi tài liệu, hỏi đáp thắc mắc, trao đổi
kiến thức trên internet trở nên thiết thực và phổ biến. Vì vậy, cùng với những gợi ý của
GVHD Thạc sĩ Nguyễn Văn Việt, em đã chọn đề tài:“ Xây dựng hệ thống chia sẻ tài
liệu điện tử cho sinh viên ICTU”để nghiên cứu và có thêm kiến thức về lĩnh vực xây

dựng website cho bản thân, giúp ích cho quá trình học tập và làm việc.
Trước tiên em xin gửi lời cảm ơn đến thầy Nguyễn Văn Việt, là giảng viên
trực tiếp hướng dẫn chúng em trong đợt thực tập này. Cảm ơn thầy đã tạo cho em
những điều kiện thuận lợi để em có thể hoàn thành tốt đợt thực tập này. Bên cạnh
những kết quả khiêm tốn mà em đạt được, chắc chắn không tránh khỏi những thiếu sót
và hạn chế trong nội dung báo cáo và chương trình. Kính mong nhận được những ý
kiến đóng góp của thầy cô để em có thể hoàn thiện hơn.
Em xin chân thành cảm ơn !

5


CHƯƠNG 1 : CƠ SỞ LÝ THUYẾT
1.1. Tìm hiểu về Laravel
1.1.1. 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.

Hình 1. Framework Laravel.
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.

6


1.1.2. 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 2. Tỉ lệ người sử dụng Laravel năm 2013
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 :

7


Hình 3. Tỉ lệ người sử dụng Laravel năm 2015
1.1.3. 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 ta thấy Laravel đang được cộng đồng đánh giá cao.

MVC trong Laravel
Ở phần Routes phía trên, chúng ta đã biết cách chỉ định cho Laravel ứng với url
pattern nào thì gọi đến controller, action nào.
Trong phần này, chúng ta sẽ tìm hiểu rõ hơn về controller trong Laravel, cũng
như Model và view.

8


Hình 4. 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.
- 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.1.4. Cài đặt Laravel thông qua Composer.
 Giới thiệu Composer

9



- 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ì
vậy, trước khi sử dụng Laravel, bạn sẽ cần phải chắc chắn rằng bạn đã cài đặt trên máy
Composer của bạn.

Hình 5. Cài đặt composer
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

10


Hình 6 . cấu trúc thư mục Laravel.
1.1.5. Cấu trúc Laravel
a. Các thư mục chính
 app
App chứa các mô hình và điều khiển các ứng dụng. App chứa Model và
Controller cho ứng dụng của bạn.
 Booststrap
Thư mục này chứa các thiết lập cơ bản để bắt đầu ứng dụng
 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

11


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.
 storage
Thư mục lưu trữ khuôn mẫu Blade, dữ liệu của sessions, caches và các file
khác được sinh ra bởi framework
 test
Thư mục này chứa tất cả các bài tests của ứng dụng
 vendor
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.
b. 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.

 app/ Exception:
Thư mục chứa các classes ngoại lệ.
app/ Services
Thư mục này được sử dụng để xác định các Services mới.
 app/ Providers
Thư mục này đăng ký và liên kết với các Services.
 resources/views
Thư mục này chứa các tập tin views.
 .env
Đây là một tập tin ẩn trong thư mục gốc của ứng dụng. Tập tin này có chứa các
dữ liệu cá nhân như tên và mật khẩu cơ sở dữ liệu, dữ liệu cấu hình email…vv
1.1.6. Các thành phần cơ bản trong Laravel
a. Routing

12


 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)
Route::get('/', function(){
return 'Hello World';
});
- Other Basic Routes (các định tuyến cơ bản khác)
Route::post('foo/bar', function(){
return 'Hello World';
});
Route::put('foo/bar', function(){

//
});
Route::delete('foo/bar', function(){
//
});
- Registering A Route For Multiple Verbs (đăng ký một định tuyến đối với
nhiều động từ)
Route::match(['get', 'post'], '/', function(){
return 'Hello World';
});
- Registering A Route That Responds To Any HTTP Verb (đăng ký một định
tuyến đáp ứng đến động từ HTTP bất kỳ)
Route::any('foo', function(){
return 'Hello World';
});
Thông thường, bạn sẽ cần phải tạo ra đường dẫn đến các định tuyến của bạn,
bạn có thể làm như vậy bằng cách sử dụng url helper:
$url = url('foo');

13


 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(){
//
}]);
- Bạn cũng có thể chỉ định tên định tuyến cho các hành động điều khiển:

Route::get('user/profile', [
'as' => 'profile', 'uses' => 'UserController@showProfile'
]);
- Giờ, bạn có thể sử dụng tên của định tuyến khi tạo URL hoặc chuyển hướng:
$url = route('profile');
$redirect = redirect()->route('profile');
- Phương thức currentRouteName trả về tên của các định tuyến xử lý các yêu
cầu hiện tại:
$name = Route::currentRouteName();
b. Controller
Sau khi route nhận được request thì sẽ chuyển hướng request đến cho controller
và giao cho controller này xử lý. Controller sẽ gọi tới Model để tương tác với cơ sở dữ
liệu (database) và đưa dữ liệu tới View và View sẽ nhận dữ liệu và chuyển thành
những đoạn mã HTML rồi gửi về cho Client.
Tấ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

14


}
 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 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 ý.
*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

15



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.
- 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)
$user = User::find(1);

16


$user->email = '';
$user->save();
- Saving A Model And Relationships (Lưu trữ một mô hình và các mối quan
hệ)
Đô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'; }
}
c. Views (Khung nhìn)
 Basic Usage (Cách sử dụng cơ bản)

17


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>
<body>

Hello, <?php echo $name; ?>


</body>
</html>
Khung nhìn có thể được trả về cho các trình duyệt như sau :
Route::get('/', function(){
return view('greeting', ['name' => 'James']);
});
Như bạn có thể thấy, các đối số đầu tiên được truyền cho các view helper tương
ứng với tên của tập tin view trong thư mục resources/views. Đối số thứ hai được
truyền cho helper là một mảng các dữ liệu cần được lập có sẵn để xem.
Tấ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);

18


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 thừa
kế và phần. Tất cả các Blade templates phải sử dụng phần đuôi mở rộng .blade.php.
- Defining A Blade Layout (Định nghĩa một bố cục của Blade)
<!-- Stored in resources/views/layouts/master.blade.php -->
<html>
<head>
<title>App Name - @yield('title')</title>
</head>
<body>
@section('sidebar')
This is the master sidebar.
@show

<div class="container">
@yield('content')
</div>
</body>
</html>
- Using A Blade Layout (Sử dụng một bố cục của Blade)
@extends('layouts.master')
@section('title', 'Page Title')
@section('sidebar')
@parent

This is appended to the master sidebar.


@stop
@section('content')

This is my body content.



19


@stop
 Other Blade Control Structures (Các cấu trúc điều khiển khác của Blade)
- Echoing Data (In dữ liệu)
Hello, {{ $name }}.
The current UNIX timestamp is {{ time() }}.
- Echoing Data After Checking For Existence (In dữ liệu sau khi kiểm tra sự
tồn tại)
Đôi khi bạn có thể muốn in một biến, nhưng bạn không chắc chắn các biến đã
được thiết lập. Về cơ bản, bạn cần làm :
{{ isset($name) ? $name : 'Default' }}
Tuy nhiên, thay vì viết cả một câu lệnh, Blade cho phép bạn sử dụng các shortcut thuận tiện như sau:
{{ $name or 'Default' }}

- If Statements
@if (count($records) === 1)
I have one record!
@elseif (count($records) > 1)
I have multiple records!
@else
I don't have any records!
@endif

@unless (Auth::check())
You are not signed in.
@endunless
- Loops
@for ($i = 0; $i < 10; $i++)
The current value is {{ $i }}
@endfor
@foreach ($users as $user)

This is user {{ $user->id }}



20


@endforeach
@forelse($users as $user)
<li>{{ $user->name }}</li>
@empty

No users


@endforelse
@while (true)

I'm looping forever.



@endwhile
- Including Sub-Views
@include('view.name')
Bạn cũng có thể truyền một mảng dữ liệu đến các view:
@include('view.name', ['some' => 'data'])
- Overwriting Sections
Để ghi đè lên một phần hoàn toàn, bạn có thể sử dụng câu lệnh overwrite:
@extends('list.item.container')
@section('list.item.content')

This is an item of type {{ $item->type }}


@overwrite

1.2 Tổng quan về ngôn ngữ UML

21


1.2.1 Giới thiệu về UML

Hình 7. Ngôn ngữ UML
UML là ngôn ngữ chuẩn để viết kế hoạch chi tiết phần mềm. Nó phù hợp cho việc
mô hình hóa các hệ thống như hệ thông tin doanh nghiệp, các ứng dụng phân tán trên
nền Web, hệ thông nhúng thời gian thực… Các khung nhìn của ngôn ngữ được quan
sát từ góc độ phát triển và triển khai hệ thống, nó không khó hiểu và dễ sử dụng. UML
là ngôn ngữ mô hình được cả con người và máy sử dụng. Nhớ lại rằng phương pháp là
cách cấu trúc rõ ràng suy nghĩ và hành động của ai đó. Phương pháp cho người sử
dụng biết làm cái gì, làm như thế nào, khi nào làm việc đó và tại sao lại làm như vậy.
Phương pháp chứa mô hình và các mô hình này đươc sử dụng để mô tả cái gì đó. Sự
khác nhau chủ yếu của phương pháp và ngôn ngữ mô hình hóa là ngôn ngữ mô hình
hóa thiếu tiến trình cho biết làm cái gì, làm như thế nào, khi nào làm việc đó và tại sao

lại làm nhu vậy. Như mọi ngôn ngữ mô hình hóa khác, UML có ký pháp (các biểu
tượng sử dụng trong mô hình) và tập các luật sử dụng nó. Các luật bao gồm cú pháp,
ngữ nghĩa và pragmatic (luật hình thành câu có nghĩa).
Cần chú ý rằng ngay cả khi nắm chắc ngôn ngữ UML, không có gì đảm bảo sẽ có mô
hình tốt. Tương tự nhà văn viết tiểu thuyết bằng ngôn ngữ tự nhiên, ngôn ngữ chỉ là
công cụ, còn tiểu thuyết có hay hay không là phục thuộc hoàn toàn vào nhà văn.
Để sử dụng UML có hiệu quả, đòi hỏi phải hiểu được ba vấn đề chính sau [BRJ99]
Các phần tử cơ bản của mô hình UML
Các qui định liên kết các phần tử mô hình

22


Một số cơ chế chung áp dụng cho ngôn ngữ này.
UML là ngôn ngữ và nó chỉ là một phần của tiến trình phát triển phần mềm, độc lập
với tiến trình. Tuy nhiên UML rất phù hợp với các tiến trình hướng trường hợp sử
dụng (Use case – UC), lấy kiến trúc làm trung tâm, tương tác tăng dần.
1.2.2 UML là ngôn ngữ
Ngôn ngữ phải có từ vựng và qui tắc tổ hợp các từ trong từ vựng để giao tiếp. Ngôn
ngức mô hình là ngôn ngữ có từ vựng và qui tắc tập trung vào biểu diễn về mặt vật lý
và khái niệm của hệ thống. UML là ngôn ngữ chuẩn công nghiệp để lập kế hoạch chi
tiết phần mềm. Như đã trình bày trong chương trước, không có mô hình nào là thỏa
mãn cho toàn bộ hệ thống. Thông thường ta phải xây dựng nhiều mô hình cho một hệ
thống, do vậy ngôn ngữ phải cho phép biểu diễn nhiều khung nhìn (views) khác nhau
của một kiến trúc hệ thống trong suốt quá trình phát triển phần mềm. Từ vựng và qui
tắc ngôn ngữ UML cho ta cách thức xây dựng mô hình và đọc mô hình, nhưng không
cho biết mô hình nào cần phải được lập và khi nào lập chúng. Nhiệm vụ đó được
xác định nhờ qui trình phát triển phần mềm. Qui trình phát triển phần mềm sẽ giúp
chúng ta đưa ra quyết định hình thành vật phẩm nào, hoạt động nào và nhân viên nào
sẽ tạo ra, sử dụng và quản lý chúng. Đồng thời chúng được sử dụng như thế nào vào

việc quản lý toàn bộ dự án.
1.2.3 UML là ngôn ngữ để hiển thị
Với nhiều lập trình viên, không có khoảng cách từ ý tưởng đến cài đặt mã trình. Họ
suy nghĩ vấn đề và viết ngay mã trình cho nó. Thực tế là có thể trực tiếp viết mã trình
cho một số việc, trực tiếp mô tả thuật toán và biểu thức bằng văn bản. Tuy nhiên, việc
giao tiếp giữa mô hình khái niệm với những cái khác trong vòng đời phát triển phần
mềm sẽ khó khăn khi mọi người không sử dụng chung một ngôn ngữ cho dự án. Nếu
dự án hay tổ chức nào đó đưa ra ngôn ngữ riêng của họ thì người mới tham gia dự án
sẽ gặp rất nhiều khó khăn. Hơn nữa, một số vấn đề của hệ thống
phần mềm sẽ được hiểu rõ ràng hơn thông qua mô hình thay cho ngôn ngữ lập trình
văn bản. Thí dụ, có thể suy luận ra ý nghĩa phân cấp lớp nhưng không thể hiểu thấu
đáo nếu bắt đầu trực tiếp bằng mã trình của lớp trong phân cấp. Tương tự, ta không thể
hiểu rõ hệ thống trên nền Web nếu không có mô hình. UML giúp xây dựng mô hình để

23


dễ dàng giao tiếp. Một số công việc phù hợp với mô hình hóa băng văn bản, một số
công việc khác lại phù hợp hơn với mô hình hóa bằng đồ họa. UML là ngôn ngữ đồ
họa. Với nhiều hệ thống, mô hình trong ngôn ngữ đồ họa dễ hiểu hơn so với ngôn ngữ
lập trình. Sau mỗi biểu tượng đồ họa của ngôn ngữ UML là ngữ nghĩa. Vậy, khi xây
dựng mô hình trong UML thì người phát triển khác hay các công cụ hỗ trợ mô hình
hóa có thể hiểu mô hình một cách rõ ràng.
1.2.4 UML là ngôn ngữ đặc tả
Đặc tả là mô tả rõ ràng những điểm mấu chốt của vấn đề. UML cho phép mô tả mô
hình chính xác, không nhập nhằng và hoàn thiện. UML hướng tới đặc tả thiết kế, phân
tích và quyết dịnh cái đặt trong quá trình phát triển và triển khai hệ thống phần mềm.
1.2.5 UML là ngôn ngữ để xây dựng
UML là không phải là ngôn ngữ lập trình trực quan, nhưng mô hình của nó có thể
kết nối trực tiếp tới các ngôn ngữ lập trình khác nhau. Có nghĩa rằng có thể ánh xạ mô

hình trong UML tới các ngôn ngữ lập trình khác nhau như Java, C++ hay các bảng
CSDL quan hệ, CSDL hướng đối tượng. Ánh xạ này cho khả năng biến đổi thuận từ
mô hình UML sang ngôn ngữ lập trình. Đồng thời, cho khả năng biến đổi ngược lại từ
cài đặt về mô hình UML; có nghĩa rằng nó cho khả năng làm việc với văn bản hay đồ
họa một cách nhất quán.
1.2.6 UML là ngôn ngữ tài liệu
UML hướng tới làm tài liệu kiến trúc hệ thống và các chi tiết của nó. UML cho khả
năng biểu diễn yêu cầu, thử nghiệm, mô hình hóa các hoạt động lập kế hoạch và quản
lý sản phẩm.
UML cho biết giới hạn của hệ thống và các chức năng chính của nó thông qua UC và
tác nhân.
Trong UML, các UC được mô tả bằng biểu đồ logic.
Biểu diễn cấu trúc tĩnh của hệ thống nhờ biểu đồ lớp.
Mô hình hóa các hành vi đối tượng bằng biểu đồ chuyển trạng thái.
Phản ảnh kiến trúc cài đặt vật lý bằng biểu đồ thành phần và biểu đồ triển khai
Mở rộng các chức năng bằng stereotypes.

24


1.3 PHP & MySQL
1.3.1 Hệ quản trị CSDL MySQL.

Hình 8. Hệ quản trị Mysql.
MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và
được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. Vì MySQL
là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên
nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh. Với tốc độ
và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên
internet. MySQL miễn phí hoàn toàn cho nên bạn có thể tải về MySQL từ trang chủ.

Nó có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ
điều hành dòng Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell
NetWare, SGI Irix, Solaris, SunOS,...
MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan
hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL).
MySQL được sử dụng cho việc bổ trợ PHP, Perl, và nhiều ngôn ngữ khác, nó
làm nơi lưu trữ những thông tin trên các trang web viết bằng PHP hay Perl,...
Một số đặc điểm của MySQL:
- MySQL là một phần mềm quản trị CSDL dạng server-based (gần tương
đương với SQL Server của Microsoft).
- MySQL quản lý dữ liệu thông qua các CSDL, mỗi CSDL có thể có nhiều
bảng quan hệ chứa dữ liệu.

25


×