tìm hiểu và so sánh yii2 với symfony vs lavarel

26 926 3
tìm hiểu và so sánh yii2 với symfony vs lavarel

Đ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

TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM KHOA CÔNG NGHỆ THÔNG TIN -*** - BÁO CÁO TIỂU LUẬN XÂY DỰNG PHÁT TRIỂN DỰ ÁN CNTT Đề tài: Nghiên cứu tìm hiểu Yii GVHD: TS Nguyễn Trung Đức Sinh viên thực hiện: Đào Văn Quang Trần Ngọc Hải Hải Phòng, tháng 09 năm 2017 MỤC LỤC DANH MỤC BẢNG BIỂU Tên bảng Số trang Hình 2.1 Mô hình MVC Hình 2.2 Quy trình hoạt động Hình 2.3 đồ MVC Hình 2.4 đồ MVC Biểu đồ 11 Best PHP Frameworks 2017 18 Bảng so sánh Yii2 vs Symfony vs Laravel 19 LỜI NÓI ĐẦU Nhiều năm qua đánh dấu “sự bùng nổ Framework”, tất người tham gia phát triển ứng dụng web ngày phần hệ "Framework” Một Framework PHP dễ dàng hơn, mở rộng hiệu để đáp ứng nhu cầu ngày tăng nhà phát triển ứng dụng Web điều cần thiết PHP frameworks làm cho phát triển ứng dụng web viết ngôn ngữ PHP trở nên trôi chảy hơn, cách cung cấp cấu trúc để xây dựng ứng dụng Hay nói cách khác, PHP framework giúp đỡ bạn thúc đẩy nhanh chóng trình phát triển ứng dụng, giúp bạn tiết kiệm thời gian, tăng ổn định cho ứng dụng, giảm thiểu số lần phải viết lại mã cho lập trình viên Ngoài Framework giúp người bắt đầu xây dựng ứng dụng ổn định nhờ việc tương tác xác Database, mã (PHP) giao diện (HTML) cách riêng biệt Điều cho phép bạn dành nhiều thời gian để tạo ứng dụng web, phí thời gian để viết đoạn mã lặp lại project Vì Yii Framework đời để đáp ứng nhu cầu Cho dù developer, phát triển website nhỏ, đơn giản hay nhóm developer phát triển website đòi hỏi phức tạp cao, sử dụng Yii framework 2.0 tăng thêm cho nhóm phát triển kinh nghiệm bổ sung, chuyên nghiệp nguồn tài nguyên hiệu Tất miễn phí Chúng ta tập trung giải tốt nhiệm vụ cụ thể yêu cầu mà quan tâm vào việc viết đoạn code Qua đây, chúng em xin gửi lời cảm ơn sâu sắc đến TS Nguyễn Trung Đức hướng dẫn, tạo điều kiện tốt để chúng em hoàn thành tiểu luận CHƯƠNG TỔNG QUAN VỀ YII 1.1 Yii Yii PHP framework cho phép phát triển nhanh chóng ứng dụng Web đại.Tên Yii (phát âm Yeehoặc [ji:]) có nghĩa “đơn giản tiến hóa” Trung Quốc Nó coi từ viết tắt choYes It Is! • Yii viết tắt cụm từ Yes it is câu trả lời cho câu hỏi: Is it fast? Nó có nhanh không • Is it secured? Nó có bảo mật không • Is it professional? Nó có chuyên nghiệp không Với việc lựa chọn Yii framework, ban góp phần tăng hiệu sản phẩm nhanh framework PHP khác nhờ sử dụng phương pháp lazy loading Yii túy object-oriented, dựa phương thức code DRY (Don’t Repeat Yourself), cung cấp cho bạn tảng code rõ ràng mang tính logic Yii tích hợp với jQuery, bao gồm tính AJAX Nó xây dựng với chế skin theme dễ sử dụng, lựa chọn tuyệt vời cho developer có kinh nghiệm Frontend Nó sở hữu code generator mạnh mẽ gọi Gii cho phép người dùng object-oriented thuận thiện prototyping nhanh chóng, cung cấp giao diện web-base cho phép bạn linh động tạo code bạn muốn Yii framework đặc biệt thích hợp cho việc phát triển ứng dụng quy mô lớn cổng thông tin, diễn đàn, hệ thống quản lý nội dung (CMS), dự án thương mại điện tử, dịch vụ Web RESTful, 1.2 Mục tiêu đời môi trường làm việc Vào tháng 12 năm 2008, PHP Framework cộng đồng biết đến Yii Framework với phiên 1.0 Có nhiều Framework phát triển vào năm 2008 Yii người nhiệt tình công nhận Qiang Xue người thành lập Prado Framework tác giả Yii Framework Những năm kinh nghiệm nhận xét người sử dụng, cần Framework PHP dễ dàng hơn, mở rộng hiệu để đáp ứng nhu cầu ngày tăng nhà phát triển ứng dụng Web Vì Yii Framework đời đáp ứng yêu cầu cho cộng đồng Web Yii từ viết tắt từ Yes, it is! Hoặc viết ngắn gọn chữ đầu Easy (dễ dàng), Efficient (hiệu suất) Extensible (khả mở rộng) Yii PHP Framework mã nguồn mở hoàn toàn miễn phí, có hiệu cao, giúp bạn phát triển tốt ứng dụng Web 2.0 Yii cho phép tái sử dụng tối đa thành phần ứng dụng để tăng tốc độ viết ứng dụng Yii PHP Framework xây dựng để phát triển ứng dụng Web quy mô lớn dựa tảng component (thành phần sử dụng lại) Yii cho phép tái sử dụng tối đa thành phần hệ thống để tăng tốc độ viết ứng dụng Giống hầu hết PHP Framework, Yii MVC Framework Yii, nói chung, Framework phát triển ứng dụng Web nên dùng để viết loại ứng dụng Web Yii nhẹ trang bị giải pháp cache tối ưu nên đặc biệt hữu dụng cho ứng dụng Web có dung lượng liệu đường truyền lớn web portal, forum, CMS, e-commerce, v.v Với developer muốn phát triển Yii, kiến thức lập trình hướng đối tượng (OOP) hữu ích Yii Framework OOP túy Yii có hai phiên có sẵn: 1.1 2.0 Phiên 1.1 hệ cũ chế độ bảo trì Phiên 2.0 viết lại hoàn toàn Yii, việc áp dụng công nghệ giao thức, bao gồm Composer, PSR, không gian tên, đặc điểm, vân vân Phiên 2.0 đại diện cho hệ khuôn khổ nhận nỗ lực phát triển vài năm tới Ở chủ yếu nói phiên 2.0 Yii 2.0 đòi hỏi PHP 5.4.0 cao Bạn tìm thấy yêu cầu chi tiết cho tính cá nhân cách chạy chương trình requirement checker phát hành Yii Sử dụng Yii đòi hỏi kiến thức lập trình hướng đối tượng (OOP) Yii framework OOP Yii2.0 sử dụng tính PHP , chẳng hạn namespaces and traits Hiểu khái niệm giúp bạn dễ dàng với Yii CHƯƠNG TÍNH NĂNG TRÊN YII2 2.1 Mô hình thiết kế Model-View-Controller (MVC) Yii framework sử dụng kiến trúc kiểm chứng MVC, hỗ trợ việc phân tách phần liên quan với MCV (Model View Controller) tên phương pháp chia nhỏ ứng dụng thành ba thành phần để cài đặt, thành phần đóng vai trò khác ảnh hưởng lẫn nhau, models, views, controllers Hình 2.1 Mô hình MVC Models (Tầng liệu): đối tượng tập hợp đối tượng biểu diễn cho phần liệu chương trình, ví dụ liệu lưu database, liệu từ hệ thống ứng dụng khác legacy system, file system, mail system … Thông thường kiến trúc MVC, Model phần quan trọng dự án, có quan hệ mật thiết với sở liệu Yii có loại model: form model lớp (CFormModel) active record model lớp (CActiveRecord) Cả hai mở rộng từ lớp (CModel) CFormModel đại diện cho mô hình liệu người dùng nhập vào dạng HTML Sau lưu liệu vào nhớ thông qua CActiveRecord liệu lưu vào CSDL ActiveRecord (AR) mô hình sử dụng để truy cập sở liệu theo hướng đối tượng Mỗi đối tượng AR Yii thể CActiveRecord kết dòng liệu bảng tạo CSDL Views (Tầng giao diện): phần giao diện với người dùng, bao gồm việc liệu hình, cung cấp menu, nút bấm, hộp đối thoại, chọn lựa …, để người dùng thêm, xóa, sửa, tìm kiếm làm thao tác khác liệu hệ thống Thông thường, thông tin cần hiển thị lấy từ thành phần Models Nó chứa câu lệnh PHP khuyến cáo không nên thay đổi mô hình liệu nên tương đối đơn giản Các câu lệnh PHP View thường có điều kiện vòng lặp đơn giản, hỗ trợ phương thức HTML Widget lớp tái sử dụng nhiều lần Controllers (Tầng điều khiển) Controller thể CController Nó tạo ứng dụng người dùng yêu cầu Controller thiết bị điều khiển cho yêu cầu từ người sử dụng, tương tác với sở liệu Một lớp Controller có tên bắt đầu “action” Khi tạo ứng dụng Yii mặc định Controller có lớp actionIndex, actionContact Code định nghĩa SiteController gồm index action contact action: class SiteController extends CController { public function actionIndex() { // } public function actionContact() { // } } Controller chịu trách nhiệm xử lý tác động mặt giao diện, thao tác models, cuối chọn view thích hợp để hiển thị hình Trong kiến trúc MVC, view có tác dụng hiển thị giao diện, điều khiển dòng nhập xuất người dùng Controllers đảm trách Trong phân tích/ thiết kế hướng đối tượng (OOA/OOD), nói đến MVC, người ta thường dùng thuật ngữ MVC Design Pattern, MVC Framework, MVC Paradigm Có người lại nói, thiết kế chương trình, vẽ diagram cấu trúc chương trình, MVC phương pháp thiết kế (Design Pattern) Khi có công cụ tiện ích lập trình hỗ trợ cho lập trình viên viết chương trình theo phương pháp MVC (ví dụ Jakarta Struts ), công cụ tiện ích lập trình gọi MVC Framework implementation Còn từ Paradigm dùng cho MVC mang tính chất chung chung Hiện nay, Mỹ, thuật ngữ thường dùng lẫn, tùy theo tác giả hoàn cảnh Quy trình hoạt động: Lược đồ sau mô tả workflow tiêu biểu ứng dụng Yii xử lý request từ user Hình 2.2 Quy trình hoạt động user gửi request với url http://www.example.com/index.php?r=post/show&id=1, Web Server xử lý request cách thực thi script bootstrap (index.php) 10 truy xuất cập nhật liệu, trang JSP ban đầu hiển thị liệu lấy từ Bean (JSP ban đầu đóng vai trò View), chọn trang JSP khác để liệu từ Bean (JSP ban đầu đóng vai trò Controller) Trong thiết kế tốt, để bảo đảm việc tách rời phần trình bày logic chương trình, trang JSP nhận request đóng vai trò Điều khiển (Controller) MVC model có nhược điểm phần logic điều khiển viết trang JSP, phần chương trình Java phức tạp dùng để điều khiển bị lẫn vào mã HTML dùng để trình bày Độ phức tạp chương trình cao, trang JSP khó bảo trì Hơn dự án phần mềm phức tạp, phẩn hiển thị trang JSP thường làm người thiết kế Web, giỏi HTML đồ họa, phần chương trình Java viết lập trình viên chuyên lập trình Trong dự án phức tạp, dùng JSP làm phần điều khiển làm lẫn lộn việc phân chia ranh giới trách nhiệm nhóm thiết kế đồ họa nhóm lập trình, dẫn đến việc bảo trì phát triển trở nên khó khăn, gần làm MVC 2: Trong MVC model 2, nhiều servlet (thường một) đóng vai trò điều khiển, Java Bean đóng vai trò Mô hình trang JSP đóng vai trò hiển thị Trong model 2, logic phức tạp chương trình viết hoàn toàn servlet, chương trình Java Phần hiển thị gồm trang JSP với vài mã đơn giản để lấy liệu có sẵn, logic phức tạp, hoàn toàn tạo người thiết kế Web Các yêu cầu người dùng gửi từ trình duyệt Web tới servlet Servlet khởi tạo Java Bean (nếu cần thiết), lệnh thu thập, cập nhật thông tin Khi Java Bean hoàn thành công việc, servlet chọn trang JSP thích hợp để thông tin Java Bean cho người dùng Đây cách sử dụng MVC hiệu Java Tất nhiên sử dụng MVC model cách hoàn toàn cứng nhắc, phần Điều khiển dùng servlet, phần Hiển thị dùng JSP dẫn đến vài trường hợp hiệu quả, có request từ trình duyệt Web đòi hỏi việc hiển thị thông tin Ví dụ: Một trang Web mail mail box từ mail thứ 20 đến mail thứ 40 Danh sách mail có sẵn phần mô hình người dùng login phần điều khiển lệnh cho phần; mô hình lấy danh sách mail có mail box POP server Từ trang Web này, người dùng phát yêu cầu “Next” để xem tiếp danh sách mail từ mail thứ 40 đến mail thứ 60 Đây đơn đòi hỏi thông tin hiển thị, đó, gửi qua servlet điều khiển , servlet không làm cả, mà gửi yêu cầu hiển thị tới trang JSP hiển thị danh sách mail Trong trường hợp này, gửi thẳng yêu cầu hiển thị từ trình duyệt Web tới trang JSP hiệu 12 Hình 2.4 đồ MVC Ưu điểm MVC: - Phát triển phần mềm: Có tính chuyên nghiệp hóa, chia cho nhiều nhóm đào tạo nhiều kỹ khác nhau, từ thiết kế mỹ thuật lập trình đến tổ chức database - Bảo trì: Với lớp phân chia theo nói, thành phần hệ thống dễ thay đổi, thay đổi cô lập lớp, ảnh hưởng đến lớp gần kề nó, không phát tán náo loạn chương trình - Mở rộng: Với lớp chia theo ba lớp nói, việc thêm chức vào cho lớp dễ dàng phân chia theo cách khác Tiện bug lỗi, kiểm soát code, workflow dễ dàng nhiều người tham gia phát triển module Nhược điểm MVC: - Đối với dự án nhỏ: Cồng kềnh, tốn thời gian phát triển - Trade-off performance, tốn thời gian trung chuyển DTO (Data Transfer Object) layers 2.2 Database Access Objects (DAO), Query Builder, Active Record, DB Migration Yii framework cho phép người sử dụng mô hình hóa liệu Database dạng object tránh cho người dùng nhàm chán phức tạp phải viết câu lệnh SQL trùng lặp 2.3 Form nhập kiểm tra (validate) Yii tạo form thu thập liệu trở nên vô dễ dàng an toàn Với hàm kiểm tra đặt sẵn, số, phương thức hỗ trợ widgets làm đơn giản hóa công việc kiểm tra form nhập liệu Để thực việc này, hệ thống sử dụng lọc filter Filter đoạn mã cấu hình thực trước sau điều khiển hành động thực thi 13 Ví dụ, lọc kiểm soát truy cập thực để đảm bảo người dùng xác thực trước thực hành động yêu cầu, lọc hiệu suất sử dụng để đo thời gian việc thực hành động publicfunctionfilterAccessControl($filterChain) { // call $filterChain->run() to continue filter and action execution } $filterChain thể CFilterChain đại diện cho danh sách lọc kết hợp với hành động yêu cầu Bên phương pháp lọc, gọi filterChain-> run () để tiếp tục lọc thực hành động Một lọc thể CFilter lớp Các mã sau định nghĩa lớp lọc mới: class PerformanceFilter extends Cfilter { protectedfunctionpreFilter($filterChain) { // biểu thức logic áp dụng trước hành động thực thi Return true; } protectedfunctionpostFilter($filterChain) { // biểu thức logic áp dụng sau hành động thực thi } } Để áp dụng lọc cho hành động, cần phải ghi đè lên CController:: filters() Các phương thức nên trả lại mảng cấu hình lọc Ví dụ classPostControllerextendsCController { publicfunctionfilters() { return array( 'postOnly + edit, create', 14 array( 'application.filters.PerformanceFilter - edit, create', 'unit'=>'second', ), ); }} Đoạn mã định hai lọc: postOnly PerformanceFilter Bộ lọc PostOnly dựa phương thức (tương ứng với lọc định nghĩa sẵn sàng CController), lọc PerformanceFilter đối tượng bản.Đường dẫn bí danh application.filters PerformanceFilter xác định lọc tập tin lớp protected/filters/PerformanceFilter Sử dụng mảng để cấu hình PerformanceFilter để sử dụng khởi tạo giá trị thuộc tính đối tượng lọc Ở thuộc tính đơn vị PerformanceFilter khởi tạo ''second'' Sử dụng dấu cộng dấu trừ từ toán tử , định mà hành động lọc nên không nên áp dụng Ở phía trên, postOnly nên áp dụng để chỉnh sửa tạo hành động, PerformanceFilter nên áp dụng cho tất hành động EXCEPT chỉnh sửa tạo hành động Nếu không cộng không trừ xuất cấu hình lọc, lọc áp dụng cho tất hành động 2.4 Các widget hỗ trợ Ajax(AJAX-enabled widgets) Được tích hợp với Jquery, Yii đem tới loạt Ajax widget, ví dụ trường tự động hoàn tất nhập liệu, xem dạng cây, lưới liệu, tất cho phép viết giao diện người dùng vô đơn giản có tính tiện lợi cao Widget trường hợp Cwidget lớp Nó thành phần chủ yếu cho mục đích trình bày Widget thường xuyên nhúng view để tạo số giao diện người dùng phức tạp Ví dụ, lịch biểu Widget dùng để hoàn trả lịch biểu giao diện người dùng Những Widget có khả tái sử dụng giao diện người sử dung tốt Để sử dụng Widget ta viết câu lệnh sau: Nội dung giữ lại widge Hoặc 15 Những Widget cấu hình để tuỳ chỉnh hành vi Điều thiết lập giá trị thuộc tính sở gọi hàm CbaseController::beginWidget, muốn xác định mặt nạ sử dụng Có thể làm cách thiết lập mảng giá trị thuộc tính sở sau, nơi mà mảng từ khoá có tên thuộc tính mảng giá trị giá trị thuộc tính sở tương ứng thuộc tính Widget: Để định nghĩa Widget mới, mở rộng Cwidget viết đè lên phương thức init() run() : classMyWidgetextendsCWidget { publicfunctioninit() { // this method is called by CController::beginWidget() } publicfunctionrun() { // this method is called by CController::endWidget() } } Giống điều khiển, Widget có view riêng Mặc đinh, tệp tin hiển thị Widget đặt thư mục thư mục chứa tệp tin lớp Widget Các hiển thị hoàn trả việc gọi hàm Cwidget::render(), tương tự điều khiển Sư khác biệt giao diện áp dụng tới view Widget Xác thực phân quyền Yii tích hợp sẵn lớp hỗ trợ Xác thực Nó đồng thời hỗ trợ cho việc phân quyền theo vai trò - role-based access control (RBAC) Giao diện Yii tích hợp giao diện website giúp người phát triển dễ dàng thay đổi xây dựng website mạnh mẽ 16 Giao diện hình hiển thị đặc biệt thường sử dụng để trang trí view Nó thường chứa phần giao diện người dùng Ví dụ, giao diện chứa phần tiêu đề cuối trang nhúng nội dung hiển thị tiêu đề // $content nơi lưu trữ kết nội dung hiển thị

