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

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

26 927 3

Đ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 26
Dung lượng 236,76 KB

Nội dung

Những năm kinh nghiệm và nhữngnhận xét của người sử dụng, đang cần một Framework PHP dễ dàng hơn, mở rộng hơn vàhiệu quả hơn để đáp ứng nhu cầu ngày càng tăng của các nhà phát triển ứng

Trang 1

TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM

KHOA CÔNG NGHỆ THÔNG TIN

Trang 2

MỤC LỤC

2

Trang 4

LỜI NÓI ĐẦU

Nhiều năm qua đã đánh dấu “sự bùng nổ của các Framework”, và hầu như tất cả mọingười tham gia phát triển ứng dụng web ngày nay là một phần của thế hệ "Framework”.Một Framework PHP dễ dàng hơn, mở rộng hơn và hiệu quả hơn để đáp ứng nhu cầu ngàycàng tăng của các nhà phát triển ứng dụng Web là điều cần thiết

PHP frameworks làm cho sự phát triển của những ứng dụng web viết bằng ngônngữ PHP trở nên trôi chảy hơn, bằng cách cung cấp 1 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 đỡ các bạn thúc đẩy nhanh chóngquá trình phát triển ứng dụng, giúp bạn tiết kiệm được thời gian, tăng sự ổn định cho ứngdụ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 Framework còn giúpnhữ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ácchính xác giữa các Database, mã (PHP) và giao diện (HTML) 1 cách riêng biệt Điều nàycho phép bạn dành nhiều thời gian để tạo ra các ứng dụng web, hơn là phí thời gian để viếtcác đoạn mã lặp lại trong 1 project. Vì vậy Yii Framework đã ra đời để đáp ứng các nhu cầutrên

Cho dù là một developer, phát triển một website nhỏ, đơn giản hay một nhómdeveloper phát triển một website đòi hỏi sự phức tạp cao, thì sử dụng Yii framework 2.0cũng có thể tăng thêm cho nhóm phát triển về các kinh nghiệm bổ sung, sự chuyên nghiệp

và nguồn tài nguyên hiệu quả Tất cả đều miễn phí Chúng ta chỉ tập trung giải quyết tốt cácnhiệm vụ cụ thể được yêu cầu mà không phải quan tâm vào việc viết các đ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ướngdẫn, tạo điều kiện tốt để chúng em hoàn thành tiểu luận của mình

4

Trang 5

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

1.1 Yii là gì

Yii là một PHP framework cho phép phát triển nhanh chóng các ứng dụng Web hiện đại.Tên Yii (phát âm là Yeehoặc [ji:]) có nghĩa là “đơn giản và tiến hóa” ở Trung Quốc

Nó cũng có thể được coi như là một từ viết tắt choYes It Is!

Yii là viết tắt của cụm từ Yes it is là câu trả lời cho 3 câu hỏi:

• Is it fast? Nó có nhanh không

• Is it secured? Nó có bảo mật không và

• 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 năng của sản phẩm khi

nó nhanh hơn bất kì framework PHP nào khác nhờ sử dụng phương pháp lazy loading Yii 2thuần túy là một object-oriented, và nó dựa trên phương thức code DRY (Don’t RepeatYourself), và nó cung cấp cho bạn nền tảng code khá rõ ràng và mang tính logic

Yii 2 được tích hợp với jQuery, bao gồm cả một bộ tính năng của AJAX Nó được xâydựng với cơ chế skin và theme dễ sử dụng, vì vậy đây sẽ là một sự lựa chọn tuyệt vời chobất cứ developer đã có kinh nghiệm về Frontend Nó còn sở hữu một code generator mạnh

mẽ được gọi là Gii cho phép người dùng object-oriented thuận thiện và prototyping nhanhchóng, và cung cấp giao diện web-base cho phép bạn linh động tạo ra code bạn muốn

Trang 6

Yii framework đặc biệt thích hợp cho việc phát triển các ứng dụng quy mô lớn như các cổng thông tin, diễn đàn, các hệ thống quản lý nội dung (CMS), các dự án thương mạiđiện tử, dịch vụ Web RESTful, và như vậy.

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

Vào tháng 12 năm 2008, một PHP Framework mới được cộng đồng biết đến đó là YiiFramework với phiên bản 1.0 Có rất nhiều Framework được phát triển vào năm 2008nhưng Yii được mọi người nhiệt tình công nhận vì Qiang Xue là người đã thành lập ra PradoFramework cũng chính là tác giả của Yii Framework Những năm kinh nghiệm và nhữngnhận xét của người sử dụng, đang cần một Framework PHP dễ dàng hơn, mở rộng hơn vàhiệu quả hơn để đáp ứng nhu cầu ngày càng tăng của các nhà phát triển ứng dụng Web

