1. Trang chủ
  2. » Giáo án - Bài giảng

LẬP TRÌNH PHP NÂNG CAO 2 ZEND FRAMEWORK

403 727 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 403
Dung lượng 11,55 MB

Nội dung

Sử d ZF đểSử dụng ZF để… Tạo ứng dụng web theo mô hình chuẩn MVC – Tạo ứng dụng web theo mô hình chuẩn MVC – Url tiêu chuẩn, ngắn gọn – Hỗ trợ phân quyền tới từng Action – Có các thành p

Trang 1

LẬP TRÌNH PHP NÂNG CAO

LẬP TRÌNH PHP NÂNG CAO

ZEND FRAMEWORK 2

Trang 2

Bài 1: Tổng quan Zend

Trang 3

11 Giới thiệ ZF Giới thiệ ZF

11 Giới thiệu ZF Giới thiệu ZF

bằng ngôn ngữ PHP và dựa trên mô hình MVC, giúp

tách các thành phần xử lý ra một cách rõ ràng cho p ý g

website của bạn, giúp cho code được dễ dàng quản lý,

chỉnh sửa và nâng cấp

– Viết huớng đối tuợng

– Cung cấp 1 loạt các ứng dụng API của các nhà cung

cấp hàng đầu như Google, Yahoo, Flick

Trang 4

Sử d ZF để

Sử dụng ZF để…

Tạo ứng dụng web theo mô hình chuẩn MVC

– Tạo ứng dụng web theo mô hình chuẩn MVC

– Url tiêu chuẩn, ngắn gọn

– Hỗ trợ phân quyền tới từng Action

– Có các thành phần thư viên hỗ trợ API của p ợ

các nhà cung cấp như Google, Yahoo, Flick

– Quản lý code dễ dàng, liệt kê và lấy các truy Quản lý code dễ dàng, liệt kê và lấy các truy

vấn history

Dễ dàng phát triển thêm các ứng dụng nhúng

– Dễ dàng phát triển thêm các ứng dụng nhúng,

sử dụng Plugins

Trang 5

2 Lý d h ZF

2 Lý do chọn ZF

– Có rất nhiều thư viện được hỗ trợ sẵn

– Có rất nhiều thư viện được hỗ trợ sẵn

triển ngôn ngữ PHP phát triển (www.zend.com)

triển ngôn ngữ PHP phát triển (www.zend.com)

– được xây dựng trên nền tảng lập trình hướng đối

tượng nên có thể thừa kế, nâng cấp các ứng dụng ợ g , g p g ụ gmột cách dễ dàng

– Những thành viên phát triển Zend Framework là

những chuyên gia nổi tiếng về mã nguồn mở và PHP trên thế giới

Zend Framework rất linh hoạt giúp chúng ta có thể

Trang 6

– Có tài liệu để tham khảo

– Những ứng dụng lớn hiện nay đã dần chuyển quaNhững ứng dụng lớn hiện nay đã dần chuyển qua

dùng Zend Framework làm nền tảng

– Nhu cầu tuyển dụng lập trình viên biết Zend y ụ g ập

Framework lớn– Bảo mật của các ứng dụng rất tốt nên tránh được các g glỗi thường gặp trong các ứng dụng viết bằng PHP

thường

Trang 7

3 Giới thiệ ZF2

Zend Framework 2 là một framwork mã

– Zend Framework 2 là một framwork mã

nguồn mở dùng cho việc phát triển các ứng dụng web sử dụng PHP 5 3 x zend

dụng web sử dụng PHP 5.3.x zend Framework được xây dựng hoàn toàn theo hướng đối tượng OOP và sử dụng hầu hết

hướng đối tượng OOP và sử dụng hầu hết các đặc điểm mới của PHP 5.3 như

namespaces late static binding phương thức

namespaces, late static binding, phương thức lambda và closures.

– Zend Framework 2 phát triển từ Zend

Framework 1, một framework PHP rất thành

Trang 8

mạnh của kiểu viết này Các lớp của ZF được BA

mạnh của kiểu viết này Các lớp của ZF được BA

(Business Analysis) rất chuẩn và khi cần mở rộng ta có

thể dùng thể dùng tính chất thừa kế của OOP Nói

