1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng mã nguồn mở chương 7

42 262 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 42
Dung lượng 656,3 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

- Một khi gặp lỗi các trường hợp không đúng dữ liệu thì đang ở layer nào thì quăng lên trên layer cao hơn nó 1 bậc cho tới GUI thì sẽ quăng ra cho người dùng biết - Các dữ liệu được trun

Trang 1

Mô hình php mvc

Giảng viên : ThS Nguyễn Minh Thành

Email : thanhnm@itc.edu.vn

Chương 7 :

Trang 2

5. Xây dựng website PHP MVC đơn giản

6. Framework MVC cho website PHP

Trang 3

Khái niệm về kiến trúc phần mềm

“Kiến trúc phần mềm của một chương trình hoặc hệ thống tính toán là cấu trúc hoặc các cấu trúc của hệ thống đó, gồm các thành phần của phần mềm, các thuộc tính có thể trông thấy được từ bên ngoài của các thành phần này, và các mối quan hệ giữa chúng.”

Phát triển phần mềm theo một kiến trúc nhất định sẽ giúp cho việc quản lý hệ thống được tốt hơn và tận dụng tài nguyên của hệ thống hiệu quả hơn Đồng thời cũng dễ bảo trì và mở rộng.

Trang 4

Tổng quan về mô hình 3 lớp

Để dễ quản lý các thành phần của hệ thống, cũng như không bị ảnh hưởng bởi các thay đổi, người ta hay nhóm các thành phần có cùng chức

năng lại với nhau và phân chia trách nhiệm cho từng nhóm để công việc không bị chồng chéo và ảnh hưởng lẫn nhau Một trong những mô

hình lập trình như vậy đó là Mô hình 3 lớp (Three Layers).

Trang 5

Các thành phần trong 3-Layer

Mô hình 3 lớp được cấu thành từ: Presentation Layers, Business Logic Layers, và Data Access Layers

Trang 6

Cách vận hành của mô hình

Đối với 3-Layer, yêu cầu được xử lý tuần tự qua các layer như hình.

- Đầu tiên User giao tiếp với Presentation Layers (GUI) để gửi đi thông tin và yêu cầu Tại layer này, các thông tin sẽ được kiểm tra, nếu OK chúng sẽ được chuyển xuống Business Logic Layer (BLL).

- Tại BLL, các thông tin sẽ được nhào nặn, tính toán theo đúng yêu cầu đã gửi, nếu không cần đến Database thì BLL sẽ gửi trả kết quả về GUI, ngược lại nó sẽ đẩy dữ liệu (thông tin đã xử lý) xuống Data Access Layer (DAL).

- DAL sẽ thao tác với Database và trả kết quả về cho BLL, BLL kiểm tra và gửi nó lên GUI để hiển thị cho người dùng.

- Một khi gặp lỗi (các trường hợp không đúng dữ liệu) thì đang ở layer nào thì quăng lên trên layer cao hơn nó 1 bậc cho tới GUI thì sẽ quăng ra cho người dùng biết

- Các dữ liệu được trung chuyển giữa các Layer thông qua một đối tượng gọi là Data Transfer Object (DTO), đơn giản đây chỉ là các Class đại diện cho các đối tượng được lưu trữ trong Database.

Tổ chức mô hình 3-Layer

Có rất nhiều cách đặt tên cho các thành phần của 3 lớp như:

Cách 1: GUI, BUS, DAL

Cách 2: GUI, BLL, DAO, DTO

Cách 3: Presentation, BLL, DAL

Trang 7

Tổng quan mô hình MVC

• MVC là một mô hình trong phát triển phần mềm chuyên giành cho website.

Trang 9

Các Thành Phần Trong MVC

• 2 View (Tầng giao diện): là phần giao diện với người dùng, bao gồm việc hiện dữ liệu ra màn hình, cung cấp các menu, nút bấm, hộp đối thoại, chọn lựa …, để người dùng có thể thêm, xóa sửa, tìm kiếm và làm các thao tác khác đối với dữ liệu trong hệ thống Thông thường, các thông tin cần hiển thị được lấy từ thành phần Models

3 Controller (Tầng điều khiển): là phần điều khiển của ứng dụng, điều hướng các nhiệm vụ (task) đến đúng phương thức (method) có chức năng xử lý nhiệm vụ đó Nó chịu trách nhiệm xử lý các tác động về mặt giao diện, các thao tác đối với models, và cuối cùng là chọn một view thích hợp để hiển thị ra màn hình

Trang 10

Ưu – nhược điểm

• 1 Ưu điểm:

Phát triển phần mềm: Có tính chuyên nghiệp hóa, có thể chia cho nhiều nhóm được đào tạo nhiều

kỹ năng khác nhau, từ thiết kế mỹ thuật cho đến lập trình đến tổ chức database Giúp phát triển ứng dụng nhanh, đơn giản, dễ nâng cấp

Bảo trì: Với các lớp được phân chia theo như đã nói, thì các thành phần của một hệ thống dễ được

