nghiên cứu về mô hình lập trình mvc

30 1.2K 6
nghiên cứu về mô hình lập trình mvc

Đ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

nghiên cứu về mô hình lập trình mvc

Trường đại học Bách Khoa Hà Nội MƠ HÌNH LẬP TRÌNH MVC Mở đầu I.Nội dung 1.Mục đích 2.Định nghĩa 3.Tổng quan mơ hình lập trình MVC 4.Ưu nhược điểm 5.Triển khai MVC ngôn ngữ khác .7 5.1ASP.NET 5.2Java 5.3PHP 11 6.So sánh ngôn ngữ 13 7.Ví dụ minh họa: Framework Yii 14 a.Tổng quan 14 b.Entry script 16 c.Application 17 d.Controller 20 e.Model 26 f.View 27 II.Tài liệu tham khảo 30 1.Đường link 30 2.Tên tài liệu 30 Trường đại học Bách Khoa Hà Nội Mở đầu Trong quãng thời gian 10 trở lại Tốc độ phát triển công nghệ thông tin Việt Nam ngày trở lên mạnh mẽ Cùng với phổ cập máy tính, internet việc ứng dụng cơng nghệ thơng tin lĩnh vực sống trở lên phổ biến, quen thuộc Đặc biệt lĩnh vực tương tác, quản lý, quảng cáo … qua môi trường web Đề đáp ứng lượng nhu cầu lớn vậy, lượng lớn phần mềm, trang web tạo với chức khác Kéo theo tình trạng lập trình viên phải tham gia phát triển lúc nhiều dự án, trì họat động nhiều phần mềm, trang web (Có thể kế thừa sản phẩm người tiền nhiệm) Cũng việc nhóm gồm nhiều người hợp tác để hình thành sản phẩm Tất đặc điểm yêu cầu cần có phương thức phát triển phần mềm nhanh, dễ dàng trì hoạt động, xử lý lỗi đơn giản Phương thức phát triển phần mềm phải tạo điều kiện cho việc nắm bắt code phần mềm.(Dành cho người cần phải phát triển phần mềm người trước hay người lâu ngày làm việc lại với code cũ tạo) Phương thức phải tạo điều kiện cho việc phối hợp làm việc nhóm Sự thay đổi phần mềm cá nhân thực phải ảnh hưởng ít, chí khơng làm ảnh hưởng đến thành phần khác dự án Với ý tưởng trên, mơ hình MVC ngày trở lên phổ biến quy trình phát triển phần mềm nước ta Nhằm tăng thêm kiến thức lập trình web, tiếp cận với môi trường làm việc thực tế sau này, nhóm chúng em xin phép nghiên cứu mơ hình lập trình MVC Cụ thể hơn, chúng em xin phép sâu vào cách triển khai mơ hình MVC ngơn ngữ PHP với framework Yii Trong báo cáo chúng em vào tìm hiểu • Tổng quan mơ hình lập trình MVC Trường đại học Bách Khoa Hà Nội • Ưu nhược điểm việc lập trình theo mơ hình MVC • Các phương thức triển khai MVC ngôn ngữ khác • So sánh ngơn ngữ • Tìm hiểu cụ thể việc triển khai mơ hình MVC thông qua framework Yii Do thời gian nghiên cứu hạn hẹp, kiến thức lập trình web mức sơ khai nên nghiên cứu cịn nhiều thiếu sót Rất mong thầy giáo người châm trước, góp ý để khắc phục thiếu sót cịn lại Cảm ơn thầy giáo, người đọc! Trường đại học Bách Khoa Hà Nội I Nội dung Mục đích Xây dựng nhìn tổng quan mơ hình lập trình MVC Tìm hiểu phương thức triển khai mơ hình MVC ngơn ngữ lập trình khác Tìm hiểu cụ thể hoạt động, cách triển khai MVC PHP với framework Yii Định nghĩa + Wikipedia: MVC hay Model-View-Controller (tiếng Anh) kiến trúc phần mềm kỹ thuật lập trình phần mềm Khi sử cách, mẫu MVC giúp cho người phát triển phần mềm cô lập nguyên tắc nghiệp vụ giao diện người dùng cách rõ ràng Phần mềm phát triển theo mẫu MVC tạo nhiều thuận lợi cho việc bảo trì nguyên tắc nghề nghiệp giao diện liên quan với Trong mơ hình MVC, model tượng trưng cho liệu chương trình phần mềm, view bao gồm thành phần giao diện người dùng, controller quản lý trao đổi liệu qui trình nghiệp vụ Tổng quan mơ hình lập trình MVC MVC khai sinh với framework phát triển Tryve Reenskaug cho tảng Smalltalk vào cuối năm 70 Từ trở đóng vai trị qui tắc quan trọng hầu hết framework giao diện người dùng ý tưởng thiết kế giao diện người dùng Một số thông tin MVC: + Tương tác thành phần Ngoài việc chia ứng dụng thành ba thành phần, thiết kế MVC xác định tương tác chúng - Một Controller gửi lệnh đến view liên kết đến để thay đổi cách hiển thị view Nó gửi lệnh đến model để cập nhật trạng thái model Trường đại học Bách Khoa Hà Nội - - + Một model thông báo cho view controller liên quan với có thay đổi trạng thái Việc thơng báo cho phép view xử lý output thay đổi, controller thay đổi lệnh thực thi Một thực thi MVC thụ động bỏ qua thơng báo này, ứng dụng khơng yêu cầu chúng tảng phần mềm không hỗ trợ Một view thu thập thông tin từ model để tạo giao diện đầu Cách sử dụng MVC ứng dụng web MVC xem nhắm tới để trở thành kiến trúc cho ứng dụng World Wide Web Một vài framework ứng dụng thương mại phi thương mại tạo với việc sử dụng MVC bắt buộc Theo cách tiếp cận này, client gửi request hyperlink form input đến controller sau nhận trang web đầy đủ cập nhật (Hoặc tài liệu khác) từ view; thành phần model tồn hoàn tồn server Khi cơng nghệ client phát triển, frame workd JavaScriptMVC Backbone tạo cho phép thành phần MVC thực thi phần client + MVC làm việc - Nhìn lại sơ đồ phía trên, ta thấy có mũi tên nét liền mũi tên nét đứt Những mũi tên nét đứt hình thành quan điểm người dùng mà nhà thiết kế phần mềm thực Do quan tâm đến mũi tên cịn lại Đây cách đơn giản để mơ tả lại luồng kiện xử lý MVC: • User tương tác với View, cách click vào button, user gửi yêu cầu Trường đại học Bách Khoa Hà Nội • Controller nhận điều hướng chúng đến phương thức xử lý Model • Model nhận thông tin thực thi yêu cầu • Khi Model hoàn tất việc xử lý, View nhận kết từ Model hiển thị lại cho người dùng Ưu nhược điểm + Ưu điểm - Chun nghiệp hóa quy trình phát triển phần mềm: Việc phân tích, thiết kế theo mơ hình MVC chia chương trình thành phần độc lập, giúp phát triển ứng dụng nhanh Dễ dàng triển khai phát triển song song nhiều module - Việc chuyển giao, quản lý mã nguồn dễ dàng Xây dựng lên “bản đồ” dễ hiểu giúp lập trình viên dễ dàng nắm bắt mã nguồn tiếp cận lâu ngày dung tới Trường đại học Bách Khoa Hà Nội - Chủ động tách code thành phần theo hướng OOP, việc chỉnh sửa, hay đổi thành phần không ảnh hưởng đến phần khác + Nhược điểm - Đối với dự án nhỏ, việc áp dụng mô hình MVC gây cồng kềnh, tốn thời gian trình phát triển Tốn thời giant rung chuyển liệu thành phần Triển khai MVC ngôn ngữ khác Đa số ngôn ngữ có framework hỗ trợ việc thiết kế, phát triển phần mềm theo mơ hình MVC Điển hình số ngơn ngữ kể đến như: Java, ASP NET, PHP … Sau đây, tìm hiểu mơ hình MVC số ngơn ngữ 5.1 ASP.NET Một điều mà nhiều người địi hỏi hàng năm ASP NET tích hợp hỗ trợ cho việc phát triển ứng dụng web sử dụng kiến trúc MVC Vào tháng 10/2007 hội thảo Alt.NET Austin, phiên công cộng frameword MVC cho ASP.NET đưa Cũng năm, nhìn tổng quan framework phát hành, hỗ trợ đầu đủ tính ASP.NET MVC hình thái framework chia việc triển khai ứng dụng thành thành phần • Models: tành phần ứng dụng chịu trách nhiệm trì trạng thái Bình thường, trạng thái tồn CSDL • Views: Các thành phần chịu trách nhiệm hiển thị giao diện người dùng ứng dụng Cụ thể, giao diện tạo từ liệu model • Controllers: thành phần chịu trách nhiệm cho việc vận chuyển tương tác người dùng, thao tác model cuối cùng, lựa chọn view để hiển thị Trong ứng dụng MVC, view xem để hiển thị thơng tin Một số lợi ích MVC giúp tách riêng ngữ cảnh model, view, controller ứng dụng Việc trị tách biệt rõ rang khái niệm giúp việc kiểm tra ứng dụng dễ dàng nhiều, tương phản thành phần khác ứn gudngj xác định rõ rang ăn khớp với Các mẫu MVC giúp kích hoạt phát triển điều hướng có kiểm tra(test driven development) đỏ/xanh, bạn triển khai test đơn vị tự động, xác định xác minh yêu cầu cho code mới, việc trước bạn viết code cho bạn Trường đại học Bách Khoa Hà Nội Một vài chi tiết framework MVC ASP.NET • Nó tạo tách biệt rõ ràng khái niệm, khả test TDD theo mặc định Tất liên kết lõi framework MVC giao diện dễ dàng giả lập Bạn test riêng ứng dụng mà không cần chạy Controller với trình xử lý ASP.NET với framework test đơn vị muốn xử dụng (Bao gồm: NUnit, MBUnit, MS Test …) • Nó dễ dàng mở rộng có khả nhứng Mọi thứ framework MVC thiết kế để bạn dễ dàng thay thế, tùy biến Nó hỗ trợ việc sử dụng injection IOC container độc lập tồn (Windsor, Spring.NET, NHibernate …) • Nó chứa thành phần dẫn URL mạnh, giúp bạn xây dựng ứng dụng với URL rõ rang Các URL không cần thiết phải có extension cho chúng, thiết kế để dễ dàng hỗ trợ mẫu đặt tên thông thường REST SEO • Framework MVC hỗ trợ việc sử dụng markup file tịa ASP.NET ASPX, ASCX Master “view template” Tuy nhiên, khơng sử dụng postback model cho việc tương tác trở lại với server Thay đó, bạn route tất tương tác người dùng đến lớp controller, việc đảm bảo tách biệt ngữ cảnh khả test • Framwork MVC ASP.NET hỗ trợ đầy đủ tính ASP.NET như: form/ xác thực window, ủy quyền URL, thành viên/luật, đầu cache liệu, quản lý trạng thái phiên/session, cấu hình hệ thống, kiến trúc … 5.2 Java Tương tự mơ hình MVC ngơn ngữ khác, java, mơ hình thiết kế MVC giúp người dung tách biệt logic nghiệp vụ khỏi giao diện người dung khiến việc thay đổi thành phần khơng ảnh hưởng đến phần cịn lại Ban đầu MVC yêu cầu thêm chút thời gian thiết kế code , có lợi cho việc trì, vận hành sau Mơ hình MVC giới thiệu lần nhà phát triển Smalltalk Xerox PARC (Trung tâm nghiên cứu Palo Alto) Ý tưởng chia ứng dụng thành phần riêng biệt, phần thay mà khơng làm ảnh hưởng đến thành phần khác • Model: Dữ liệu ứng dụng, với logic nghiệp vụ xác định làm để thay đổi truy cập liệu Model chia sẻ cho nhiều đối tượng view controller Trường đại học Bách Khoa Hà Nội • View: Phương thức trình diễn liệu model giới bên Nó dạng GUI, tạo đoạn hội thoại … • Controller: Phương thức tổng hợp input người dung môi trường khác tạo tác động vào model,các thay đổi bình thường vài liệu model a Tương tác thành phần Ban đầu , view controller yêu cầu model cung cấp trạng thái View hiển thị liệu điều người dung, controller kiểm tra liệu để định việc tương tác với người dung diễn Hình Như hình 1, view controller lắng nghe thay đổi model Ngôn ngữ JAVA triển khai cảnh báo sử dngj event Bất kì model thông báo thay đổi, view controller yêu cầu cung cấp trạng thái liệu, sau cập nhật trình diễn tới người dùng Trường đại học Bách Khoa Hà Nội Hình Hình cách tương tác với người dung ứng dụng Nếu người dung định tương tác, controller theo dõi input người dùng như: click chuột, di chuyển chuột, nhấn phím bàn phím Nó định phương thức tương tác, u cầu model cập nhật liệu view để thay đổi cách hiển thị liệu b Delegates - Kết nối view controller Hình Trong java, số framework thiết kế kèm với số delegate, ghép nối view controller, trao đổi view controller tách biệt Các tương tác Trường đại học Bách Khoa Hà Nội Application tạo thực thể controller request để trao đổi request người dùng sau Controller xác định action show tương ứng phương thức actionShow lớp controller Nó sau tạo thực thi lọc liên kết với action Action thực thi cho phép lọc Action đọc model có id=1 sở liệu Action trả lại môt view có tên show với model post View đọc hiển thị thuộc tính model post View thực thi vài widget (thành phần nhúng vào view script để tạo giao diện người dùng phức tạp) 10 View trả lại kết nhúng vào layout (Một view đặc biệt sử dụng để trang trí view, thường phần giao diện người dùng nằm view) 11 Action hoàn tất việc trả lại view hiển thị kết tới người dùng b Entry script Entry script script PHP bootstrap trao đổi yêu cầu người dùng ban đầu Nó script php mà người dùng cuối yêu cầu trực tiếp để thực thi Trong hầu hết trường hợp, entry script ứng dụng Yii chứa code đơn giản sau: // remove the following line when in production mode defined('YII_DEBUG') or define('YII_DEBUG',true); // include Yii bootstrap file require_once('path/to/yii/framework/yii.php'); // create application instance and run $configFile='path/to/config/file.php'; Yii::createWebApplication($configFile)->run(); Script include file bootstrap framework Yii yii.php Sau tạo ứng dụng web với cấu hình xác định chạy chúng Trường đại học Bách Khoa Hà Nội c Application Đối tượng application đóng gói ngữ cảnh thực thi request xử lý bên Nhiệm vụ thu thập vài thơng tin request, gửi đến controller để xử lý sau Nó đáp ứng trung tâm lưu trữ thiết lập cấu hình mức application Vì lý gọi front-controller Đối tượng application hình thành đối tượng entry script, truy cập nơi theo Yii::app() + Cấu hình application Mặc định, đối tượng application thực thể CWebApplication (đối tượng có nhiệm vụ quản lý controller) Để tùy biến chúng, thông thường Yii cung cấp file thiết lập cấu hình để hình thành giá trị đặc tính cài đặt Một cách khác thay đổi để extend CWebApplication Cấu hình mảng cặp giá trị khóa Mỗi khóa cho biết tên đặc tính thực thể application, giá trị tương ứng với giá trị đặc tính.Ví dụ: array( 'name'=>'Yii Framework', 'defaultController'=>'site', ) Yii thường lưu trữ cấu hình script php tách biệt Bên script, Yii trả lại mảng cấu sau: return array( ); Để áp dụng cấu hình, thường sử dụng entry script $app=Yii::createWebApplication($configFile); + Thư mục sở application Thư mục sở Application thư mục root, bên đó, tất script PHP nhạy cảm liệu cư trú Mặc định, thư mục đặt tên protected, nằm thư mục chứa entry script, tùy biến việc thiết lập đặc tính basePath cấu hình application Trường đại học Bách Khoa Hà Nội Chức đối tượng application dễ dàng đươc tùy biến bổ sung sử dụng kiến trúc thành phần linh hoạt Đối tượng quản lý tập thành phần ứng dựng, thành phần thực chức riêng biệt Bằng việc cấu hình đặc tính thành phần thực thể application, chứng ta tùy biến lớp giá trị đặc tính thành phần ứng dụng sử dụng Ví dụ: Chúng ta cấu hình thành phần CMemCache để sử dụng nhiều server memcache cho việc cache sau: array( 'components'=>array( 'cache'=>array( 'class'=>'CMemCache', 'servers'=>array( array('host'=>'server1', 'port'=>11211, 'weight'=>60), array('host'=>'server2', 'port'=>11211, 'weight'=>40), ), ), ), ) Trong , thêm yếu tố cache vào mảng thành phần Các yếu tố cache rõ lớp thành phần CMemCache server Để truy cập thành phần application Sử dụng Yii::app()- >ComponentID Một thành phần application disable việc thiết lập enabled false cấu hình Khi giá trị null trả truy cập vào + Các thành phần application Yii xác định trước tập thành phần application để cung cấp tính phổ biến ứng dụng web Danh sách:  assetManager: CAssetManager - Quản lý việc publish file có giá trị cá nhân Trường đại học Bách Khoa Hà Nội  authManager: CAuthManager - Quản lý điều khiển truy cập dựa luật  cache: CCache - cung cấp chứng cache liệu Chú ý, người dùng phải xác định lớp cụ thể (CMemCache, CDbCache) Nếu không giá trị null trả truy cập vào thành phần  clientScript: CClientScript - quản lý script client  coreMessages: CPhpMessageSource - cung cấp thông điệp dịch sử dụng framework Yii  db: CDbConnection -.cung cấp kết nối sở liệu Chú ý, người dùng phải cấu hình connectionStringProperty để sử dụng thành phần  errorHandler: CErrorHandler – trao đổi ngoại lệ lỗi PHP không bắt  format: CFormatter - format giá trị liệu cho mục đích hiển thị  messages: CPhpMessageSource - cung cấp thông điệp dịch sử dụng ứng dụng PHP  request: CHttpRequest - cung cấp thông tin liên quan đến yêu cầu người dùng  securityManager: CSecurityManager - cung cấp dịch vụ liên quan đến bảo mật băm mã hóa  session: CHttpSession – cung cấp chức liên quan đến session  statePersister: CStatePersister - cung cấp chế cho việc trì trạng thái tồn cục  urlManager: CUrlManager - provides URL parsing and creation functionality.cung cấp chức phân tích tạo URL Trường đại học Bách Khoa Hà Nội  user: CWebUser - vận chuyển thông tin liên quan đến định danh người dùng  themeManager: CThemeManager – quản lý theme + Vòng đời application Khi trao đổi yêu cầu người dùng, application trải qua vòng đời sau 1.Tiền khởi application với CApplication::preinit(); 2.Lập lên lớp tự động tải trao đổi lỗi 3.Đăng ký thành phần application 4.Tải cấu hình application 5.Khỏi tạo application với CApplication::init()  Đăng ký hành vi application  Tải thành phần application tĩnh 6.Dựng lên kiện onBeginRequest 7.Xử lý yêu cầu người dùng  Thu thập thông tin yêu cầu  Tạo controller  Chạy controller 8.Dựng lên kiện onEndRequest d Controller Một controller thực thể CController lớp extend từ CController Nó tạo đối tượng application người dùng yêu cầu Khi controller chạy, thực action request, thường mang lại model cần thiết render view tương ứng Một action, dạng đơn giản nó, phương thức lớp controller tên bắt đầu action Trường đại học Bách Khoa Hà Nội Một controller có action mặc đinh Khi yêu cầu người dùng không xác định rõ action để thực hiện, action mặc định thực Mặc định, action mặc định index Nó thay đổi việc thiết lập biến thực thể chung CController::defaultAction Đoạn code sau xác định controller site, index action contact action class SiteController extends CController { public function actionIndex() { // } public function actionContact() { // } } + Route Các Controller action xác định bưởi ID Một controller ID format path/to/xyz, tương ứng với lớp controller file protected/controllers/path/to/Xyzcontroller.php, nơi mà xyz nên thay tên thực sư Ví dụ post tương ứng với protected/controllers/postController.php Action ID phương thức action đăt tên khơng có tiền tố action Ví dụ: lớp controller chứa phương thức actionEdit, ID action tươn ứng edit Các người dùng yêu cầu controller action cụ thể thuật ngữ route Một route hình thành việc móc nối controller ID action ID, tách biệt dấu “/” Một ứng dụng chứa modules Route cho controller action bên module dạng: ModuleID/controllerID/actionID Chi tiết, xem phần modules + Sự hình thành controller Một thực thể controller tạo CWebApplication điều khiển yêu cầu đến ID controller cho trước, application sử dụng luật sau để xác định lớp controller file lớp liên quan Trường đại học Bách Khoa Hà Nội  Nếu CWebApplication::catchAllRequest xác định, controller tạo dựa property này, controllerID xác định người dùng bỏ qua Việc sử dụng chủ yếu để đặt application mode trì hiển thị trang ý tĩnh  Nếu ID tìm thấy CWebApplication::controllerMap, cấu hình controller tương ứng sử dụng để tạo thực thể controller  Nếu ID nằm dạng ‘path/to/xyz tên lớp controller xem XyzController file lớp tương ứng protected/controllers/path/to/XyzController.php Nếu file lớp không tồn CHttpException dựng lên Khi module sử dụng, q trình có chút khác biệt.Cụ thể, application kiểm tra ID có thay thể cho controller bên module hay khơng,nếu có, thực thể module tạo trước, tiếp đến thực thể controller + Action Như ý từ trước, action xác định phương thức mà tên bắt đầu “action” Một kỹ nâng cao để xác định lớp action yêu cầu controller cung cấp yêu cầu Việc cho phép action tái sử dụng Để xác định action mới: class UpdateAction extends CAction { public function run() { // place the action logic here } } Để controller biết action này, override phương thức actions() lớp controller class PostController extends CController { public function actions() Trường đại học Bách Khoa Hà Nội { return array( 'edit'=>'application.controllers.post.UpdateAction', ); } } Trong sử dụng path ‘application.controllers.post.UpdateAction để xác định file lớp action protected/controlles/post/UpdateAction.php Bằng việc viết action dựa lớp, tổ chứng chương tình mơ hình module Ví dụ: Cấu trúc thư mục sau tổ chức code cho controller protected/ controllers/ PostController.php UserController.php post/ CreateAction.php ReadAction.php UpdateAction.php user/ CreateAction.phối ListAction.php ProfileAction.php UpdateAction.php + Kết nối tham số action Từ phiên 1.1.4 Yii hỗ trợ thêm action tự động két nối thơng số Đó controller xác định thơng số mà giá trị tự động lấy từ $_GET Yii Trường đại học Bách Khoa Hà Nội Để minh họa làm việc nào, tưởng tượng cần viết action create cho PostController action yêu cầu thông số:  Category: số nguyên xác định category ID mà post tạo  Language: xâu xác định ngôn ngữ mà code chưa post Ví dụ: class PostController extends CController { public function actionCreate() { if(isset($_GET['category'])) $category=(int)$_GET['category']; else throw new CHttpException(404,'invalid request'); if(isset($_GET['language'])) $language=$_GET['language']; else $language='en'; // fun code starts here } } Đến 1.1.5 Yii hỗ trợ phát tham số action loại mảng Ví dụ class PostController extends CController { public function actionCreate(array $categories) { // Yii will make sure that $categories is an array } } Bắt đầu từ 1.1.7 việc kết nối tham số tự động làm việc cho action dựa lớp Khi phương thức run() lớp action xác địnhvới số tham số, cung cấp giá trị tham số phù hợp Ví dụ: class UpdateAction extends CAction { public function run($id) Trường đại học Bách Khoa Hà Nội { // $id will be populated with $_GET['id'] } } + Filer Filter đoạn code cấu hình để thực thi trước sau action controller thực thi Ví dụ: lọc điều khiển truy cập thực thi để đảm bảo người dùng xác minh trước thực thi action yêu cầu Một action có nhiều filter Một filter bảo vệ việc thực thi action hay filters khơng thực thi Một filter xác định phương thức lớp controller Tên phương thức phải bắt đầu với “filter” Ví dụ: public function filterAccessControl($filterChain) { // call $filterChain->run() to continue filter and action execution } Trong $filterChain thực thể CFilterChain, đưa danh sách filter liên kết với action yêu cầu Bên phương thức filter, gọi $filterChain()->run() để tiếp tục filter thực thi action Một filter thực thể CFilter lớp Ví dụ: class PerformanceFilter extends CFilter { protected function preFilter($filterChain) { // logic being applied before the action is executed return true; // false if the action should not be executed } protected function postFilter($filterChain) { // logic being applied after the action is executed Trường đại học Bách Khoa Hà Nội } } Để áp dụng filter vào action, cần override phương thức CController::filters() Phương thức nên trả mảng cấu hình filter Ví dụ: class PostController extends CController { public function filters() { return array( 'postOnly + edit, create', array( 'application.filters.PerformanceFilter - edit, create', 'unit'=>'second', ), ); } } Trong có filter: postOnly PerformanceFilter.Filter PostOnly Sử dụng dấu + -, xác định action mà filter nên không nên áp dụng Ở ví dụ trên, filter postOnly áp dụng dụng vào action edit create, filter PerformanceFilter áp dụng cho tất action loại trừ edit create Nếu khơng có dấu – + xuất cấu hình filter, filter áp dụng cho tất action e Model Một model thực thể CModel lớp kế thừa từ CModel Các model sử dụng để lưu trữ liệu luật thích hợp Một model xem đối tượng liệu đơn Nó hàng sở liệu form html với trường input người dùng Mỗi trường đối tượng liệu xem thuộc tính model Thuộc tính có label xác minh lại luật Yii triển khai loại model: form model active Record Chúng kế thừa từ lớp sở, CModel Trường đại học Bách Khoa Hà Nội Một form model thực thể CFormModel Các form model sử dụng để lưu trữ liệu từ input người dùng Các liệu thường thư thập, sử dụng sau hủy bỏ Một Active Record(AR) mẫu thiết kế (design pattern) sử dụng để trừu trượng hóa truy cập sở liệu mơ hình hướng đối tượng Mỗi model AR thực thể CActiveRecord lớp lớp đó, xem hàng đơn bảng sở liệu Các trường hàng xem properties đối tượng AR f View Một view script php chứa đa số yếu tố giao diện người dùng Nó chứa phát biểu php, khuyến cáo không nên thay đổi model liệu yêu cầu tương đối đơn giản Một view có tên sử dụng để xác định file script render Tên view tên với script Để render view, gọi CController::render() với tên view Phương thức tìn kiếm file view phù hợp thư mục protected/views/ControllerID Bên view script, truy cập thực thể controller sử dụng $this Chúng ta pull property controller cách gọi $this->propertyName view.Ví dụ: $this->render('edit', array( 'var1'=>$value1, 'var2'=>$value2, )); + Layout Một dạng view đặc biệt, sử dụng để trạng trí view Nó thường chứa phần giao diện người dùng nằm view.Ví dụ: Layout chứa header footer, view đươc nhúng : header here footer here Layout áp dụng hoàn toàn gọi hàm render() Mặc định, view script protected/views/layouts/main.php sử dụng layout Trường đại học Bách Khoa Hà Nội Có thể tùy biến cách thay đổi CWebApplication::layout CController::layout Để render view khơng cần áp dụng layout nào, gọi renderPartial() + Widget Một widget mộ thực thể CWidget lớp cịn CWidget Đó thành phần mục đích trình diễn (presentational) Một widget thường nhúng view script để tạo rac giao diện người dùng phức tạp Widget giúp việc tái sử dụng code giao diện người dùng dễ dàng Để sử dụng widget, thực view script sau: body content that may be captured by the widget Hoặc: Widget cấu hình tùy biến theo mong muốn Việc thực cách thiết lập giá property ban đầu gọi CBaseController::beginWidget CBaseController::widget Để xác định widget mới, kế thừa CWidget override phương thức init() run() Giống controller, widget có view Mặc định, file view widget năm thư mục views, thư mục thư mục chứa file lớp widget Các view render cách gọi CWidget::render() tương tự trọng controller Sự khác biệt không layout áp dụng vào view widget.Cũng $this view thay cho thực thể widget thay controller + View hệ thống SystemView thay cho view sử dụng Yii dể hiển thị lỗi thông tin log Trường đại học Bách Khoa Hà Nội Tên các view hệ thống theo số luật Các tên kiểu errorXXX thay cho view để hiển thị CHttpException với mã lỗi xxx Yii cung cấp tập view frameword/views Chúng customize việc tạo file view tên protected/views/system Trường đại học Bách Khoa Hà Nội II Tài liệu tham khảo Đường link http://www.javadude.com/articles/vaddmvc1/mvc1.htm http://vi.wikipedia.org/wiki/MVC http://www.yiiframework.com/doc/guide/ http://martinfowler.com/eaaDev/uiArchs.html http://www.blogit.info/2012/07/tim-hieu-mo-hinh-mvc-la-gi.html http://www.oracle.com/technetwork/articles/javase/index-142890.html http://www.tonymarston.net/php-mysql/model-view-controller.html#principles Tên tài liệu ... nghiên cứu mơ hình lập trình MVC Cụ thể hơn, chúng em xin phép sâu vào cách triển khai mơ hình MVC ngơn ngữ PHP với framework Yii Trong báo cáo chúng em vào tìm hiểu • Tổng quan mơ hình lập trình MVC. .. quan mơ hình lập trình MVC Tìm hiểu phương thức triển khai mơ hình MVC ngơn ngữ lập trình khác Tìm hiểu cụ thể hoạt động, cách triển khai MVC PHP với framework Yii Định nghĩa + Wikipedia: MVC hay... việc lập trình theo mơ hình MVC • Các phương thức triển khai MVC ngơn ngữ khác • So sánh ngơn ngữ • Tìm hiểu cụ thể việc triển khai mơ hình MVC thông qua framework Yii Do thời gian nghiên cứu

Ngày đăng: 17/07/2015, 12:32

Từ khóa liên quan

Mục lục

  • Mở đầu

  • I. Nội dung

    • 1. Mục đích.

    • 2. Định nghĩa.

    • 3. Tổng quan về mô hình lập trình MVC

    • 4. Ưu nhược điểm.

    • 5. Triển khai MVC trên các ngôn ngữ khác nhau.

      • 5.1 ASP.NET

      • 5.2 Java.

      • 5.3 PHP.

      • 6. So sánh các ngôn ngữ

      • 7. Ví dụ minh họa: Framework Yii

        • a. Tổng quan.

        • b. Entry script.

        • c. Application

        • d. Controller.

        • e. Model.

        • f. View.

        • II. Tài liệu tham khảo

          • 1. Đường link

          • 2. Tên tài liệu

Tài liệu cùng người dùng

Tài liệu liên quan