Tải bản đầy đủ (.pdf) (10 trang)

Kỹ thuật và thủ thuật lập trình hướng đối tượng php t2 khái niệm, kỹ thuật và viết mã

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (889.77 KB, 10 trang )

u.v
n
ed
ui.

Th.S: NGUYỄN MINH - LƯƠNG PHÚC

u.v

n-

ww
w.
lib

.ha

và nhóm tin học thự c dụng

P

u.v

H

ed

P

n-


ww

w.
lib

.ha

ui.

ed

Kỹ thuật và thủ thuật
lập trình hướng đốì tưỢng

.ha

ui.

Khái niệm, kỹ thuật và viết mã
.lib

♦ T rọii bộ 2 tậ p hạn sẽ có cơ hội cọ x á t đ ẻ n ân g cao Icỹ

-w
ww

n ăiig lậ p trm li tliôiig q u a việc tliự c h à n h s ủ dm iíỊ các

tín h năng cao cáp, ch ẳn g h ạ n n h u các vấii íiti cơ sd
d ứ liệii, MySQỊv, SQỊvite và P D O c tia P H P


ed
u.v
n

♦ Với phươiiq p h áp hiíớnQ d ản t à n g ví d ụ b ạ n sẽ Idiỗnp
Iiliửng d ể dàiiíỊ n ắ m b ắ t các Id iái mộiTL c ă n b ảii, nâng
cao liơii ciiiiẹỊ Iiliit c ách SI^ dxuig các côniỊ cxx lậ p trù ili

.ha
ui.

New Edition

ciia P H P đ ễ v iế t các ch tíớ n g t r ì n h P I Ỉ P că n bảii

n ê n làm th e o đ ể n ắm vũnữ, n ộ l dting đtíỢc tr ìn h bày,
b ao g è m sự cài đ ặ t phlui m ề m , c ú p h á p ngôn ngiì, các
c ẩ u trứ c d ữ K ệư...

♦ Mà điểm đặc b iệ t ciia bộ sách chính là ở I>hươiig pliáỊ
hướng d ẫ n r ẩ t đơn g iản và cỢc kỳ d ề tiế p tìiư

ww
w

.lib

.ha
ui.


ed

u.v
n

-w
ww

.lib

^ Mỗi chương cồn có n h iề u b à i tậ p tliụ c liảiứá n ià b ạn

NHÀ XƯẤT BẢN HỒNG ĐỨC


u.v
n

ed

.ha
ui.

.lib

ww
w

ed

u.v
n

.ha
ui.

.lib

-w
ww

.lib

-w
ww
.ha
ed

ui.
n-

u.v

ww

w.
lib

.ha


ui.

ed

n-

u.v

ww
w.
lib

.ha

ui.

ed

u.v
n


u.v
n
ed
ui.
.ha
ww
w.
lib


I v ờ l NÓI ĐẦU

ww

w.
lib

.ha

ui.

ed

u.v

n-

B ộ s á c h " K j' t l i u ậ t v à th ủ t h u ậ t lậ i) tr ìn li liư ớ n g đ ố i
tư ợ n íị P H P ” đ ư ợ c b i ê n so ạn n h ằ m m ụ c đ íc h d à n h clio
n h ữ n g người m ớ i b ắ t đ ầ ii biíớc c h â n vào t h ế giới c ủ a ng ô n
n g ữ lậ p ư ù i h P H P . K h ô n g giống n h ư n h ữ n g s á c h Idiác,
s á c h n à y Id iơ n g đ ị i h ỏ i b ạ n p h ả i h ọ c q u a trư ớ c các v ấ n đ ề
c ă n b ả n v ề lậ p tr ìn li W eb ha}' cơ sỡ d ữ liệ u . M à đ iể m đ ặc
b i ệ t c ủ a b ộ s á c h c h ú ih là ở p h ư ơ n g p h á p h ư ớ n g d ẫ n r ấ t
đ ơ n g iả n v à cự c Icỳ d ể tiế p ứ iu .

ed
u.v
n


-w
ww

.lib

.ha

ui.

ed

u.v

n-

