You are on page 1of 21

C bn v lp trnh hng i tng trong PHP

Cp nht vo 15:51, ngy 15/02/2014, 799 lt xem, 0 bnh lun


Qua bi hng dn ny, cc bn s tm hiu c cc khi nim ca lp trnh hng i tng trong PHP, cch
khi to i tng thng qua mt s v du on gin.
Lp trnh hng i tng l g?
Lp trnh hng i tng c ghi tt l OOP (object-oriented programming). L mt phuong hng lp trnh tch
bit so vi kiu c in. S dung i tng lp trnh nn nhng chui tuong tc. OOP gip cho cc lp trnh vin
c th tit kim nhiu thi gian hon so vi cch vit c in.
Cc bn c th hiu lp trnh hng i tng l cch vit m lnh c cc hnh ng lin quan n nhau c
nhm thnh cc lp (class) gip tng kh nng rt gon m m vn gi c tnh hiu qu cho chng.
Lp trnh hng i tng khng qu ng s nh mt s bn ngh. Chnh v n c c php mi m v phong cch
lp trnh khc bit so vi lp trnh hng th tuc nn cc bn thy n phc tp. Nu bn hiu r v bn cht ca lp
trnh hng i tng bn s thy lp trnh hng i tng l mt phong php lp trnh on gin m li ti u.
S kh! nh"# gi$" lp trnh hng i tng v lp trnh hng !%# tr&!
- Lp trnh hng !%# tr&!: Chia mt chong trnh thnh cc modul gii quyt tng thnh phn ca bi ton
(hay cn goi l chia trj). Tch mt vn kh thnh cc vn nh hon d gii quyt. V th phi vit cc hm
gii quyt tng modul mt, ri cho php goi ln nhau t muc ch lp trnh.
- Lp trnh hng i tng: S dung cc i tng trong chong trnh, tc l cc lp (class), khi chong
trnh s s dung class nh mt kiu d liu nhng do ngi s dung to nn. Lp trnh hng i tng hin ang
c u chung do c th s dung li nhng m vit bng vic k tha cc thuc tnh sn c nh vy vic lp
trnh t hiu qu cao, tit kim thi gian.
S kh! nh"# gi$" lp '!l"(() v i tng'*b+,!t)
C nhiu bn cn c su nhm ln gia lp v i tng. Khng chi l nhng bn mi lp trnh m c nhiu lp trnh
vin c nhiu nm kinh nghim vn cha phn bit ng v lp v i tng.
-. ph/n bi0t gi$" !l"(( v ob+,!t !! b1n h23 l%3 v4 56 nh b1n "ng thi !7ng 89t !:3 !:#;
- Cl"((: Tong tu nh mt bn kt hoch chi tit cho cy cu. Bn s cn phi xc jnh hnh dng ca cy cu, mi
quan h gia cc thnh phn ca n(chn cu, thn cu, ko ct,.), cc k hoch cho n.
- *b+,!t: S l mt cy cu c thi cng bi bn k hoch trn. Bn trong Object s cha rt nhiu d liu nh
cc vt liu to ra n(si, , nhua ng,.). V tt nhin, bn s c th xy dung c rt nhiu cy cu t
mt bn k hoch nh trn.
Cc Cl!! x l cu trc d liu v cc hnh ng, ng thi s dung cc thng tin xy dung cc "b#e$t. C
th c nhiu hon mt "b#e$t c xy dung t cng mt Cl!! ti cng mt thi im, mi "b#e$t ny u l mt c
th c lp v khng phu thuc ln nhau.
C%# tr&! !<" 89t Cl"((
Cu trc ca mt class bao gm: thu%$ t&nh v ph'ng th($.
Hiu mt cch on gin ging nh lp trnh hng cu trc:
=r4!h 5>n
- Thuc tnh: Cc bin
- Phong thc: Cc hm
C php:
1
2
3
Class TnClass{
Properties and Method
}
- Cc bin trong Cl!! c goi l Properties (Thuc tnh)
- Cc hm trong Cl!! c goi l Method (Phong thc)
Sau khi to xong Cl!!, bn c th khi to i tng theo c php sau:
C php:
1
2
3
<?php
$object=new TnClass();
?
-?nh ngh@" th#9! t4nh !<" Cl"((
Thuc tnh hot ng nh mt bin thng thng, chi c mt iu l thuc tnh lin kt vi object (i tng). V vy
truy cp v s dung c ta phi thng qua object.
C php:
1
2
3
4
5
<?php
class TnClass{
!ph"# $i% tn bi&n = 'i( tr);
}
?
- Ph18 vi: Phm vi c php s dung thuc tnh. Bao gm: publ)$, p*)vte, p*ote$te+, !tt)$,... Phm vi c th c,
c th khng. Nu khng jnh ngha phm vi th phm vi mc jnh l publ)$
- =An biBn: Tun theo quy tc t tn bin trong PHP
- Ci tr?: Gi trj ca thuc tnh.
L# D: Thuc tnh khng nht thit phi gn gi trj ban u.
V d: Bn to 1 file c tn vidu.php ri vit ni dung sau y:
1
2
3
4
5
6
7
<?php
class *iaoTrinhC+TT{
p,blic $a=-.elco#e to website *iaotrinhcntt/Co#-;
}
$'t=new *iaoTrinhC+TT();
echo $'t0a;
?
Cc bn chy http://lo$lho!t/v)+u,php trnh duyt s hin thj kt qu sau:
=r4!h 5>n
Welcome to website Giaotrinhcntt.Com
-?nh ngh@" phng thE! !<" !l"((
Tip theo v du trn, cc bn sa code nh sau:
1
2
3
4
5
6
<?php
class *iaoTrinhC+TT{
p,blic $a=-.elco#e to website *iaotrinhcntt/Co#-;
p,blic 1,nction print2propert3()
{
echo $this0a/-<br45c P4P #i6n ph7-;
}
7
8
9
10
11
}
$'t=new *iaoTrinhC+TT();
$'t0print2propert3();
?
L# DF Cc i tng c th tu tham chiu chnh n bng cch s dung bin $this. Khi lm vic bn trong 1 phong
thc, s dung $this cng ging nh cch bn s dung object name bn ngoi class.
Cc nhn vo on code trn cc bn cng bit c cch s dung phong thc. Cch s dung phong thc ging
nh cch s dung hm thng thng, nhng chng ta phi thng qua object.
Cc bn chy li file vidu.php s hin thj kt qu nh sau:
=r4!h 5>n
Welcome to website Giaotrinhcntt.Com
Hoc PHP min ph
Qua bi hoc ny, cc bn nm c nhng khi nim v lp trnh hng i tng trong PHP, cch jnh ngha
lp, thuc tnh, phong thc, khi to i tng, s dung thuc tnh, phong thc.
Hen gp li cc bn bi hoc tip theo trong series hng dn hoc lp trnh php nng cao!
Lp trnh hng i tng l g?
ng bi: HiB# -Gng Ngy ng: HI;JH;HKJL Chuyn muc: PHP M/ng C"o | Bnh lun : J
PHP Nng Cao Sau khi cc bn xem cc bi vit ca mnh trong phn PHP C!n "#n ch$n cc bn %&
hi'u r( cc kin th)c c* b#n v+ ,-p .rnh PHP r/i %0ng kh1ng2 H1m na3 mnh 4
PHP M/ng C"o Sau khi cc bn xem cc bi vit ca mnh trong phn PHP CNn On chn cc bn
hiu r cc kin thc co bn v Lp =rnh PHP ri ng khng? Hm nay mnh s gii thiu v hng
dn cc bn hiu r v cc kin thc ca lp trnh php nng cao.
Trc tin cc bn d hiu v d tip thu cc bi vit pha sau, th hm nay mnh s gii hiu n cc
bn mt khi nim khng cn xa li i vi nhng bn no tng hp lp trnh nhng c l mi m vi
nhng bn bc u tm hiu. l khi nim "Lp trnh hng i tng l g?
J; Lp trnh hng i tng l?
Lp trnh hng i tng (gi tt l !!"# t$ %h& 'nh ng& ()*+%t,(ri+nt+d pr(gr-..ing), hay cn
goi l lp trnh jnh hng i tng, l k thut lp trnh h tr cng ngh i tng. OOP c xem l
gip tng nng sut, on gin ha phc tp khi bo tr cng nh m rng phn mm bng cch cho
php lp trnh vin tp trung vo cc i tng phn mm bc cao hon. Ngoi ra, nhiu ngi cn cho
rng OOP d tip thu hon cho nhng ngi mi hoc v lp trnh hon l cc phong php trc .
Mt cch gin lc, y l khi nim v l mt n luc nhm gim nhe cc thao tc vit m cho ngi lp
trnh, cho php ho to ra cc ng dung m cc yu t bn ngoi c th tong tc vi cc chong trnh
ging nh l tong tc vi cc i tng vt l.
Nhng i tng trong mt ngn ng OOP l cc kt hp gia m v d liu m chng c nhn nhn
nh l mt on vj duy nht. Mi i tng c mt tn ring bit v tt c cc tham chiu n i tng
c tin hnh qua tn ca n. Nh vy, mi i tng c kh nng nhn vo cc thng bo, x l
d liu (bn trong ca n), v gi ra hay tr li n cc i tng khc hay n mi trng.
H; C! t4nh !h%t ! bn !<" lp trnh hng i tng
-i tng 'ob+,!t)F Cc d liu v chi thj c kt hp vo mt on vj y to nn mt i tng.
on vj ny tong ong vi mt chong trnh con v v th cc i tng s c chia thnh hai b
phn chnh: phn cc phong thc (method) v phn cc thuc tnh (property). Trong thuc t, cc
phong thc ca i tng l cc hm v cc thuc tnh ca n l cc bin, cc tham s hay hng ni
ti ca mt i tng (hay ni cch khc tp hp cc d liu ni ti to thnh thuc tnh ca i tng).
Cc phong thc l phong tin s dung mt i tng trong khi cc thuc tnh s m t i tng
c nhng tnh cht g.
Cc phong thc v cc thuc tnh thng gn cht vi thuc t cc c tnh v s dung ca mt i
tng.
Trong thuc t, cc i tng thng c tru tng ha qua vic jnh ngha ca cc lp (class).
Tp hp cc gi trj hin c ca cc thuc tnh to nn trng thi ca mt i tng.
Mi phong thc hay mi d liu ni ti cng vi cc tnh cht c jnh ngha (bi ngi lp trnh)
c xem l mt c tnh ring ca i tng. Nu khng c g lm ln th tp hp cc c tnh ny goi
chung l c tnh ca i tng.
Lp trnh hng i tng l mt phong php lp trnh c cc tnh cht chnh sau:
=4nh trP# tng '"b(tr"!tion)F y l kh nng ca chong trnh b qua hay khng ch n mt s
kha cnh ca thng tin m n ang truc tip lm vic ln, ngha l n c kh nng tp trung vo nhng
ct li cn thit. Mi i tng phuc vu nh l mt "ng t c th hon tt cc cng vic mt cch ni
b, bo co, thay i trng thi ca n v lin lc vi cc i tng khc m khng cn cho bit lm
cch no i tng tin hnh c cc thao tc. Tnh cht ny thng c goi l su tru tng ca
d liu.
Tnh tru tng cn th hin qua vic mt i tng ban u c th c mt s c im chung cho
nhiu i tng khc nh l su m rng ca n nhng bn thn i tng ban u ny c th khng c
cc bin php thi hnh. Tnh tru tng ny thng c xc jnh trong khi nim goi l lp tru tng
hay hay lp co s tru tng.
Tnh ng gi (encapsulation) v che du thng tin (information hiding): Tnh cht ny khng cho php
ngi s dung cc i tng thay i trng thi ni ti ca mt i tng. Chi c cc phong thc ni
ti ca i tng cho php thay i trng thi ca n. Vic cho php mi trng bn ngoi tc ng ln
cc d liu ni ti ca mt i tng theo cch no l hon ton ty thuc vo ngi vit m. y l tnh
cht m bo su ton ven ca i tng.
=4nh " hnh 'pol38orphi(8)F Th hin thng qua vic gi cc thng ip (message). Vic gi cc
thng ip ny c th so snh nh vic goi cc hm bn trong ca mt i tng. Cc phong thc
dng tr li cho mt thng ip s ty theo i tng m thng ip c gi ti s c phn ng
khc nhau. Ngi lp trnh c th jnh ngha mt c tnh (chng hn thng qua tn ca cc phong
thc) cho mt lot cc i tng gn nhau nhng khi thi hnh th dng cng mt tn goi m su thi hnh
ca mi i tng s tu ng xy ra tong ng theo c tnh ca tng i tng m khng bj nhm ln.
Th du khi jnh ngha hai i tng "hinh_vuong v "hinh_tron th c mt phong thc chung l
"chu_vi. Khi goi phong thc ny th nu i tng l "hinh_vuong n s tnh theo cng thc khc vi
khi i tng l "hinh_tron.
=4nh kB thP" 'inh,rit"n!,)F c tnh ny cho php mt i tng c th c sn cc c tnh m i
tng khc c thng qua k tha. iu ny cho php cc i tng chia s hay m rng cc c tnh
sn c m khng phi tin hnh jnh ngha li. Tuy nhin, khng phi ngn ng jnh hng i tng
no cng c tnh cht ny.
L; C! khi ni08 liAn Q#"n Bn !! ng7n ng$ lp trnh **P hi0n 1i
Lp '!l"(()
Mt lp c hiu l mt kiu d liu bao gm cc thuc tnh v cc phong thc c jnh ngha t
trc. y l su tru tng ha ca i tng. Mt i tng s c xc lp khi n c thuc th ha
t mt lp. Khc vi kiu d liu thng thng, mt lp l mt on vj (tru tng) bao gm su kt hp
gia cc phong thc v cc thuc tnh. c mt i tng (m c th c xem nh l mt bin)
hot ng c th vic thuc th ha s c th bao gm vic ci t cc gi trj ban u ca cc thuc
tnh cng nh vic ng k b nh, m cng vic ny thng c giao cho cc phong thc goi l
"my kt cu (constructor) hay hm dung. Ngc li khi mt i tng thuc v mt lp khng cn s
dung na th cng c th c mt phong thc x l goi l "my hy dit (destructor) hay hm hy.
Nh vy, c c cc i tng th ngi lp trnh OOP cn phi thit k lp ca cc i tng
bng cch xy dung cc thuc tnh v cc phong thc c cc c tnh ring.
Mi mt phong thc hay mt thuc tnh y ca mt lp cn c goi tn l mt thnh vin
(member) ca lp .
Lp !on '(#b!l"(()
Lp con l mt lp thng thng nhng c thm tnh cht k tha mt phn hay ton b cc c tnh
ca mt lp khc. Lp m chia s su k tha goi l lp phu mu (parent class).
Lp tru tng hay lp co s tru tng (abstract class)
Lp tru tng l mt lp m n khng th thuc th ha thnh mt i tng thuc dung c. Lp ny
c thit k nhm to ra mt lp c cc c tnh tng qut nhng bn thn lp cha c ngha (hay
khng ngha) c th tin hnh vit m cho vic thuc th ha.
V du: Lp "hinh_phang c jnh ngha khng c d liu ni ti v chi c cc phong thc (hm ni
ti) "tinh_chu_vi, "tinh_dien_tich. Nhng v lp hnh_phng ny cha xc jnh c y cc c tnh
ca n (cu th cc bin ni ti l toa cc inh nu l a gic, l ng bn knh v to tm nu l
hnh trn, .) nn n chi c th c vit thnh mt lp tru tng. Sau , ngi lp trnh c th to ra
cc lp con chng hn nh l lp "tam_giac, lp "hinh_tron, lp "tu_giac,.. V trong cc lp con ny
ngi vit m s cung cp cc d liu ni ti (nh l bin ni ti r lm bn knh v hng s ni ti Pi cho
lp "hinh_tron v sau vit m cu th cho cc phong thc "tinh_chu_vi v "tinh_dien_tich).
Phng =hE! '8,tho5)
L hm ni ti ca mt lp (hay mt i tng). Ty theo c tnh m ngi lp trnh gn cho, mt
phong php c th chi c goi bn trong cc hm khc ca lp , c th cho php cc cu lnh bn
ngoi lp goi ti n, hay chi cho php cc lp c quan h c bit nh l quan h lp con, v quan h
bn b (friend) c php goi ti n. Mi phong php u c th c kiu tr v, chng c th tr cc
kiu d liu c in hay tr v mt kiu l mt lp c jnh ngha t trc. Mt tn goi khc ca
phong php ca mt lp l hm thnh vin.
Ngi ta cn jnh ngha thm vi loi phong php c bit:
Hm dung (constructor) l hm c dng ci t cc gi tri ban u cho cc bin ni ti v i khi
cn dng khai bo v vic x dung b nh.
Hm hy (destructor) l hm dng vo vic lm sch b nh v hy b tn ca mt i tng sau khi
dng xong, trong c th bao gm c vic xa cc con tr ni ti v tr v cc phn b nh m i
tng dng.
Trong mt s trng hp th hm hy hay hm dung c th c tu ng ha bi ngn ng OOP nh l
trng hp ca Visual C++, C#.
Tin ch (utility) l cc hm chi hoat ng bn trong ca mt lp m khng cho php mi trng bn
ngoi goi ti. Cc hm ny c th l nhng tnh ton trung gian ni b ca mt i tng m xt thy
khng cn thit phi cho th gii bn ngoi ca i tng bit l g.
=h#9! t4nh '"ttrib#t,)
Thuc tnh ca mt lp bao gm cc bin, cc hng, hay tham s ni ti ca lp . y, vai tr quan
trong nht ca cc thuc tnh l cc bin v chng s c th bj thay i trong sut qu trnh hot ng ca
mt i tng. Cc thuc tnh c th c xc jnh kiu v kiu ca chng c th l cc kiu d liu c
in hay l mt lp jnh ngha t trc. Nh ghi, khi mt lp c thuc th ho thnh i
tng cu th th tp hop cc gi trj ca cc bin ni ti lm thnh trng thi ca i tng. Ging nh
trng hp ca phong php, ty theo ngi vit m, bin ni ti c th chi c dng bn trong cc
phong php ca chnh lp , c th cho php cc cu lnh bn ngoi lp, hay chi cho php cc lp c
quan h c bit nh l quan h lp con, (v quan h bn b (friend) trong C++) c php dng ti n
(hay thay i gi trj ca n). Mi thuc tnh ca mt lp cn c goi l thnh vin d liu ca lp .
=h! th. 'in(t"n!,)
Thuc th ha (instantiate) l qu trnh khai bo c mt tn (c th c xem nh l mt bin) tr
thnh mt i tng t mt lp no .
Mt lp sau khi c tin hnh thuc th ha c mt i tng cu th goi l mt thuc th. Hay ni
ngc li mt thuc th l mt i tng ring l ca mt lp jnh trc. Nh cc bin thng thng,
hai thuc th ca cng mt lp c th c trng thi ni ti khc nhau (xc jnh bi cc gi trj hin c ca
cc bin ni ti) v do hon ton c lp nhau nu khng c yu cu g c bit t ngi lp trnh.
C7ng !9ng 'p#bli!)
Cng cng l mt tnh cht c dng gn cho cc phong php, cc bin ni ti, hay cc lp m khi
khai bo th ngi lp trnh cho php cc cu lnh bn ngoi cng nh cc i tng khc c
php dng n n.
Th du: Trong C++ khai bo public: int my_var; th bin my_var c hai tnh cht l tnh cng cng v l
mt integer c hai tnh cht ny hp thnh c tnh ca bin my_var khin n c th c x dung hay
thay i gi trj ca n (bi cc cu lnh) moi noi bn ngoi ln bn trong ca lp.
RiAng t 'priv"t,)
Ring t l su th hin tnh cht ng mnh nht (ca mt c tnh hay mt lp)Khi dng tnh cht ny
gn cho mt bin, mt phong php th bin hay phong php chi c th c s dung bn trong
ca lp m chng c jnh ngha. Moi n luc dng n chng t bn ngoi qua cc cu lnh hay t
cc lp con s bj ph nhn hay bj li.
Oo tSn 'prot,!t,5)
Ty theo ngn ng, s c vi im nh khc nhau v cch hiu tnh cht ny. Nhn chung y l tnh
cht m m khi dng p dung cho cc phong php, cc bin ni ti, hay cc lp th chi c trong ni
b ca lp hay cc lp con ca n (hay trong ni b mt gi nh trong Java) c php goi n hay
dng n cc phong php, bin hay lp .
So vi tnh cht ring t th tnh bo tn rng ri hon v ngha chia s d liu hay chc nng. N cho
php mt s trng hp c dng ti cc c tnh ca mt lp (t mt lp con chng hn).
Lu : Cc tnh cht cng cng, ring t v bo tn i khi cn c dng chi thj cho mt lp con
cch thc k tha mt lp cha me nh trong C++.
-" kB thP" '8#lipl, inh,rit"n!,)
y l mt tnh cht cho php mt lp con c kh nng k tha truc tip cng lc nhiu lp khc.
Vi im cn lu khi vit m dng tnh cht a k tha:
Khi mun c mt su k tha t nhiu lp phu mu th cc lp ny cn phi c lp v c bit tn ca
cc d liu hay hm cho php k tha phi c tn khc nhau trnh li "ambiguilty. Bi v lc phn
mm chuyn djch s khng th xc jnh c l lp con s tha k tn no ca cc lp phu mu.
Khng phi ngn ng OOP loi phn lp no cng h tr cho tnh cht ny.
Ngoi cc khi nim trn, ty theo ngn ng, c th s c cc chc nng OOP ring bit c cp thm
vo.
TBt l#nF Bi ny mnh chi tp trung vo phn gii thiu l thuyt. Bi tip theo mnh s gii thiu n
cc bn cc c php co bn ca lp trnh hng i tng trong php.
Hc PHP: Lp trnh hng i tng i PHP
b i Minh Nh t | L p trnh WEB , PHP, PHP nng cao | 19/08/2013
Lp trnh hng i tng i PHP gi!p ch" i#c $p trnh tr% n&n '( ')ng h*n+ Lp trnh ,-. gi/
0h1ng ging nh i ng). trc2 t3t c4 56 hng 5 t7" '8ng 9:t i tng+ ;-. '8ng i tng
tr"ng PHP $)9 ch" c"'< tr% n&n r= r)ng2 tr"ng >?ng ) '( >@A Bi >A6 n). h*n+
Cr"ng PHP2 ng/i tA D c6ng c3p ch" ch!ng tA >En c?c h)9 F Gnh nghHA i tng2 ) I-. '8ng i
tng 0h? $) J. K+ L( tiMt 0i#9 chN iMt ) th/i giAn c cKA c?c ,7n2 t1i Iin gi tOt P1i tngQ %
-. $) Pc$A>>Q+
Hnh dung m t class
RM6 $) ng/i 9i $p trnh h"Sc ng/i D T6<n i c?ch I-. '8ng h)9 ) gi h)9 cB iFn+ Ch >U
th3. i#c >@ 'Vng c$A>> tr"ng $p trnh tr% n&n nhc nhWng ) 0hX tiMp cn+ Ynh hiF6 3n 5 X2
0hi $Jn J6 9nh ngh< Mn Gnh nghHA c$A>> cZng th3. h*i 0hX chG6+ C6. nhi&n 9nh >U $)9 ,7n c49
th3. '( chG6 h*n 0hi $p trnh hng i tng ,Wng ng1n ngN PHP T6A ,)i iMt n).+
i m khc bi t gi a l p trnh h ng i t ng v l p trnh h ng th t c (hm)
Li i $p trnh th<" hng thK tVc2 t[c c?ch 9) tA \n th/ng $)9+ ;-. '8ng 9:t h)92 r]i inc$6'<
nX t^ 9:t _i$< 0h?c2 gi h)92 ` +
1
ha#2c,a2t,i();
abn >@ 'Vng i tng th >A"+ LF gi 9:t h)9 9) >@ 'Vng i tng th ct nh3t ,7n ph4i tn 2 'bng
c"'<+
1
2
3
$obj = new #3Class();

$obj 0 ha#2c,a2t,i();
Y:t F t7" 9i i tng+ d) 9:t F gi h)9+ Ynh >U nXi ch" ,7n ngh< >A" 9) i tng t6. ')i
nhng $7i c A ch6:ng Mn thM+
Ch[ nh3t2 $) >@ 'Vng i tng $)9 ch" tA c49 th3. gJn gZi h*n+ d t^ trc gi/2 c"n ng/i
D T6<n i i#c Pt*ng t?cQ $&n 9:t Pi tngQ+ Yi th[ I6ng T6Anh tA 56 $) i tng:
chiMc $Apt"p2 c?i i#n th"7i2 hA. c?i Cd2 ` t3t c4 56 $) i tng+ aZng . 9) ng/i tA
cZng $)9 c"'< tr% th)nh 9:t i tng+
e7n >U c49 th3. c >8 T6An h# t*ng t?c T6A $7i giNA c?c i tng 0hi $p trnh+ ahEn
h7ng nh:
1
2
3
4
M8nh 9:t = new class M8nh 9:t;
+';i nh< = new class +h<;