thay đổi, nhưng sự thay đổi có thể được cô lập trong từng lớp, hoặc chỉ ảnh hưởng đến lớp ngay gần kề của nó, chứ không phát tán náo loạn trong cả chương trình

Mở rộng: Với các lớp được chia theo ba lớp như đã nói, việc thêm chức năng vào cho từng lớp sẽ

dễ dàng hơn là phân chia theo cách khác

2 Nhược điểm:

Đối với dự án nhỏ việc áp dụng mô hình MC gây cồng kềnh, tốn thời gian trong quá trình phát triể.Tốn thời gian trung chuyển dữ liệu của các tầng

Trang 12

So sánh MVC và 3 lớp

2 Điểm khác:

Trong mô hình 3 lớp, quá trình đi theo chiều dọc, bắt đầu từ PL, sang BL, rồi tới DL, và từ DL, chạy ngược lại BL rồi

quay ra lại PL.

Còn trong mô hình MVC, dữ liệu được nhận bởi View, View sẽ chuyển cho Controller cập nhật vào Model, rồi sau đó

dữ liệu trong Model sẽ được đưa lại cho View mà không thông qua Controller, do vậy luồng xử lý này có hình tam

giác.

Trang 13

Xây dựng website PHP MVC đơn giản

• Xây dựng website bookstore theo mô hình MVC

• B1 : Xây dựng cấu trúc Website như sau

• Thư mục controller chứa các thành phần điều kiển của ứng dụng

• Thư mục model chứa các lớp đối tượng dữ liệu

• Thư mục view chứa các thành phần giao diện

• Index.php là trang chủ của website

Trang 14

Xây dựng website PHP MVC đơn giản

• B2 : Xây dựng các đối tượng dữ liệu

• File Book.php chứa khai báo lớp dữ liệu Book

?>

Trang 15

Xây dựng website PHP MVC đơn giản

• B2 : Xây dựng các đối tượng dữ liệu

• File Database.php chứa các thao tác kết nối CSDL để lấy dữ liệu, ở đây để thao tác đơn, ví dụ chỉ demo có một mảng dữ liệu cho trước.

Trang 16

Xây dựng website PHP MVC đơn giản

• B3 : Xây dựng các đối tượng view

• File booklist.php để xem danh sách book

Trang 17

Xây dựng website PHP MVC đơn giản

• B3 : Xây dựng các đối tượng view

• File viewbook.php để xem một cuốn sách

Trang 18

Xây dựng website PHP MVC đơn giản

• B4 : Xây dựng các đối tượng controller

• File controller.php điều khiển các luồng truy cập,

• Khi Website có nhiều đối tượng dữ liệu, thì các controller sẽ được đặt tên theo từng loại dữ liệu (vd : BookController, AuthorController…)

Trang 19

Xây dựng website PHP MVC đơn giản

• B5 : Xây dựng trang chủ của website

Trang 20

Xây dựng website PHP MVC đơn giản

• B6 : Thực Thi Website

Trang 21

Xây dựng website PHP MVC đơn giản

• B6 : Thực Thi Website

Trang 22

Framework PHP MVC cơ bản

• Framework (FW) là một kiến trúc nền tảng để phát triển phần mềm

• FW cung cấp các chức năng chung, phổ biến và có thể tái sử dụng cho các lập trình viên để phát

triển các giải pháp, các phần mềm khác nhau

• FW giúp các lập trình viên không phải xây dựng hệ thống từ đầu, tiết kiệm thời gian trong quá trình

phát triển phần mềm

• Có nhiều Framework có sẵn như : NET FW, Zend FW, Spring FW,…

• Để sử dụng tốt một Framework cần nhiều thời gian.

• Có thể xây dựng một Framework riêng để đỡ mất thời gian huấn luyện và FW gọn nhẹ.

Trang 23

Framework PHP MVC cơ bản

• Các bước xây dựng Framework MVC đơn giản cho website PHP như sau :

• Bước 1 : Xây dựng cấu trúc thư mục FW

application – code chỉ định cho ứng dụng config – cấu hình Database

db – sao lưu dữ liệu

library – chứa framework

public – Các file hình ảnh cho ứng dụng

scripts –Các script nhúng

tmp – dữ liệu tạm

Trang 24

Framework MVC cho website PHP

• Lưu ý :

• 1 Các bảng trong mySQL sẽ là chữ thường và số nhiều Ví dụ : products, books, customers… Các cột mã sẽ có mẫu : tênbảng_id Ví dụ : Product_id,….

2 Các lớp model sẽ là số ít và in hoa chữ đầu Ví dụ : Product, Book, Customer…

3 Các lớp Controller thêm chữ Controller sau Model (có s) Ví dụ : BooksController, CustomersController…

4 Các giao diện View sẽ được chứa trong thư mục của từng Model, tên thư mục là chữ thường số nhiều, và mỗi view sẽ có tên tùy vào hành động trong Controller Ví dụ : books\view.php, books\viewall.php, books\buy.php…

Trang 25

Framework MVC cho website PHP

• Mô hình hoạt động