T liự c vậy, với p h ư ơ n g p h á p h ư ớ ng d ẫ n b ằ n g v í d ụ b ạ n
s ẽ Id iô n g n h ữ n g d ễ d à n g n ắ m b ắ t các Id iá i n iệ m c ă n b ả n ,
m à tliồ n g q u a đ ó s ẽ d ầ n trở n ê n q u e n tíiu ộ c với các Id iái
n iệ m n â n g cao h ơ n c ủ n g n h ư c á c h s ử d ụ n g các cồng c ụ lậ p
trìn h củ a P H P đ ể
các ch ư ơ n g t r ì n h P H P c ă n b ả n .
H ơ n n ữ a , với tr ọ n b ộ 2 tậ p b ạ n s ẽ có cơ liộ i cọ x á t đ ể n â n g
cao k ỷ n ă n g lậ p t r ì n h tliô n g q \ia việc tliự c lià iili s ử d ụ jig
các t í n h n ă n g cao cấ p , c h ẳ n g h ạ n n h ư các v ấ n tin cơ sở d ử
liệ u , M ySQ Ị/, S Q L ite v à PD O c ủ a P H P , c á c cô n g n g liệ
XMIv, c á c coolcie, s e s s io n và lie a d e r, và các p liầ n m ở rộng
c ủ a b ô n t h ứ b a.

.lib


.ha
ui.

S á c h có b ố c ụ c rỗ rà n g th e o từ iig ch ư ơ n g và đ ề m ục,
các b tíớ c h iíớ n g d ẫ n c ụ ứ iể và d ễ h ic ii. M ỗi cliiíơ ng cịn có
n h iề u b à i tậ p ứ iự c h à n li m à b ạ n n ê n là m th e o đ ể nắm
^àỈIlg n ộ i d m ig d ư ợ c tr ì n h b ày , b ao cỊồtn sự c à i đ ặ t p h ầ n
n iè in , c ú p h á p n g ô ii n g ữ , các c ấ u ta*úc đ ữ liệ u , các th tíờ n g

-w
ww

I x m li đ i c u I d i i t n , c á c lià n i c à i s ẵ n , v à n liiềa i t á c Aại liữ íi

íc h k h á c .

ww
w

.lib

.ha
ui.

ed

u.v
n


H y vọng s á c h s ẽ là n iộ t tà i liệ u h ọ c tậ p h ữ u íc h ch o b ạ n
đ ọ c tro n g q u á t r ì n h ti-ỏ tlià n h m ộ t c h u y ê n g ia v ề PH P .
T ấ c g iả


u.v
n

ed

.ha
ui.

.lib

ww
w

ed
u.v
n

.ha
ui.

.lib

-w
ww


.lib

-w
ww
.ha
ed

ui.
n-

u.v

ww

w.
lib

.ha

ui.

ed

n-

u.v

ww
w.
lib


.ha

ui.

ed

u.v
n


u.v
n
n-

ww
w.
lib

.ha

ui.

ed

C h ư ơ n g 7: Làm v iệ c vớ i các cơ sỏ dữ liệu và S Q L

ui.

ed


u.v

PHẨN 2

ww
w

.lib

.ha
ui.

ed

u.v
n

-w
ww

.lib

.ha
ui.

ed
u.v
n


-w
ww

.lib

.ha

ui.

ed

u.v

n-

ww

w.
lib

.ha

Làm viêc với dữ
liêu từ những
nguồn khác

CbiửJ9ig 7: Làm v iệ c với cá c cơ s ở
d ữ liệu và SQL
Chươìig &• Làm việc với XML
Chương 9: Làm việc với các Cookie,

Sessiơn, và H ea d er
Chươĩtg 10: X ử lý cá c lỗi
Chiừýiìg 11: Bảo vệ an toàn PHP
Cbươềig 12: M ờ rộng PH P


u.v
n

C h ư ớ n g 7: Làm v iệ c v ớ i các cơ sỏ dữ liêu và SQL

w.
lib

.ha

ui.

ed

u.v

n-

ww
w.
lib

.ha


ui.

ed

8

......................................................................

.ha

ui.

ed

u.v

n-

ww

Làm việc với các cơ sd dữ
liệu vò SQL

Những kỹ năng và k h á i niêm chính

.lib



Thêm, biên tập, xóa và xem các record sứ dụng các

MySQL và SQLiie

CO'

sở ciữ liệit

ed
u.v
n



-w
ww