Ngày đăng: 12/09/2017, 23:08

Hình ảnh liên quan

Hình 2.2. Quy trình hoạt động - tìm hiểu và so sánh yii2 với symfony vs lavarel

Hình 2.2..

Quy trình hoạt động Xem tại trang 8 của tài liệu.
điều khiển, các Java Bean đóng vai trò Mô hình và các trang JSP đóng vai trò hiển thị - tìm hiểu và so sánh yii2 với symfony vs lavarel

i.

ều khiển, các Java Bean đóng vai trò Mô hình và các trang JSP đóng vai trò hiển thị Xem tại trang 10 của tài liệu.
Hình 2.4. Sơ đồ MVC 2 - tìm hiểu và so sánh yii2 với symfony vs lavarel

Hình 2.4..

Sơ đồ MVC 2 Xem tại trang 11 của tài liệu.
Sử dụng một mảng để cấu hình PerformanceFilter để nó được sử dụng khởi tạo các giá trị thuộc tính của các đối tượng bộ lọc - tìm hiểu và so sánh yii2 với symfony vs lavarel

d.

ụng một mảng để cấu hình PerformanceFilter để nó được sử dụng khởi tạo các giá trị thuộc tính của các đối tượng bộ lọc Xem tại trang 13 của tài liệu.