Vì vậy Yii Framework đã ra đời và đáp ứng các yêu cầu trên cho cộng đồng Web Yii là

từ viết tắt của từ Yes, it is! Hoặc cũng có thể là viết ngắn gọn 3 chữ cái đầu của Easy (dễdàng), Efficient (hiệu suất) và Extensible (khả năng mở rộng) Yii là 1 PHP Framework mãnguồn mở và hoàn toàn miễn phí, có hiệu năng cao, giúp bạn phát triển tốt nhất các ứngdụng Web 2.0 Yii cho phép tái sử dụng tối đa các thành phần của ứng dụng để tăng tốc độviết ứng dụng Yii là một PHP Framework được xây dựng để phát triển các ứng dụng Webquy mô lớn dựa trên nền tảng component (thành phần sử dụng lại) Yii cho phép tái sử dụngtối đa các thành phần của hệ thống để tăng tốc độ viết ứng dụng

Giống như hầu hết các PHP Framework, Yii là một MVC Framework

Yii, nói chung, là một Framework phát triển ứng dụng Web nên có thể dùng để viếtmọi loại ứng dụng Web Yii rất nhẹ và được trang bị giải pháp cache tối ưu nên nó đặc biệthữu dụng cho ứng dụng Web có dung lượng dữ liệu trên đường truyền lớn như 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) rất hữuích vì Yii là một Framework OOP thuần túy

Yii hiện có hai phiên bản chính có sẵn: 1.1 và 2.0 Phiên bản 1.1 là thế hệ cũ và bâygiờ là trong chế độ bảo trì Phiên bản 2.0 được viết lại hoàn toàn của Yii, việc áp dụng cáccông nghệ mới nhất và các giao thức, bao gồm cả Composer, PSR, không gian tên, đặcđiểm, và vân vân Phiên bản 2.0 đại diện cho các thế hệ hiện tại của khuôn khổ này và sẽnhận được những nỗ lực phát triển chính trong vài năm tới

Ở đây chúng ta chủ yếu nói về phiên bản 2.0

Yii 2.0 đòi hỏi PHP 5.4.0 hoặc cao hơn Bạn có thể tìm thấy các yêu cầu chi tiếthơn cho các tính năng cá nhân bằng cách chạy chương trình requirement checker trong mỗibản phát hành Yii

Sử dụng Yii đòi hỏi kiến thức cơ bản về lập trình hướng đối tượng (OOP) như Yii làmột framework OOP Yii2.0 cũng sử dụng các tính năng mới nhất của PHP , chẳng hạn

Trang 7

như namespaces and traits Hiểu được những khái niệm này sẽ giúp bạn dễ dàng hơn vớiYii 2.

Trang 8

CHƯƠNG 2 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 đã được kiểm chứng MVC, hỗ trợ việc phân tách cácphần liên quan với nhau

MCV (Model View Controller) là tên một phương pháp chia nhỏ một ứng dụng thành

ba thành phần để cài đặt, mỗi thành phần đóng một vai trò khác nhau và ảnh hưởng lẫnnhau, đó là models, views, và controllers

Hình 2.1 Mô hình MVC

Models (Tầng dữ liệu): là một đối tượng hoặc một tập hợp các đối tượng biểu diễn

cho phần dữ liệu của chương trình, ví dụ như các dữ liệu được lưu trong database, dữ liệu từmột hệ thống các ứng dụng khác như legacy system, file system, mail system …

Thông thường trong kiến trúc MVC, Model là phần rất quan trọng trong cả dự án, nó

có quan hệ mật thiết với cơ sở dữ liệu

Yii có 2 loại model: form model là lớp (CFormModel) và active record model là lớp(CActiveRecord) Cả hai được mở rộng từ lớp (CModel) CFormModel đại diện cho môhình dữ liệu do người dùng nhập vào ở dạng HTML Sau đó lưu dữ liệu này vào bộ nhớ vàthông qua CActiveRecord dữ liệu được lưu vào CSDL

Trang 9

ActiveRecord (AR) là một mô hình được sử dụng để truy cập cơ sở dữ liệu theo hướngđối tượng Mỗi đối tượng AR trong Yii là một thể hiện của CActiveRecord là kết quả của 1dòng dữ liệu của bảng được tạo trong CSDL.