Ể! Hoc nbiÌỲìg kbái niệm cơ sở d ữ liộn I'à Stnicliired Qiierỵ Langỉiage

M Tniy tìm các record cơ sứ d ũ liệu iĩới PHP

.ha
ui.

• ỉỉiộii lực bóa và htli d ữ liệu ĩihập Cíta ngííời dũng sang mộ! cơ sở dữ
ìiC>ti ì'ới PHP

-w
ww

.lib


» Viết các cbỉỉơtìg trình điền khiền bàng cơ sở đ ữ liệu kbả chìtyển
(portable)

M

ww
w

.lib

.ha
ui.

ed

u.v
n

ột trong những lý do cho sự th ô n g dụng của PH P n h ư là m ột
ngôn ngữ v iết script Web là nó hỗ trợ m ột dãy rộng các hệ
th ố n g dữ liệu quan hệ. Sự hỗ trợ làm cho các n h à p h á t triển
Web dễ dàng tạo các Web site điều k h iển bằng dữ liệu và tạo nguyên
các ứng dụng Web m ột cách n h an h chóng và hiệu quả.


u.v
n
.ha

ui.


ed

u.v

n-

ui.

ww
w.
lib

.ha

PH P hỗ trợ hơn 15 bộ máy cơ sở dữ liệu khác nhau bao gồm Microsoft
SQL Server, IBM DB2, PostgreSQ L, và Oracle. Cho đến P H P 5, sự hỗ trợ
này đă được cung cấp qua các extension cơ sở dữ iiệu riêng, mỗi extension
có chức n ăn g và tín h n ăn g riên g của nó. Tuy nhiên, điều này đã làm cho các
n h à p h á t triể n khó th ay đổi từ m ộ t bộ máy cơ sở dữ liệu này san g m ột bộ
m áy cơ sở đữ liệu khác. PH P 5 đã giải quyết tìn h huống n ày b ằn g việc giới
thiệu m ột API chung cho sự truy cập cơ sở dữ liệu: extension P H P D ata
Objects (PDO), cung cấp m ột giao diện hợp n h ấ t để làm việc với cơ sở dữ
Uệu %'à giúp các n h à p h á t triể n xử lý những cơ sở dữ liệu k hác n h au một
cách n h ấ t quán.

ed

C h ư ơ n g 7 : Làm v iệ c với các c ơ s ỏ dữ liệu và SQL


.lib

.ha

ui.

ed

u.v

n-

ww

w.
lib

T rong P H P 5.3, extension PDO đã được cải tiến th êm nữa với sự hỗ trợ
cho các bộ m áy cơ sở dữ liệu mới và những tối ưu h ó a th ê m nữa cho an n in h
và hiệu suất. Đ ể đ ạ t được k h ả n ăn g tương thích ngược, các extension cơ sở
dữ liệu riên g cũng tiếp tục dược hỗ trợ. Bởi vì b ạn sẽ thường tự n h ậ n thấy
m ình đã chọn giữa m ột extension riêng của m ình (m à có th ể n h an h hcm
hoặc đưa ra nhiều tín h n àn g hơn) hoặc PDO (đưa ra tín h k h ả chuyển và
tín h n h ấ t quán qua các bộ m áy cơ sở dữ liệu), chương n ày đề cập d ến h ai tùy
chọn; chương giới thiệu về PDO và cũng th ảo luận h a i trong sơ’ các extension riên g th ó n g dụng n h ấ t của PHP, extension MySQL Im proved và extension SQLite.

-w
ww

Giới ỉh iệu các cơ sở dữ liệu và SQL


-w
ww

.lib

.ha
ui.

ed
u.v
n

Trong thờ i đại In tern et, th ơ n g tin khơng cịn được trìn h bày tro n g các tủ
đựng hồ sơ nữa. T hay vào đó, nó được lưu trữ dưới dạng các số 1 và số 0
tro n g cấc kiểu dữ liệu điện tử vốn là những "hộp chứa" lưu trữ dữ liệu áp dặt
m ột cấu trúc n h ấ t định về th ô n g tin . Những cơ sở dữ liệu điện tử này khơng
chỉ chiếm ít không gian v ật lý hơn không gian gỗ và kim loại tương ứng m à
chúng còn chứa đầy những cơng cụ để giúp người dùng lọc và truy tìm
n h a n h thông tin sử dụng những tiêu chí khac ưhau. Cụ th ế hầu h ế t các cơ
sở dữ liệu điện tử ngày nay là những cơ sở dữ liệu quan hệ (relational
database) cho p h ép người dùng dịnh nghĩa mối quan hệ giữa các b ản g cơ sở
dữ liệu khác n h au để tìm kiếm và phân tích hiệu quả hơn.