M8nh 9:t 0 th# ( +';i nh< );
e7n >U cJn 9:t th/i giAn F th3. c >8 r/i nhA6 cKA t^ng i tng tr"ng c"'<2 ) t%ng
tng rA c >8 t*ng t?c cKA ch!ng i nhA6+ d) cZng ^ng $" ng7i2 ng). X >U Mn
>9+
Li56 c6i cfng $)9 ch" c$A>> tr% th)nh 9:t c1ng cV t6.#t /i 0hi $p trnh+ LX $) >8 'fng $7i
cKA c$A>> c"n i c$A>> chA+ L)9 ch" c"'< '( ')ng c4i tiMn nhAnh chXng '8A tr&n nhNng c?i
cZ+
3 i u c n quan tm khi xy d ng m t class
Y:t c$A>> cX 3 th[ T6An trng+
K tha g c$A>> Ang I-. '8ng cX cJn ph4i 0M th^A c$A>> n)" 0h?c F cX thF h"7t :ng hA.
0h1ng
Thuc tnh g c?c th6:c tcnh 9) c$A>> n). cJn cX2 hiF6 n19 n) nX $) 9:t ,iMn t")n cVc 'fng
ch6ng tr"ng c?c h)9 cKA c$A>> n). ) ,&n ng")i tr"ng 9:t > trng hp
Hm g ) phJn T6An trng nh3t+ e7n cX thF hiF6 *n gi4n2 -. $) c?c ch[c nhng 9) c$A>>
c6ng c3p+ Cr"ng X cX 9:t h)9 Sc ,i#t2 gi $) h)9 I-. '8ng g c"n>tr6ct+ H)9 n). >U c
gi ngA. $!c ,7n n<i 9:t c$A>>+ Ch/ng c 'fng F 0h%i t7" gi? trG ch" ,iMn+
K th a
RM6 ,7n 9i ngh< nX $Jn J6 th2 j0 9nh >U gi4i thcch ch" ,7n+ kM th^A l ?9 chm i#c 9:t c$A>>
c"n2 >@ 'Vng $7i c?c th6:c tcnh2 ) h)9 cKA c$A>> chA F h"7t :ng+ d5 9St $6 trN2 th tr"ng c$A>>
c"n >U ch[A $61n c$A>> chA+ L^ng hiF6 ngc $7i $) chA ch[A c"n nhn+
Xy d ng class b ng PHP
CiMn h)nh t7" 9:t c$A>> *n gi4n2 T6A c 'V ,&n 'i tA >U t7" 9:t c$A>> 9i t&n $) 9.a$A>>:
0
1
0
2
0
3
0
4
0
5
0