Views (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ôngthường, các thông tin cần hiển thị được lấy từ thành phần Models

Nó có thể chứa câu lệnh PHP nhưng nó được khuyến cáo không nên thay đổi mô hình

dữ liệu nên vẫn còn tương đối đơn giản

Các câu lệnh PHP trong View thường có các điều kiện và vòng lặp rất đơn giản, vàđược hỗ trợ bởi các phương thức HTML và Widget là lớp có thể tái sử dụng nhiều lần

Controllers (Tầng điều khiển)

Controller là một thể hiện của CController Nó được tạo ra bởi các ứng dụng khi ngườidùng yêu cầu Controller là thiết bị điều khiển chính cho các yêu cầu từ người sử dụng, và

nó sẽ tương tác với cơ sở dữ liệu Một lớp trong Controller có tên bắt đầu là “action” Khitạo mới một ứng dụng Yii thì mặc định trong Controller là có lớp actionIndex,actionContact

Code dưới đây nó định nghĩa 1 SiteController gồm 1 index action và 1 contact action:

class SiteController extends CController

{ public function actionIndex()

Trang 10

chung chung Hiện nay, tại Mỹ, các thuật ngữ trên thường được dùng lẫn, tùy theo tác giả vàhoàn cảnh.

Quy trình hoạt động:

Lược đồ sau đây mô tả một workflow tiêu biểu của 1 ứng dụng Yii khi đang xử lýrequest từ user

Hình 2.2 Quy trình hoạt động

user gửi một request với một

url http://www.example.com/index.php?r=post/show&id=1, Web Server sẽ xử lýrequest đó bằng cách thực thi script bootstrap (index.php)

Trang 11

Script bootstrap sẽ tạo một thể hiện (instance) của Application và chạy nó.

Application lấy thông tin trong request từ một component ứng dụng có tên là request.Ứng dụng sẽ xác định controller và action phù hợp với sự giúp đỡ của một componentứng dụng có tên là urlManager VD: Từ url trên, ta thấy controller cần gọi là post và trongcontroller này action ta cần gọi là show, ứng dụng sẽ tìm đến function actionShow() cótrong class PostController

Ứng dụng sẽ tạo một thể hiện của controller cần gọi để tiếp tục xử lý request từ user.Controller sẽ xác định được request sẽ chuyển đến một phương thức có tên là actionShow(),

nó tạo và thực thi các filter (vi dụ như access control, benchmarking) kết hợp với actionđược gọi Action được thực thi nếu đúng với filter

Action sẽ đọc model Post với ID là 1 từ cơ sở dữ liệu

Action sẽ render ra một view có tên là show với model Post

View đọc và hiển thị các thuộc tính của model Post

View thực thi các widget

View sẽ render kết quả được nhúng trong layout

Action hoàn tất việc render và hiển thị kết quả cho người dùng

Trong tiểu luận này, nhóm chúng em xin đưa ra 2 mô hình MVC tham khảo:

MVC 1: Trong MVC model 1, các trang JSP đóng vai trò Hiển thị (View) và Điều

khiển (Controller) Có thể có nhiều trang JSP khác nhau đóng các vai trò khác nhau

Hình 2.3 Sơ đồ MVC 1

Khi người sử dụng dùng các nút bấm, menu hoặc link … trên trình duyệt Web (Webbrowser) để thực hiện một thao tác, một lệnh (có thể kèm theo các tham số) được gửi tớimột trang JSP tương ứng Trang JSP này sẽ khởi tạo một hoặc nhiều Java Bean (nếu cầnthiết), truyền các lệnh cần thi hành tới Java Bean Chú ý rằng đây là các Java Bean thôngthường, chứ không phải Enterprise Java Bean (EJB) Sau khi Java Bean thực hiện xong việc

Trang 12

truy xuất hoặc cập nhật dữ liệu, trang JSP ban đầu có thể hiển thị dữ liệu lấy từ Bean (JSPban đầu đóng luôn vai trò View), hoặc chọn một trang JSP khác để hiện dữ liệu từ Bean(JSP ban đầu đóng luôn vai trò Controller) Trong một thiết kế tốt, để bảo đảm việc tách rờiphần trình bày và logic của chương trình, trang JSP nhận request chỉ đóng vai trò Điềukhiển (Controller) MVC model 1 có một nhược điểm là phần logic điều khiển được viếttrong trang JSP, như vậy phần chương trình Java phức tạp dùng để điều khiển sẽ bị lẫn vàotrong mã HTML dùng để trình bày Độ phức tạp của chương trình càng cao, thì trang JSPcàng khó bảo trì Hơn nữa trong các dự án phần mềm phức tạp, thì phẩn hiển thị của trangJSP thường được làm bởi người thiết kế Web, giỏi về HTML và đồ họa, còn phần chươngtrình Java được viết bởi lập trình viên chuyên về lập trình Trong các dự án phức tạp, dùngJSP làm phần điều khiển sẽ làm lẫn lộn việc phân chia ranh giới trách nhiệm giữa nhómthiết kế đồ họa và nhóm lập trình, đôi khi dẫn đến việc bảo trì và phát triển trở nên rất khókhăn, gần như không thể làm được.

MVC 2: Trong MVC model 2, một hoặc nhiều servlet (thường là một) đóng vai trò

đ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ị Trong model 2, các logic phức tạp của chương trình được viết hoàn toàn trong cácservlet, là các chương trình Java Phần hiển thị chỉ gồm các trang JSP với một vài mã đơngiản để lấy dữ liệu có sẵn, không có logic phức tạp, vì thế hoàn toàn có thể được tạo ra bằngnhững người thiết kế Web Các yêu cầu của người dùng được gửi từ trình duyệt Web tớiservlet Servlet sẽ khởi tạo Java Bean (nếu cần thiết), ra lệnh thu thập, cập nhật thông tin.Khi Java Bean hoàn thành công việc, servlet sẽ chọn trang JSP thích hợp để hiện thông tintrong Java Bean cho người dùng Đây chính là một cách sử dụng MVC rất hiệu quả trongJava

Tất nhiên là sử dụng MVC model 2 một cách hoàn toàn cứng nhắc, phần Điều khiểnchỉ dùng servlet, phần Hiển thị chỉ dùng JSP sẽ dẫn đến một vài trường hợp kém hiệu quả,nhất là khi có các request từ trình duyệt Web chỉ đòi hỏi việc hiển thị thông tin

Ví dụ: Một trang Web đang hiện các mail trong mail box từ mail thứ 20 đến mail thứ

40 Danh sách các mail này đã có sẵn phần mô hình khi người dùng login và phần điềukhiển ra lệnh cho phần; mô hình lấy danh sách các mail có trong mail box trong POP server

Từ trang Web này, người dùng phát ra một yêu cầu “Next” để xem tiếp danh sách các mail

từ mail thứ 40 đến mail thứ 60

Đây đơn thuần chỉ là đòi hỏi thông tin hiển thị, do đó, nếu gửi qua servlet điều khiển ,servlet sẽ không làm gì cả, mà chỉ 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 sẽ hiệuquả hơn

Trang 13

Hình 2.4 Sơ đồ MVC 2

Ưu điểm MVC:

- 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ứcdatabase

- 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ỉ ảnhhưở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 chotừng lớp sẽ dễ dàng hơn là phân chia theo cách khác Tiện về bug lỗi, kiểm soát code,workflow dễ dàng hơn và nhiều người có thể tham gia phát triển cùng trên 1 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 là performance, do tốn thời gian trung chuyển DTO (Data Transfer Object)giữa các 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 dữ liệu trong Database dưới dạngcác object và tránh cho người dùng sự nhàm chán hoặc là phức tạp khi phải viết những câulệnh SQL trùng lặp

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

Yii tạo các form thu thập dữ liệu trở nên vô cùng dễ dàng và an toàn Với những hàmkiểm tra được đặt sẵn, như số, các phương thức hỗ trợ và widgets làm đơn giản hóa cáccông việc kiểm tra form nhập dữ liệu

Để thực hiện được việc này, hệ thống sử dụng bộ lọc filter Filter là một đoạn mã đãđược cấu hình sẽ được thực hiện trước hoặc sau khi một bộ điều khiển hành động thực thi

Trang 14

Ví dụ, một bộ lọc kiểm soát truy cập có thể được thực hiện để đảm bảo rằng người dùngđược xác thực trước khi thực hiện các hành động được yêu cầu, một bộ lọc hiệu suất có thểđược sử dụng để đo thời gian trong việc thực hiện hành động.

publicfunction filterAccessControl ( $filterChain ) {

// call $filterChain->run() to continue filter and action execution

}

$filterChain là một thể hiện của CFilterChain đại diện cho các danh sách bộ lọc kếthợp với các hành động được yêu cầu Bên trong một phương pháp lọc, chúng ta có thể gọifilterChain-> run () để tiếp tục lọc và thực hiện hành động

Một bộ lọc cũng có thể là một thể hiện của CFilter hoặc lớp con của nó Các mã sauđây định nghĩa một lớp bộ lọc mới:

class PerformanceFilter extends Cfilter {

protectedfunction preFilter ( $filterChain ) {

// biểu thức logic được áp dụng trước khi hành động được thực thi

Return true;

}

protectedfunction postFilter ( $filterChain ) {

// biểu thức logic được áp dụng sau khi hành động được thực thi }

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 (Trang 8)
đ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ị (Trang 10)
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 (Trang 11)
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 (Trang 13)

TỪ KHÓA LIÊN QUAN

w