ww
w

.lib

.ha

ui.

ed

u.v
n

H iện có sẵn m ột số lớn các hệ thơng quản lý cơ sở dữ liệu, m ột số thương
m ại và m ột số m iễn phí. Có lẽ b ạn đã nghe đến m ột vài hệ th ô n g này:
Oracle, M icrosoft Access, My SQL, và PostgreSQL. N hững hệ th ô n g cơ sở
dữ liệu này là những ứng dụng p h ần mềm m ạnh, phong phú tín h n ăn g có
k h ả n áng tổ chức và tìm kiếm h àn g triệu record với những tốc độ r ấ t cao;
do đó chúng dược sử dụng rộng rã i với các doanh nghiệp và v ăn phòng


u.v
n

C h ư ơ n g 7: Làm việc với các cờ s ở dữ liệu v à SQL

ed

10

u.v

n-

ww
w.

lib

.ha

ui.

chính phủ, thường cho những mục đích r ấ t quan trọng. Trước khi đi vào chi
tiế t cụ th ể của việc xử lý các record cơ sở dữ liệu với P H P , trước tiê n cần
p h ải hiểu rõ các k h á i niệm cơ sở dữ liệu cơ bản. Nếu b ạ n mới làm quen với
cơ sở dữ liệu này, các p h ần sau dầy cung cấp m ột n ền tả n g v à cũng cho bạn
th ử nghiệm với m ột bài tập thực tiễn tro n g S tructured Query Language
(SQL). Thông tin này sẽ hữu dụng để hiểu nội dung n â n g cao hơn tro n g các
p h ần tiếp theo.

.ha

ui.

ed

Tìm hiểu các cớ sỏ dữ liệu, record, v à khóa chính (Prím a ry Key)

ww

w.
lib

Mọi cơ sở dữ liệu gom m ôt hoặc nhiều b ản g (table). N hữ ng b ản g n ày tạo
cấu trúc dữ liệu th à n h các h àn g và cột, áp đ ặt sự tổ chủc lên dữ liệu. H ình
7.1 m inh h ọ a m ột bảng điển hình.


.lib

.ha

ui.

ed

u.v

n-

Bàng này chứỉt các sõ’ jiệ'j b án h ãn g oho
vỊ !;rj k h ác n h au vt'i
hàny hoặc record (bản ghi) chứa thịng tin cho m ơt vị rri va n ăm kỉiác. Mồi
recorđ được p h ân chia trở th à n h các cột hoặc field (trường) với mỗi trường
chứa m ột đoạn thông tin khác. Cấu trúc dạng b ản g n ày làm cho dễ tìm
kiếm trê n b ản g để tìm ra các record khớp với tiêu chí (criteria) cụ thể: ví
dụ, tấ t cả vị tr í có doanh sơ' lớn hơn $10,000 hoặc doanh s ố cho t ấ t cả vị trí
tro n g n ăm 2008.

ww
w

.lib

.ha
ui.


ed

u.v
n

-w
ww

.lib

.ha
ui.

ed
u.v
n

-w
ww

Các record tro n g b ản g không được sắp xếp theo b ấ t kỳ th ứ tự cụ th ể chúng có th ể được p h ân loại theo thứ tự bảng chữ cái, th eo năm , theo tổng
doanh số, theo vị trí hoặc theo b ấ t kỳ tiêu chí m à b ạ n chọn xác định. Do đó
để làm cho dễ n h ậ n dạng m ột record cụ th ể, cần p h ải th ê m m ộ t thuộc tín h
n h ận d ạn g duy n h ấ t vào mỗi record chẳng h ạn như m ột số serial hoặc m ã
trìn h tự. T rong ví dụ trước, mỗi record được n h ậ n d ạn g b àn g m ột trường
'record ID' duy n h ất; trường này ảược gọi là p rim ary key (khóa chính) clio
bảng.
ỊD
Yưíìr
Lĩcaiìơìi