Trang 9

Đặ điể ZF2

Đặc điểm ZF2

đổi trong core nên ta có thể dễ dàng update

 ZF tích hợp được gần như tất cả các thư viện PHP vàZF tích hợp được gần như tất cả các thư viện PHP và

các CMS khác để sử dụng VD: Smarty Pear

-FCKEditor - Drupal …

 Cách viết của ZF rất thân thiện và đơn giản Tích hợp

những mới nhất của lập trình web như: JSON Search

Syndication - Web Services

phát triển dài lâu

Trang 11

4 Z d MVC

4 Zend MVC

 Zend\Mvc là một nhánh thực hiện MVC mới

 Zend\Mvc là một nhánh thực hiện MVC mới

được thiết kế cho ZF2, tập trung vào hiệu suất

instance và workflow trong ứng dụng

Trang 12

4 Z d MVC

4 Zend MVC

Thành phần này được sử dụng mọi nơi từ khởi tạo ban đầu của ứng dụng, thông qua việc gọi trả về của g g g q gresponse và request, để thiết lập và nhận các định tuyến và các định tuyến phù hợp (tương ứng), cũng

như render các view

– Zend\Http – đặc biệt là các đối tượng request và

response được sử dụng trong:

– Zend\Stdlib\DispatchableInterface Tất cả các

“controller” đơn giản là đối tượng dispatchablecontroller đơn giản là đối tượng dispatchable

Trang 13

4 Z d MVC

4 Zend MVC

 Trong MVC layer có một số thành phần con

 Trong MVC layer, có một số thành phần con

được giới thiệu:

Zend\Mvc\Router chứa các lớp liên quan đến định

– Zend\Mvc\Router chứa các lớp liên quan đến định