0
!
0
8
0
9
1
0
1
1
1
2
1
3
1
4
1
5
1

1
!
1
8
1
== >hai b(o tn class

class #3Class {

== +?i d,n' bn tron' class
== C(c th,?c t7nh c@a class

pri$ate $pri;
p,blic $p,b;
protected $pro;

== 4<# c@a class

1,nction 22constr,ct() {

== 4<# constr,ct

$this0pri = -Ai&n pri$ate-;
$this0p,b = -Ai&n p,blic-;
$this0pro = -Ai&n protected-;
}

1,nction B,at() {

== 4<# B,:t tr)

echo C$priD C / $this0pri;
echo C$p,bD C / $this0p,b;
echo C$proD C / $this0pro;
}

9
2
0
2
1
2
2
2
3
2
4
2
5
2

2
!
2
8
2
9
3
0
3
1
3
2
3
3
3
4
}

== >&t thEc #?t Fhai b(o h<#
eiMn othi>
eiMn othi> 'fng F ?9 chm i tng hi#n t7i2 c$A>> 9) ,7n Ang iMt c"'<+ di#c 'fng othi> F gi2
h"Sc c ) ghi gi? trG )" ,iMn th6:c ph79 i ch6ng cKA c$A>> $) ,Ot ,6:c+ dc 'V:
0
class G {
1
0
2
0
3
0
4
0
5
0

0
!
0
8
0
9
1
0
1
1
1
2
1
3
1
4
1
5
1

1
!
pri$ate $bienH;
1,nction ha#G() {
echo -4<# ha#G() c@a class G 9IJc '5i-;
}
1,nction ha#A() {
== ha#A() #,Kn '5i h<# ha#G c@a class
$this 0 ha#G();
== ha#A() #,Kn 9Lt 'i( tr) cho bi&n $bienH
$this 0 bienH = -4ello-;
}
}
== 4&t class G