Mục lục

  • DANH MỤC BẢNG BIỂU

  • LỜI NÓI ĐẦU

  • CHƯƠNG 1. TỔNG QUAN VỀ YII 2

    • 1.1. Yii là gì

    • 1.2. Mục tiêu ra đời và môi trường làm việc

    • CHƯƠNG 2. TÍNH NĂNG TRÊN YII2

      • 2.1. Mô hình thiết kế Model-View-Controller (MVC)

      • 2.2. Database Access Objects (DAO), Query Builder, Active Record, DB Migration

      • 2.3. Form nhập và kiểm tra (validate)

      • 2.4. Các widget hỗ trợ Ajax(AJAX-enabled widgets)

      • 2. 5. Xác thực và phân quyền

      • 2. 6. Giao diện

      • 2. 7. Web services

      • 2. 8. Đa ngôn ngữ (I18N) và địa phương hóa (L10N)

      • 2.9. Lớp hỗ trợ cache

      • 2.10. Xử lý lỗi và Log

      • 2.11. Bảo mật

      • 2.12. Kiểm thử

      • 2.13. Tự động tạo code (Automatic code generation)

      • 2.14. Tuân thủ theo XHTML

      • 2.15. Thuần hướng đối tượng

      • 2.16. Dễ dàng sử dụng với code của bên cung cấp thứ 3

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

Tài liệu liên quan