tuyến một request Nói cách khác, nó nối các request tới các controller tương ứng của nó (hoặc

tới các controller tương ứng của nó (hoặc dispatchable)

Trang 14

4 Z d MVC

4 Zend MVC

– Zend\Mvc\Controller một bộ các lớp “controller” trừu

– Zend\Mvc\Controller, một bộ các lớp controller trừu

tượng với các trách nhiệm cơ bản như hệ thống các event, action gửi đi…g

– Zend\Mvc\Service cung một bộ các yếu tố và định

nghĩa ServiceManager workflow của ứng dụng mặc định

renderer selection, độ phân giải view script, đăng ký helper…; ngoài ra, nó cung cấp các listener liên lạc với MVC workflow cung cấp các tính năng như phânvới MVC workflow, cung cấp các tính năng như phân giải tên template tự động, tạo view model tự động

Trang 15

4 Z d MVC

4 Zend MVC

 Gateway của MVC là đối tượng

 Gateway của MVC là đối tượng

Zend\Mvc\Application (gọi tắt là “Application”)

Nhiệ hí h ủ “A li ti ” là khởi t á

 Nhiệm vụ chính của “Application” là khởi tạo các tài nguyên, định tuyến request, nhận và gửi

controller phù hợp trong các quá trình định

tuyến Sau khi hoàn thành, nó sẽ render view,

hoàn thành các request, trả về và gửi response.

Trang 17

– Tập tin public/index.php: gồm tất cả các yêu cầu

(request) của người dùng đến website nhận một

(request) của người dùng đến website, nhận một mảng các cấu hình đặt tại tập tin

config/application.config.php, khi trả về nó gọi g pp g p p, gọphương thức run() của “Application”, xử lý yêu cầu và gửi lại phản hồi cho người dùng

Zend\ModuleManager để tải các module và cấu hình hợp nhất

hợp nhất

Trang 18

4 Z d MVC

4 Zend MVC

của tổ chức thứ ba mà ứng dụng cần dùng tới Nó có thể bao gồm cả ZF hoặc các thư viện từ các dự án gkhác, không nên sửa đổi trạng thái ban đầu của các

thư viện và module đặt trong thư mục vendor chúng.

cấp các chức năng của ứng dụng

Trang 19

4 Z d MVC

4 Zend MVC

 Cấu trúc module cơ bản:

 Cấu trúc module cơ bản:

chức năng MVC code thư viện view script và các tài

chức năng MVC, code thư viện, view script và các tài nguyên chung như: hình ảnh, CSS, JavaScript Yêu cầu duy nhất – có thể là tùy chọn là một module hoạt y y ọ ộ ạđộng như một namespace PHP và nó chứa lớp

Module.php dưới namespace Lớp này được

Zend\ModuleManager sử dụng để thực hiện một số nhiệm vụ

Trang 20

4 Z d MVC

4 Zend MVC

Trang 21

4 Z d MVC

4 Zend MVC

mục module cũng phải có tên là tên của namespace

Namespace này cũng có thể bao gồm một tiền tố của p y g gnhà cung cấp

• Ví dụ: Module liên quan đến “User” có chức năng được cung

ấ bởi Z d thì ó thể đặt tê là “Z dU ”

cấp bởi Zend thì có thể đặt tên là “ZendUser”.

– Tập tin Module.php sẽ nằm trong thư mục –

namespace nàynamespace này

namespace ZendUser;

class Module

Trang 22

4 Z d MVC

4 Zend MVC

 Có ba tập tin autoload * php không bắt buộc

 Có ba tập tin autoload_ php không bắt buộc,

nhưng khuyến khích nên có, đó là:

autoload classmap php: trả về mảng classmap của

autoload_classmap.php: trả về mảng classmap của

các cặp class name/filename (với các tên tập tin

được thông qua hằng số DIR )

autoload_function.php: trả về một callback PHP mà

có thể thông qua spl autoload register() Thông g q p _ _ g () gthường callback này nên sử dụng ánh xạ được trả về bởi autoload_classmap.php

autoload_register.php: nên đăng ký một PHP

callback (thường được trả về bởi

Trang 23

4 Z d MVC

4 Zend MVC

 Đặc điểm của ba file này là cung cấp các cơ chế

 Đặc điểm của ba file này là cung cấp các cơ chế mặc định phù hợp để tự động tải các lớp trong

module do đó cung cấp cách thức dễ dàng để

module, do đó cung cấp cách thức dễ dàng để

thực thi module mà không cần

Zend\ModuleManager

Trang 24

4 Z d MVC

4 Zend MVC

 Thư mục config : nên chứa các cấu hình module

 Thư mục config : nên chứa các cấu hình module

cụ thể Các file này có đĩnh dạng được hỗ trợ

của Zend\Config Cấu hình chính nên là

của Zend\Config Cấu hình chính nên là

“module.format”, và cấu hình dựa trên PHP nên

là “module config php”

là module.config.php

 Thư mục src : tuân thủ cấu trúc thư mục chứa

source code của module Nên có ít nhất một thư

mục con trong thư mục namespace.

Trang 25

4 Z d MVC

4 Zend MVC

 Thư mục view : chứa các view script có liên

 Thư mục view : chứa các view script có liên

quan tới các controller.

 Thư mục test : chứa các unit test của ứng dụng

Thông thường sử dụng PHPUnit, và chứa các

yếu tố liên quan đến cấu hình của nó (ví dụ như

phpunit.xml, bootstrap.php)

 Thư mục public : chứa những thứ dùng chung

cho ứng dụng, có thể là thư mục images, CSS,

JavaScript…

Trang 26

4 Z d MVC

4 Zend MVC

 Khởi tạo một module trong ứng dụng

 Khởi tạo một module trong ứng dụng

– Để khởi tạo một module trong ứng dụng, ta thông qua Zend\ModuleManager\ModuleManager

Zend\ModuleManager\ModuleManager

– Thành phần này cho phép ta chỉ đến nơi module đó

tồn tại Sau đó nó sẽ xác định vị trí module và khởi

tồn tại Sau đó nó sẽ xác định vị trí module và khởi tạo Các lớp module có thể gắn vào các listener khác nhau trên ModuleManager để cung cấp thông tin,

service, listener… cho ứng dụng

Trang 27

4 Z d MVC

4 Zend MVC

• Cấu hình module manager: đơn giản chỉ cần thông báo cho module manager biết module nào để tải và có khả năng cung

ấ ấ

cấp cấu hình cho module listener.

• Trong tập tin application.config.php, ta cung cấp các thông tin cấu hình:

Trang 28

4 Z d MVC

4 Zend MVC

 Mỗi lớp “Module” có cấu hình mà nó muốn “Application”

 Mỗi lớp Module có cấu hình mà nó muốn Application

biết sẽ được khai báo trong phương thức getConfig()

Phương thức này sẽ trả về một mảng hoặc một đối g y g

tượng Traversable như Zend\Config\Config

namespace ZendUser;

class Module { public function getConfig() {{

return include DIR '/config/module.config.php' }

}

 Ngoài ra còn có nhiều phương thức khác có thể định

nghĩa để cung cấp thông tin autoloader, service cho

}

Trang 29

– Download ứng dụng mẫu (Skeleton

– Download ứng dụng mẫu (Skeleton

Application) của zend framework 2.x tại

Trang 30

55 Cài đặt à ấ hì h ZF2

5

5 Cài đặt và cấu hình ZF2

Giải nén ứng dụng mẫu vào thư mục lưu trữ

– Giải nén ứng dụng mẫu vào thư mục lưu trữ

web

– Cấu trúc cây thư mục ứng dụng mẫu:

Trang 32

5 Cài đặt à ấ hì h ZF2

Tạo thư mục library trong ứng dụng này sau

– Tạo thư mục library trong ứng dụng này sau

đó đem gói zend framework 2.x giải nén tại đây

Trang 33

5 Cài đặt à ấ hì h ZF2

 Chú ý: Nếu muốn sử dụng thư viện một Zend

 Chú ý: Nếu muốn sử dụng thư viện một Zend

cho tất cả các ứng dụng thì cần phải tạo ra một

biến toàn cục như sau:

– Vào Computer => Properties => Advanced =>

E i t V i bl > N > T biế Environment Variables => New => Tạo biến mới => OK

Trang 34

của Zend Framwork 2.x đặt tại:

H:\wamp\www\PHP_NC\zend_app vendor\ZF2

Trang 35

5 Cài đặt à ấ hì h ZF2

 Kết quả sau khi cài đặt và cấu hình thành công:

 Kết quả sau khi cài đặt và cấu hình thành công:

Trang 37

LẬP TRÌNH PHP NÂNG CAO

ZEND FRAMEWORK 2

Trang 38

Bài 2: Zend Module

1 Zend Module

2 Xây dựng module cho ứng dụng

3 Zend Module Manager

4 Zend Module Autoloader

5 Cấu hình cho module

6 Thông báo về việc có module mới

Trang 39

1 Zend Module

Khái niệm:

của website phục vụ cho một chức năng hoàn chỉnh nào

viện code, view script và các tài nguyên dùng chung như hình ảnh, CSS, và JavaScript

Trang 40

1 Zend Module

 Trong ZF2 tất cả đều được tối ưu hóa thành

module Người dùng có thể tự xây dựng module

cho mình hoặc có thể chép module của người

khác về ứng dụng để phục vụ cho công việc của mình.

 Hệ thống module được tạo thành như sau:

– Module Autoloader

– Module Manager

– ModuleManager Listeners

Trang 41

1 Zend Module

Module Autoloader: Đây là thành phần đặc biệt giúp

cho việc xử lý các namespace, mapping, và giữ các instances đó khi cần xử lý

quản lý module, quản lý và merger các cấu hình của các module, điều khiển việc loader

– ModuleManager Listeners – Các Event listener có

thể được gắn với các sự kiện khác nhau của module manager Những listener có thể làm mọi việc từ việc giải quyết và load các module tới việc thực hiện khởi

Trang 42

2 Xây dựng module cho ứng dụng

 Zend framework sử dụng hệ thống module và ta

sẽ tổ chức các nội dung chính của ứng dụng

trong các module

 Trong gói mẫu đã cài đặt có Module Application,

được cung cấp bởi Skeleton, nó cung cấp các

định nghĩa và cấu hình chuẩn mà một module

cần phải có (bootstrapping, error và routing

configuration), đồng thời cung cấp các các điều

khiển cần cho ứng dụng

Trang 43

2 Xây dựng module cho ứng dụng

 Tuy nhiên, ta sẽ chỉ tham khảo module này để

tạo và làm riêng một module và thực hiện các

chức năng cần thiết trong module riêng.

 Ta sẽ đặt tất cả các code cần thiết vào module

của chúng ta, nơi chứa các controller, model,

form và view kèm theo các cấu hình

(configuration)

 Ta cũng sẽ tinh chỉnh module Application khi

được yêu cầu

Trang 44

2 Xây dựng module cho ứng dụng

 Ví dụ: Xây dựng ứng dụng đầu tiên với

Zend Framework có kết nối đến CSDL

– Ứng dụng sẽ xây dựng là một cửa hàng bán

tranh Trang chính sẽ liệt kê các tranh mà cửa hàng có bán Cửa hàng có thể hiển thị, thêm, xóa và cập nhật Tranh khi cần.

Trang 45

2 Xây dựng module cho ứng dụng

 Theo yêu cầu trên, sẽ có 4 trang trong

ứng dụng:

– Danh mục tranh, kèm theo link để người dùng

có thể xem chi tiết; nếu là quản trị thì có thể thêm, xóa, cập nhật

– Thêm mới tranh: form dùng để thêm mới

– Cập nhật tranh: form dùng để cập nhật

– Xóa tranh: form dùng để xóa

Trang 46

2 Xây dựng module cho ứng dụng

 Cần phải lưu trữ dữ liệu vào CSDL đơn

giản như sau:

Bảng Product (để lưu các tranh)

Trang 47

2 Xây dựng module cho ứng dụng

/Model /view

Module Product có các thư

mục con với những loại file khác nhau Các file PHP chứa các lớp trong namespace

Trang 48

3 Zend Module Manager

 Để load và cấu hình một module, ZF2 có

ModuleManager

 Module này có thể xem như là file

Module.php đặt trong thư mục gốc của

module

– Ví dụ: module/Product và có một class được

gọi là Product/Module bên trong nó.

 Các lớp trong cùng một module sẽ có

namespace có tên là tên của module (tên

Trang 49

3 Zend Module Manager

 Thực hiện module (tt)

– Bước 2: Xây dựng Module.php nằm trong

module Product namespace Product;

class Module{

public function getAutoloaderConfig(){

return array( 'Zend\Loader\ClassMapAutoloader' => array(

DIR '/autoload_classmap.php‘, ),

'Zend\Loader\StandardAutoloader' => array( 'namespaces' => array(

NAMESPACE => DIR '/src/' NAMESPACE , ), ),);

}

public function getConfig(){

Trang 50

4 Zend Module Autoloader

tương thích với AutoloaderFactory Cần phải cấu hình để

có thể thêm class map file vào ClassmapAutoloader và

đồng thời thêm namespace của module này vào

StandardAutoloader

một đường dẫn để có thể tìm thấy các file của

namespace này Đó là tuân thủ theo PSR-0 và để các

lớp map trực tiếp đến các files theo các quy tắc của

PSR-0

 Khi triển khai ứng dụng, ta không cần phải load các file

thông qua classmap, vì thế ta chỉ cần cung cấp một

Trang 51

4 Zend Module Autoloader

 Thực hiện module (tt)

– Bước 3: Tạo file autoload_classmap.php có nội

dung sau:

– Với một mảng rỗng như trên thì bất cứ khi nào

autoloader tìm kiếm lớp trong Product namespace,

nó sẽ tự động gọi trở lại StandardAutoloader.

// module/Product/autoload_classmap.php:

return array();

Trang 52

4 Zend Module Autoloader

 Chú ý:

– Ta đang sử dụng Composer, như là một sự

thay thế, ta không triển khai (implement) getAutoloaderConfig() và thay vào đó ta thêm

"Application": "module/Application/src" vào psr-0 key trong composer.json

– Nếu ta chọn cách này, thì ta cần phải chạy

php composer.php update để cập nhật composer autoloading files.

Ngày đăng: 17/04/2014, 20:43

HÌNH ẢNH LIÊN QUAN

Hình được cung cấp trong constructor. Một đối tượng  Platform sẽ được tạo ra dựa vào kiểu của lớp - LẬP TRÌNH PHP NÂNG CAO 2 ZEND FRAMEWORK
nh được cung cấp trong constructor. Một đối tượng Platform sẽ được tạo ra dựa vào kiểu của lớp (Trang 78)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w