Trang 26

Framework MVC cho website PHP

• Bước 2 : Tạo file htaccess trong thư mục gốc để chuyển tất cả các request đến thư mục public

Trang 27

Framework MVC cho website PHP

• Bước 3 : Tạo file htaccess trong thư mục public để chuyển tất cả các request đến file

public/index.php để xử lý theo mẫu : public/index.php?url=PATHNAME (PATHNAME chính là đường dẫn được người dùng gõ)

Trang 28

Framework MVC cho website PHP

• Bước 4 : Tạo file index.php trong thư mục public để định nghĩa các hằng và gọi file bootstrap.php

Trang 29

Framework MVC cho website PHP

• Bước 5 : Tạo file bootstrap.php trong thư mục library File này sẽ gọi các file cấu hình và các file khác

<?php

require_once (ROOT DS 'config' DS 'config.php');

require_once (ROOT DS 'config' DS 'routing.php');

require_once (ROOT DS 'library' DS 'shared.php');

?>

Trang 30

Framework MVC cho website PHP

• Bước 6 : Tạo file config.php và routing.php trong thư mục config

Trang 31

Framework MVC cho website PHP

• Bước 6 : Tạo file config.php và routing.php trong thư mục config

Trang 32

Framework MVC cho website PHP

• Bước 7 : Tạo file shared.php, đây là file chính sẽ phân tích request và gọi controller tương ứng

/** Main Call Function **/

function callHook() {

global $url;

$urlArray = array(); $urlArray = explode("/",$url);

$controller = $urlArray[0]; array_shift($urlArray);

$action = $urlArray[0]; array_shift($urlArray);

Trang 33

Framework MVC cho website PHP

• Bước 7 : trong file shared.php còn chứa hàm autoload từ động tìm kiếm khai báo lớp khi có 1 đối tượng được tạo

function autoload($className) {

if (file_exists(ROOT DS 'library' DS strtolower($className) '.class.php')) {

require_once(ROOT DS 'library' DS strtolower($className) '.class.php');

} else if (file_exists(ROOT DS 'application' DS 'controllers' DS strtolower($className) '.php')) {

require_once(ROOT DS 'application' DS 'controllers' DS strtolower($className) '.php');

} else if (file_exists(ROOT DS 'application' DS 'models' DS strtolower($className) '.php')) {

require_once(ROOT DS 'application' DS 'models' DS strtolower($className) '.php');

} else {

/* Error Generation Code Here */

echo "Can not load class {$className}.";

}

}

Trang 34

Framework MVC cho website PHP

• Bước 8 : tiếp theo ta sẽ xây dựng các đối tượng trong mô hình MVC Các controller sẽ được kế thừa từ một lớp Controller gốc được chứa trong file library/controller.php

function set($name,$value) {$this->_template->set($name,$value); }

function destruct() { $this->_template->render(); }

}

Trang 35

Framework MVC cho website PHP

• Bước 8 : trong Controller có gọi lớp Template là lớp thực hiện việc render nội dung với view tương ứng

class Template {

protected $variables = array();

protected $_controller; //tacgias

protected $_action; //viewall

Trang 36

Framework MVC cho website PHP

• Bước 8 : các lớp Controller theo từng ứng dụng Ví dụ : TacgiasController (trong thư mục application/controllers)

<?php

class TacgiasController extends Controller {

function view($id = null,$name = null) {

$model = new $this->_model();

$this->set('title','Tác giả : '.$name.' - Book Online App');

$this->set('datatable',$model->select($id));

}

function viewall() {

$model = new $this->_model();

$this->set('title','Danh sách tác giả - Book Online App');

$this->set('datatable',$model->selectAll());

}

}

Trang 37

Framework MVC cho website PHP

• Bước 8 : các view giao diện, ví dụ : viewall.php (trong thư mục application/views/tacgias/viewall.php)

<?php $number = 0?>

<?php foreach ($datatable as $tacgia):?>

<a href=" /tacgias/view/<?php echo $tacgia['Tacgia']['MaTG']?>/<?php echo strtolower(str_replace(" ","-",$tacgia['Tacgia'] ['TenTG']))?>">

Trang 38

Framework MVC cho website PHP

• Bước 8 : trong lớp TacgiasController có gọi tạo lớp Tacgia (lớp model) trong thư mục application/models/tacgia.php Các lớp model thực chất là lớp kết nối CSDL để lấy dữ liệu theo từng câu truy vấn

<?php

class Tacgia extends Model {

}

?>

Trang 39

Framework MVC cho website PHP

• Bước 8 : lớp Model cha (trong library)

class Model extends SQLQuery {

Trang 40

Framework MVC cho website PHP

• Bước 8 : lớp SqlQuery gốc (trong library)

Trang 41

Framework MVC cho website PHP

• Bước 9 : Gọi ứng dựng theo mẫu

• http://domain.com/controller/action/query

Trang 42

Hỏi Đáp ?

Ngày đăng: 03/12/2015, 07:53

TỪ KHÓA LIÊN QUAN