Sales {ĩ)
2007 ỏdấỉĩiỉi
[
W fi
•y
8574
2007 Chicaco
ì
2007 Washincion
12929
Tị
2007 Ncw York
13636
5
2007 Lo*; Aiìícles
S748
6
2M78
7
2008 Dallas
ì5240
Chicaei)
19433
s
9
2(m VVashinctỉ
3738
10
2008 Ncsv Yoric

(2373
11
2í)08 L«>.sAnkĩcles
12
2008 Ba^ion
4745
Hình 7.1 Một bảng mẫu


Thủ thuật

u.v

n-

u.v
n

ww
w.
lib

M ộ t cách dễ dàng đ ể hiểu những khái niệm này là bằng m ộ t sự tương dồng.
H ăy xem m ộ t c ơ sở dữ liệu như là m ột th ư viện và m ỗi bảng là m ột kệ sách bên
trong th ư viện này. D o đó m ột record là sự dại diện diện tử của m ột cuốn sách
trê n m ộ t kệ sách với tựa dề của cuốn sách là khóa chính của record. Nếu thiếu
tựã đề này, không th ể dễ dàng phân b iệ t m ột cuốn sách này với m ột cuô'n sách
khác. (Cách duy n h ấ t d ể làm điều nàỵ là m ở m ỗi cuô'n sách và kiểm tra nội
dung của nó - m ộ t tiế n trình mâ't thời gian mà khóa ch ín h sẽ giúp bạn tránh


.ha

ui.

ed

11

C h ư ơ n g 7: Làm v iệ c với các cơ sở dữ liệu và SQL

ed

được).

n-

ww

w.
lib

.ha

ui.

M ột khi bạn đã đưa thông tin vào m ột bảng, bạn thường muốn sử dụng
aó để tr ả lời các câu hỏi cụ th ể ■ví dụ, bao nhiêu vỊ trí có doanh số lớn hơn
$5000 tro n g 2008? N hững câu hỏi này được gọi là các query (mẫu truy vấn)
và k ế t quả được tr ả về bởi cơ sở dữ liệu nhằm phản hồi lại những query này
được gọi là các tậ p hợp k ế t quả (result set). Các query được thực th i sử dụng

Structured Query Language.

u.v

Tìm hiểu các m ối quan hệ và khóa ngoại (Poreign Key)

-w
ww

.lib

.ha

ui.

ed

Bạn đã b iết rằ n g m ột cơ sở dữ liệu có th ể chứa nhiều bảng. Trong m ột hệ
thơ ng cơ sở dữ liệu quan hệ, những bảng này có th ể được liên k ết với nhau
bằng m ột hoặc nhiều trường chung được gọi là các khóa ngoại (foreign key).
N hững kh ó a ngoại này làm cho có th ể tạo các mơ’i quan hệ m ột đô'i một
(one-to-one) hoặc m ột đối nhiều (one-to-many) giữa các bảng k hác nhau và
k ế t hợp dữ liệu từ nhiều b ản g để tạo các tậ p hợp k ế t quả to àn diện hơn.

G a it t lD

ed
u.v
n


Để m inh họa, h ãy xem xét hình 7.2 trìn h bày ba b ản g được liên kết.

.ha
ui.

1 H t
2 Crim c
Roni;mcc

AitỉhorỉD
1
2
3

AufỊiorS.Sieplicn K ìiìk
Uamelk* Srccle
lX'nnỉs Lcliano

-w
ww

.lib

4 MK'hael C onnellv
> N ora Rohcrts

ww
w


.lib

.ha
ui.

ed

u.v
n

BnoklD

BookNahie
j T h c S h io iiự
2 ShuUer ĩslíìnd
Piỉỉ SeoiaUưy
4 Tha Overlook
5 Sisters
6 Safc HnrKnír
T a n ik Musk*
8 Blood Bix)thers

G e tu rỉí) AuỉhorlD
i
ì
ì
3
l
1
3


l
4
*J

3
1
3

2
4
5

Hình 7.2 Các mơi quan hệ bảng


u.v
n

C h ư d n g 7: Làm việc v ò i các c d sò dữ liệu và SQL

ed

12