1,nction ha#G() {
echo -4<# ha#G() bn n'o<i class-;
}
RM6 ,7n c l gi hA9pqr 9) 0h1ng 'fng othi> st hA9pqr+ Ch PHP >U gi hA9pqr ,&n ng")i c$A>>2
ch[ 0h1ng gi hA9pqr tr"ng c$A>>+ H"Sc PHP >U ,?" $ui+
Li i ,iMn2 nM6 ,7n c l g?n ,Wng $#nh o,i<n1 v PH<$$"Qw Ch ,iMn cVc ,: o,i<n1 >U c t7" ,&n
tr"ng hA9eqr2 ) $6 gi? trG $) PH<$$"Q ch[ 0h1ng $6 )" ,iMn o,i<n1 % 'bng 2+ RXi ch6ng2 tA ph4i
'fng Pothi> stQ F gi h)9 h"Sc nhNng ,iMn th6:c 5 c$A>>+
L u
Xin nh k l khi thao tc v i bi n: $this -> tenbien. Khng ph i l $this -> $tenbien.
Phn bi t private, public, protected khi l p trnh h ng i t ng v i PHP
LiF9 ch6ng '6. nh3t cKA 3 t^ 0hXA n). 56 $) t^ 0hXA chm tJ9 8c cKA ,iMn+ HA. c"n gi $) ngN
c4nh2 ph79 i 9) ,iMn n). cX thF c tr6. cp t^+
kh?c nhA6:
PriAt<: khOt 0h< nh3t2 chm tr"ng c$A>> 0hAi ,?" ,iMn n). 9i cX T6.5n >@ 'Vng+
P6,$ic: aX thF tr6. cp t^ 9i n*i th1ng T6A c-6 $#nh $obj -> tn_bi n;
Pr"t<ct<': xt 0hOt 0h< h*n PriAt< 9:t ch!t2 % ng")i c$A>> 0h1ng thF tr6. cp c ,iMn n).+
C6. nhi&n c$A>> c"n th cX thF+
dc 'V 9inh hA:
1
2
3
4
5

!
8
9
== MN dOn' l"i class P code trn

$class = new #3Class();

echo $class0p,b; == Ai&n p,blic
echo $class0pri; == QRi 1atal
echo $class0pro; == QRi 1atal

$class 0 B,at(); == Ai&n p,blicS Ai&n pri$ateS Ai&n protected
Rh D nXi % tr&n2 ,iMn priAt< ) pr"t<ct<' chm 'fng c ,&n tr"ng c$A>>+ LX $) $l '" h)9 xuat() cX
thF 'fng c 2 ,iMn n). F I63t rA 0Mt T64+
d) 0h1ng chm ?p 'Vng i ,iMn2 3 t^ 0hXA n). cbn c ?p 'Vng ch" h)9 i l nghHA t*ng t8+ kh?c
i ,iMn 9:t tc2 $) 0hi 0h1ng F t^ 0hXA n). )" th 9Sc Gnh h)9 >U $) p6,$ic+ C[c cX thF gi h)9 t^
,&n ng")i c$A>>+
Class k th a
a?ch 0M th^A 0h? ging ayy+ Rh gii thi#6 % tr&n2 c$A>> c"n 0M th^A c$A>> chA >U th^A h%ng t3t c4
c?c th6:c tcnh2 h)9 cKA c$A>> chA+ ah!ng tA cfng I<9 $7i >* ] 9:t c$A>>+
Cr"ng php2 'fng t^ 0hXA P<It<n'>Q 0hi 0hAi ,?" c$A>> F ,iF6 thG $) c$A>> n). Ang >@ 'Vng $7i 9:t
c$A>> 0h?c $)9 chA cKA nX+
1
2
3
class #3+ewClass eBtends #3Class {
== code
}
Rh "7n c"'< tr&n $) 9.R<ia$A>> 0M th^A 9.a$A>>+
Cr"ng c$A>> c"n cX thF gi $7i c?c h)9 0h1ng ph4i $) priAt< cKA c$A>> chA nh $) 9:t h)9 cKA chcnh
nX+ q9.a$A>> $) c$A>> % J6 ,)ir
1
2
3
class #3+ewClass eBtends #3Class {