u.v

n-

ww

w.
lib

.ha

ui.

H ình 7.2 m in h h ọ a ba bảng, chứa thông tin về các tá c giả (bảng A), các
th ể loại (bảng G), và các sách (bảng B). Các b ản g G và B k h á đơn giản:
chúng chứa m ột d an h sách các tê n th ể loại (genre) và tá c giả, với mỗi
record được n h ậ n dạng bằng m ột khóa chính duy n h ấ t. Bỗng B hơi phức
tạp hơn: mọi sách tro n g bảng được liên k ế t với m ộ t th ể loại cụ th ể bằng
khóa chính của genre (từ bảng G) và với m ột tác g iả cụ th ể qua khóa chính
của author (từ b ản g A).

ww

w.
lib

.ha

ui.

ed

B ăng cách dị th eo những khóa này đi đến các b ản g nguồn tuơng ứng caa
chúng, b ạn có th ể dễ d àn g n h ậ n dạng tác giả và th ể loại cho m ộ t cuốn sách
cụ thể. Ví du, cú th ể tliây vằng tựa đề "The Shin.ing" được v iết bởi "Stephon
ĩliiig" và thuộc về th ể loại "HoiTOr". Tương tự, b ắ t đầu từ dầu k ia có t}iể

th ấ y rằ n g tác giả "M ichael Connelly" đã viết hai cuôn sách "The Overlook'
và "Trunk Music".

ed
u.v
n

-w
ww

.lib

.ha

ui.

ed

u.v

n-

N hững mố.l quaii hệ n(iư vậy được thấy trong ỉiình 7.2 tạo nen néii tản g
của m ột hệ th ố n g cơ sd dử liệu quan hệ. Liẻn k ế t các bảng sử dụng các khóa
ngoại cũng hiệu quả hơn lựa chọn khác: trong k h i tạ o m ột b ản g mọi thứ
ngoại trừ bồn rửa n h à bếp để chứa tấ t cả thơng tin th o ạ t n h ìn trơ n g tiện
lợi, cập n h ậ t m ột b ản g như vậy luôn là m ột tiến tr ìn h th ủ cóng (và dễ sai
sót) để tìm mọi trường hợp của m ột giá trị cụ th ể và th a y th ế nó b ằn g m ột
giá trị mới. P h â n ch ia th ông tin th à n h các b ản g độc lập và liên k ế t những
bảng n ày b ằn g các k h ó a ngoại sẽ bảo đám rằn g m ộ t m ẫu th ô n g tin cụ th ể

xuất h iện m ột lầ n và chỉ m ột lần trong cơ sở dữ liệu; điều này loại bỏ những
p hần dư thừa, đơn giản hóa các th ay đổi (bằng việc cục bộ h ó a chúng sang
m ột vị trí) và làm cho cơ sơ dữ liệu gọn hơn và dễ q u ản lý hơn.

ww
w

.lib

.ha
ui.

ed

u.v
n

-w
ww

.lib

.ha
ui.

Tiến trìn h hợp lý hóa m ột cơ sd dữ liệu b ằn g việc d in h n g h ĩa và thực thi
các môi quan hệ m ột đôi m ột và m ột đôi nhiều giữa các b ản g th à n h phần
của nó được gọi là sự chuẩn hóa cơ sớ dữ liẹu (d atab ase norm alization) và
nó là m ột tá c vụ ch ín h m à m ột kỹ sư cơ sở dữ liệu p h ả i đối m ậ t k h i tạo m ột
cơ sd dữ liệu mới. T rong tiế n trìn h chuẩn hóa, kỹ sư cơ sở dữ liệu cũng n hận

dạng các mô'i quan hệ chéo và những sự phụ thuộc k hông chính xác giữa các
bảng và tối ưu hóa việc tổ chức dữ liệu sao cho các query SQL thực thi với
hiệu su ất tối đa. Cũng có m ột sơ" dạng chuẩn giúp b ạn te s t p h ạm vi m ột cơ
sở dữ liệu được chuẩn hóa; những dạng chuẩn n ày cung cấp nhữ ng hướng
dẫn hữu dụng để giúp bảo đảm việc th iế t k ế cơ sở dữ liệu vừa n h ấ t quán về
cấu trúc vừa hiệu quả.



×