1,nction B,atT() {
4
5

!
8
echo -4<# 9IJc '5i tU class con-;
$this0B,at();
}

}
d. c$A>> c"n n). >U cX nhNng Sc tcnh T6An trngz
a$A>> c"n cX thF tr8c tiMp tr6. cp ,iMn ) gi h)9 cKA c$A>> chA c 0hAi ,?" i t^ 0hXA Pp6,$icQ
h"Sc Ppr"t<ct<'Q+
d5 $6 trN2 c$A>> c"n $) 9:t c$A>> $n h*n c$A>> chA+ d) ch[A $61n c4 c$A>> chA qI<9 hnh tr&nr+
Vi t hm ln hm c c a class cha
khi iMt c"'< ch" c$A>> c"n2 nM6 ,7n c49 th3. 9:t h)9 cKA c$A>> chA 0h1ng phf hp2 ) ,7n 96n
iMt $7i h)9 n).2 iMt { $&n h)9 cZ cKA c$A>> chA+
Vi c vi t hm ny cn g i l override
di#c iMt { r3t *n gi4n2 tA chm cJn 0hAi ,?" 9:t h)9 i t&n . chAng t&n h)9 cKA c$A>> chA2 PHP >U
t8 hiF6 ,7n Ang 96n $)9 g+ dc 'V 5 iMt { h)9:
0
1
0
2
0
3
0
4
0
5
0

0
!
0
8
0
9
class CoAan {
1,nction print() {
echo -4<# print() c@a class CoAan-;
}
}

class >eTh,a eBtends CoAan {
1,nction print() {
echo -4<# print() c@a class >eTh,a-;
}
}

$objH = new CoAan();
$objT = new >eTh,a();

1
0
1
1
1
2
1
3
1
4
1
5
1

1
!
$objH 0 print(); == V,:tD 4<# print() c@a class CoAan
$objT 0 print(); == V,:tD 4<# print() c@a class >eTh,a
G i l i hm b vi t
| tr&n tA ^A t9 hiF6 5 iMt { hA. "<rri'< h)9 cKA c$A>> chA tr"ng PHP+ d. tr/ng hp h)9 D
,G ghi { 93t r]i th tA >U 0h1ng gi c nNA+ L)9 >A" F gi $7i h)9 cKA c$A>> chA -.z PHP gi4i
T6.Mt 3n 5 n). ,Wng t^ 0hXA parent::+
0
1
0
2
0
3
0
4
0
5
0

0
!
0
8
class G {
1,nction print() {
echo -G-;
}
}

==Class A F& thUa class G
class A eBtends G {
1,nction print() {
parentDDprint(); == '5i h<# print() c@a class G
echo -A-;
}
}
0
9
1
0
1
1
1
2
1
3
1
4
1
5
1

1
!
1
8
1
9

$obj = new G();
$obj 0 print(); == >&t W,8D G

$obj = new A();
$obj 0 print(); == >&t W,8D GA
Ngu n bi vi t: http://minhnhut.info/lap-trinh-huong-doi-tuong-voi-php/#ixzz2y1Mcurrq

You might also like