Top Banner

of 21

Cơ bản về lập trình hướng đối tượng trong PHP

Oct 18, 2015

Download

Documents

mfs_91

php
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

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 d n gin.

Lp trnh hng i tng l g?

Lp trnh hng i tng c ghi tt l OOP (object-oriented programming). L mt phung hng lp trnh tch bit so vi kiu c in. S dng i tng lp trnh nn nhng chui tung tc. OOP gip cho cc lp trnh vin c th tit kim nhiu thi gian hn 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 gn 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 tc 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 phng php lp trnh n gin m li ti u.

S khc nhau gia lp trnh hng i tng v lp trnh hng cu trc

-Lp trnh hng cu trc: Chia mt chng trnh thnh cc modul gii quyt tng thnh phn ca bi ton (hay cn gi l chia tr). Tch mt vn kh thnh cc vn nh hn d gii quyt. V th phi vit cc hm gii quyt tng modul mt, ri cho php gi ln nhau t mc ch lp trnh.

-Lp trnh hng i tng: S dng cc i tng trong chng trnh, tc l cc lp (class), khi chng trnh s s dng class nh mt kiu d liu nhng do ngi s dng to nn. Lp trnh hng i tng hin ang c u chung do c th s dng 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 khc nhau gia lp (class) v i tng(Object)

C nhiu bn cn c s nhm ln gia lp v i tng. Khng ch 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.

phn bit gia class v object cc bn hy ly v d nh bn ang thi cng mt cy cu.

-Class: Tng t nh mt bn kt hoch chi tit cho cy cu. Bn s cn phi xc nh 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

-Object: 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, , nha ng,). V tt nhin, bn s c th xy dng c rt nhiu cy cu t mt bn k hoch nh trn.

CcClassx l cu trc d liu v cc hnh ng, ng thi s dng cc thng tin xy dng ccObject. C th c nhiu hn mtObjectc xy dng t cng mtClassti cng mt thi im, miObjectny u l mt c th c lp v khng ph thuc ln nhau.

Cu trc ca mt Class

Cu trc ca mt class bao gm:thuc tnhvphng thc.

Hiu mt cch n gin ging nh lp trnh hng cu trc:

Trch dn

- Thuc tnh: Cc bin- Phng thc: Cc hm

C php:1

2

3Class TnClass{Properties and Method}

- Cc bin trongClassc gi l Properties (Thuc tnh)- Cc hm trongClassc gi l Method (Phng thc)

Sau khi to xongClass, bn c th khi to i tng theo c php sau:C php:1

2

3

nh ngha thuc tnh ca Class

Thuc tnh hot ng nh mt bin thng thng, ch c mt iu l thuc tnh lin kt vi object (i tng). V vy truy cp v s dng c ta phi thng qua object.

C php:1

2

3

4

5

-Phm vi: Phm vi c php s dng thuc tnh. Bao gm:public,private,protected,static,... Phm vi c th c, c th khng. Nu khng nh ngha phm vi th phm vi mc nh lpublic

-Tn bin: Tun theo quy tc t tn bin trong PHP

-Gi tr: Gi tr ca thuc tnh.

Lu : Thuc tnh khng nht thit phi gn gi tr ban u.

V d:Bn to 1 file c tnvidu.phpri vit ni dung sau y:

1

2

3

4

5

6

7

Cc bn chyhttp://localhost/vidu.phptrnh duyt s hin th kt qu sau:

Trch dn

Welcome to website Giaotrinhcntt.Com

nh ngha phng thc ca class

Tip theo v d trn, cc bn sa code nh sau:

1

2

3

4

5

6

7

8

9

10

11

Lu :Cc i tng c th t tham chiu chnh n bng cch s dng bin $this. Khi lm vic bn trong 1 phng thc, s dng $this cng ging nh cch bn s dng object name bn ngoi class.

Cc nhn vo on code trn cc bn cng bit c cch s dng phng thc. Cch s dng phng thc ging nh cch s dng hm thng thng, nhng chng ta phi thng qua object.

Cc bn chy li filevidu.phps hin th kt qu nh sau:

Trch dn

Welcome to website Giaotrinhcntt.ComHc PHP min ph

Qua bi hc ny, cc bn nm c nhng khi nim v lp trnh hng i tng trong PHP, cch nh ngha lp, thuc tnh, phng thc, khi to i tng, s dng thuc tnh, phng thc.Hn gp li cc bn bi hc tip theo trong series hng dn hc lp trnh php nng cao!

Lp trnh hng i tng l g?

ng bi:Hiu ngNgy ng:25.12.2013Chuyn mc:PHP Nng Cao|Bnh lun :1PHP Nng Cao Sau khi cc bn xem cc bi vit ca mnh trong phn PHP Cn Bn chn cc bn hiu r cc kin thc c bn v Lp Trnh PHP ri ng khng? Hm nay mnh

PHP Nng Cao Sau khi cc bn xem cc bi vit ca mnh trong phnPHP Cn Bnchn cc bn hiu r cc kin thc c bn vLp Trnh PHPri 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?

1. Lp trnh hng i tng l?Lp trnh hng i tng (gi tt l OOP, t ch Anh ng object-oriented programming), hay cn gi l lp trnh nh hng i tng, l k thut lp trnh h tr cng ngh i tng. OOP c xem l gip tng nng sut, n 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 hn. Ngoi ra, nhiu ngi cn cho rng OOP d tip thu hn cho nhng ngi mi hc v lp trnh hn l cc phng php trc .

Mt cch gin lc, y l khi nim v l mt n lc nhm gim nh cc thao tc vit m cho ngi lp trnh, cho php h to ra cc ng dng m cc yu t bn ngoi c th tng tc vi cc chng trnh ging nh l tng 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 n v 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.

2. Cc tnh cht c bn ca lp trnh hng i tngi tng (object):Cc d liu v ch th c kt hp vo mt n v y to nn mt i tng. n v ny tng ng vi mt chng trnh con v v th cc i tng s c chia thnh hai b phn chnh: phn cc phng thc (method) v phn cc thuc tnh (property). Trong thc t, cc phng 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 phng thc l phng tin s dng mt i tng trong khi cc thuc tnh s m t i tng c nhng tnh cht g.

Cc phng thc v cc thuc tnh thng gn cht vi thc t cc c tnh v s dng ca mt i tng.

Trong thc t, cc i tng thng c tru tng ha qua vic nh ngha ca cc lp (class).

Tp hp cc gi tr hin c ca cc thuc tnh to nn trng thi ca mt i tng.Mi phng thc hay mi d liu ni ti cng vi cc tnh cht c nh 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 gi chung l c tnh ca i tng.

Lp trnh hng i tng l mt phng php lp trnh c cc tnh cht chnh sau:

Tnh tru tng (abstraction):y l kh nng ca chng trnh b qua hay khng ch n mt s kha cnh ca thng tin m n ang trc tip lm vic ln, ngha l n c kh nng tp trung vo nhng ct li cn thit. Mi i tng phc v 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 gi l s 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 s 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 nh trong khi nim gi l lp tru tng hay hay lp c s tru tng.

Tnh ng gi (encapsulation) v che du thng tin (information hiding): Tnh cht ny khng cho php ngi s dng cc i tng thay i trng thi ni ti ca mt i tng. Ch c cc phng 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 s ton vn ca i tng.

Tnh a hnh (polymorphism):Th hin thng qua vic gi cc thng ip (message). Vic gi cc thng ip ny c th so snh nh vic gi cc hm bn trong ca mt i tng. Cc phng 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 nh ngha mt c tnh (chng hn thng qua tn ca cc phng thc) cho mt lot cc i tng gn nhau nhng khi thi hnh th dng cng mt tn gi m s thi hnh ca mi i tng s t ng xy ra tng ng theo c tnh ca tng i tng m khng b nhm ln.

Th d khi nh ngha hai i tng hinh_vuong v hinh_tron th c mt phng thc chung l chu_vi. Khi gi phng thc ny th nu i tng l hinh_vuong n s tnh theo cng thc khc vi khi i tng l hinh_tron.

Tnh k tha (inheritance):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 nh ngha li. Tuy nhin, khng phi ngn ng nh hng i tng no cng c tnh cht ny.

3. Cc khi nim lin quan n cc ngn ng lp trnh OOP hin iLp (class)Mt lp c hiu l mt kiu d liu bao gm cc thuc tnh v cc phng thc c nh ngha t trc. y l s tru tng ha ca i tng. Mt i tng s c xc lp khi n c thc th ha t mt lp. Khc vi kiu d liu thng thng, mt lp l mt n v (tru tng) bao gm s kt hp gia cc phng thc v cc thuc tnh. c mt i tng (m c th c xem nh l mt bin) hot ng c th vic thc th ha s c th bao gm vic ci t cc gi tr ban u ca cc thuc tnh cng nh vic ng k b nh, m cng vic ny thng c giao cho cc phng thc gi l my kt cu (constructor) hay hm dng. Ngc li khi mt i tng thuc v mt lp khng cn s dng na th cng c th c mt phng thc x l gi 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 dng cc thuc tnh v cc phng thc c cc c tnh ring.

Mi mt phng thc hay mt thuc tnh y ca mt lp cn c gi tn l mt thnh vin (member) ca lp .

Lp con (subclass)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 s k tha gi l lp ph mu (parent class).

Lp tru tng hay lp c s tru tng (abstract class)

Lp tru tng l mt lp m n khng th thc th ha thnh mt i tng thc dng 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 thc th ha.

V d: Lp hinh_phang c nh ngha khng c d liu ni ti v ch c cc phng thc (hm ni ti) tinh_chu_vi, tinh_dien_tich. Nhng v lp hnh_phng ny cha xc nh c y cc c tnh ca n (c th cc bin ni ti l ta cc nh nu l a gic, l ng bn knh v to tm nu l hnh trn, ) nn n ch 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 c th cho cc phng thc tinh_chu_vi v tinh_dien_tich).

Phng Thc (method)L hm ni ti ca mt lp (hay mt i tng). Ty theo c tnh m ngi lp trnh gn cho, mt phng php c th ch c gi bn trong cc hm khc ca lp , c th cho php cc cu lnh bn ngoi lp gi ti n, hay ch cho php cc lp c quan h c bit nh l quan h lp con, v quan h bn b (friend) c php gi ti n. Mi phng 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 nh ngha t trc. Mt tn gi khc ca phng php ca mt lp l hm thnh vin.

Ngi ta cn nh ngha thm vi loi phng php c bit:

Hm dng (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 dng 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 dng c th c t ng ha bi ngn ng OOP nh l trng hp ca Visual C++, C#.

Tin ch (utility) l cc hm ch hat ng bn trong ca mt lp m khng cho php mi trng bn ngoi gi 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.

Thuc tnh (attribute)Thuc tnh ca mt lp bao gm cc bin, cc hng, hay tham s ni ti ca lp . y, vai tr quan trng nht ca cc thuc tnh l cc bin v chng s c th b thay i trong sut qu trnh hot ng ca mt i tng. Cc thuc tnh c th c xc nh kiu v kiu ca chng c th l cc kiu d liu c in hay l mt lp nh ngha t trc. Nh ghi, khi mt lp c thc th ho thnh i tng c th th tp hp cc gi tr ca cc bin ni ti lm thnh trng thi ca i tng. Ging nh trng hp ca phng php, ty theo ngi vit m, bin ni ti c th ch c dng bn trong cc phng php ca chnh lp , c th cho php cc cu lnh bn ngoi lp, hay ch 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 tr ca n). Mi thuc tnh ca mt lp cn c gi l thnh vin d liu ca lp .

Thc th (instance)Thc 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 thc th ha c mt i tng c th gi l mt thc th. Hay ni ngc li mt thc th l mt i tng ring l ca mt lp nh trc. Nh cc bin thng thng, hai thc th ca cng mt lp c th c trng thi ni ti khc nhau (xc nh bi cc gi tr 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.

Cng cng (public)Cng cng l mt tnh cht c dng gn cho cc phng 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 d: 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 dng hay thay i gi tr ca n (bi cc cu lnh) mi ni bn ngoi ln bn trong ca lp.

Ring t (private)Ring t l s th hin tnh cht ng mnh nht (ca mt c tnh hay mt lp)Khi dng tnh cht ny gn cho mt bin, mt phng php th bin hay phng php ch c th c s dng bn trong ca lp m chng c nh ngha. Mi n lc dng n chng t bn ngoi qua cc cu lnh hay t cc lp con s b ph nhn hay b li.

Bo tn (protected)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 dng cho cc phng php, cc bin ni ti, hay cc lp th ch c trong ni b ca lp hay cc lp con ca n (hay trong ni b mt gi nh trong Java) c php gi n hay dng n cc phng php, bin hay lp .

So vi tnh cht ring t th tnh bo tn rng ri hn 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 ch th cho mt lp con cch thc k tha mt lp cha m nh trong C++.

a k tha (muliple inheritance)y l mt tnh cht cho php mt lp con c kh nng k tha trc tip cng lc nhiu lp khc.

Vi im cn lu khi vit m dng tnh cht a k tha:

Khi mun c mt s k tha t nhiu lp ph 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 dch s khng th xc nh c l lp con s tha k tn no ca cc lp ph 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.

Kt lun:Bi ny mnh ch tp trung vo phn gii thiu l thuyt. Bi tip theo mnh s gii thiu n cc bn cc c php c bn ca lp trnh hng i tng trong php.

Hc PHP: Lp trnh hng i tng vi PHP

biMinh Nht|Lp trnh WEB,PHP,PHP nng cao|19/08/2013Lp trnh hng i tng vi PHP gip cho vic lp trnh tr nn d dng hn. Lp trnh by gi khng ging nh vi ngy trc, tt c u hng v to dng mt i tng. Xy dng i tng trong PHP lm cho code tr nn r rng, trong sng v d sa i sau ny hn.

Trong PHP, ngi ta cung cp cho chng ta sn cc hm nh ngha i tng, v xy dng i tng kh l y . tit kim ch vit v thi gian c ca cc bn, ti xin gi tt i tng y l class.

Hnh dung mt class

Nu l ngi mi lp trnh hoc ngi quen vi cch xy dng hm v gi hm c in. Th s thy vic s dng class trong lp trnh tr nn nhc nhng v kh tip cn. Mnh hiu vn , v khi ln u mnh nghe n nh ngha class cng thy hi kh chu. Tuy nhin mnh s lm bn cm thy d chu hn khi lp trnh hng i tng bng ngn ng PHP qua bi vit ny.

im khc bit gia lp trnh hng i tng v lp trnh hng th tc (hm)

i vi lp trnh theo hng th tc, tc cch m ta vn thng lm. Xy dng mt hm, ri include n t mt file khc, gi hm, .

1ham_cua_tui();

Cn s dng i tng th sao. gi mt hm m s dng i tng th t nht bn phi tn 2 dng code.

12

3$obj = new myClass();

$obj -> ham_cua_tui();

Mt to mi i tng. V mt gi hm. Mnh s ni cho bn nghe v sao m i tng tuy di nhng li c a chung n th.

Th nht, l s dng i tng lm cho ta cm thy gn gi hn. V t trc gi, con ngi quen vi vic tng tc ln mt i tng. Mi th xung quanh ta u l i tng: chic laptop, ci in thoi, hay ci TV, tt c u l i tng. Cng v vy m ngi ta cng lm code tr thnh mt i tng.

Bn s cm thy c s quan h tng tc qua li gia cc i tng khi lp trnh. Chn hng nh:

12

3

4Mnh t = new class Mnh t;Ngi nh = new class Nh;

Mnh t -> thm ( Ngi nh );

Bn s cn mt thi gian thy c s ri nhau ca tng i tng trong code, v tng tng ra c s tng tc ca chng vi nhau. V cng ng lo ngi, v ngy s n sm.

iu cui cng lm cho class tr thnh mt cng c tuyt vi khi lp trnh. l s dng li ca class con vi class cha. Lm cho code d dng ci tin nhanh chng da trn nhng ci c.

3 iu cn quan tm khi xy dng mt class

Mt class c 3 th quan trng.

K tha class ang xy dng c cn phi k tha class no khc c th hot ng hay khng

Thuc tnh cc thuc tnh m class ny cn c, hiu nm n n l mt bin ton cc dng chung trong cc hm ca class ny v bn ngoi trong mt s trng hp

Hm v phn quan trng nht. Bn c th hiu n gin, y l cc chc nng m class cung cp. Trong c mt hm c bit, gi l hm xy dng construct. Hm ny s c gi ngay lc bn new mt class. Thng c dng khi to gi tr cho bin.

K thaNu bn mi nghe n ln u th, Ok mnh s gii thch cho bn. K tha m ch vic mt class con, s dng li cc thuc tnh, v hm ca class cha hot ng. V mt lu tr, th trong class con s cha lun class cha. ng hiu ngc li l cha cha con nh.

Xy dng class bng PHP

Tin hnh to mt class n gin, qua v d bn di ta s to mt class mi tn l myClass:

0102

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34// Khai bo tn class

class myClass {

// Ni dung bn trong class// Cc thuc tnh ca class

private $pri;public $pub;protected $pro;

// Hm ca class

function __construct() {

// Hm construct

$this->pri = "Bin private";$this->pub = "Bin public";$this->pro = "Bin protected";}

function xuat() {

// Hm xut tr

echo '$pri: ' . $this->pri;echo '$pub: ' . $this->pub;echo '$pro: ' . $this->pro;}

}

// Kt thc mt khai bo hm

Bin $this

Bin $this dng m ch i tng hin ti, class m bn ang vit code. Vic dng $this gi, hoc c v ghi gi tr vo bin thuc phm vi chung ca class l bt buc. V d:

0102

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17class A {private $bien1;function hamA() {echo "Hm hamA() ca class A c gi";}function hamB() {// hamB() mun gi hm hamA ca class$this -> hamA();// hamB() mun t gi tr cho bin $bien1$this -> bien1 = "Hello";}}// Ht class A

function hamA() {echo "Hm hamA() bn ngoi class";}

Nu bn c gi hamA() m khng dng $this -> hamA(). Th PHP s gi hamA() bn ngoi class, ch khng gi hamA() trong class. Hoc PHP s bo li.

i vi bin, nu bn c gn bng lnh $bien1 = Hello; Th bin cc b $bien1 s c to bn trong hamB(), v lu gi tr l Hello ch khng lu vo bin $bien1 dng 2. Ni chung, ta phi dng $this -> gi hm hoc nhng bin thuc v class.

Lu Xin nh k l khi thao tc vi bin:$this -> tenbien. Khng phi l$this -> $tenbien.

Phn bit private, public, protected khi lp trnh hng i tng vi PHPim chung duy nht ca 3 t kha ny u l t kha ch tm vc ca bin. Hay con gi l ng cnh, phm vi m bin ny c th c truy cp t.

Khc nhau:

Private: Kht khe nht, ch trong class khai bo bin ny mi c quyn s dng.

Public: C th truy cp t mi ni thng qua cu lnh$obj -> tn_bin; Protected: t kht khe hn Private mt cht, ngoi class khng th truy cp c bin ny. Tuy nhin class con th c th.

V d minh ha:

12

3

4

5

6

7

8

9// S dng li class code trn

$class = new myClass();

echo $class->pub; // Bin publicecho $class->pri; // Li fatalecho $class->pro; // Li fatal

$class -> xuat(); // Bin public, Bin private, Bin protected

Nh ni trn, bin private v protected ch dng c bn trong class. l l do hmxuat()c th dng c 2 bin ny xut ra kt qu.

V khng ch p dng vi bin, 3 t kha ny cn c p dng cho hm vi ngha tng t. Khc vi bin mt t, l khi khng t kha ny vo th mc nh hm s l public. Tc c th gi hm t bn ngoi class.

Class k thaCch k tha kh ging C++. Nh gii thiu trn, class con k tha class cha s tha hng tt c cc thuc tnh, hm ca class cha. Chng ta cng xem li s mt class.

Trong php, dng t kha extends khi khai bo class biu th l class ny ang s dng li mt class khc lm cha ca n.

12

3class myNewClass extends myClass {// code}

Nh on code trn l myNewClass k tha myClass.

Trong class con c th gi li cc hm khng phi l private ca class cha nh l mt hm ca chnh n. (myClass l class u bi)

12

3

4

5

6

7

8class myNewClass extends myClass {

function xuat2() {echo "Hm c gi t class con";$this->xuat();}

}

Vy class con ny s c nhng c tnh quan trng?

Class con c th trc tip truy cp bin v gi hm ca class cha c khai bo vi t kha public hoc protected.V lu tr, class con l mt class ln hn class cha. V cha lun c class cha (xem hnh trn).

Vit hm ln hm c ca class chaKhi vit code cho class con, nu bn cm thy mt hm ca class cha khng ph hp, v bn mun vit li hm ny, vit ln hm c ca class cha.

Vic vit hm ny cn gi l override

Vic vit rt n gin, ta ch cn khai bo mt hm vi tn y chang tn hm ca class cha, PHP s t hiu bn ang mun lm g. V d v vit hm:

0102

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17class CoBan {function print() {echo "Hm print() ca class CoBan";}}

class KeThua extends CoBan {function print() {echo "Hm print() ca class KeThua";}}

$obj1 = new CoBan();$obj2 = new KeThua();

$obj1 -> print(); // Xut: Hm print() ca class CoBan$obj2 -> print(); // Xut: Hm print() ca class KeThua

Gi li hm b vit trn ta va tm hiu v vit hay override hm ca class cha trong PHP. Vy trng hp hm b ghi mt ri th ta s khng gi c na. Lm sao gi li hm ca class cha y? PHP gii quyt vn ny bng t khaparent::.

0102

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19class A {function print() {echo "A";}}

//Class B k tha class Aclass B extends A {function print() {parent::print(); // gi hm print() ca class Aecho "B";}}

$obj = new A();$obj -> print(); // Kt qu: A

$obj = new B();$obj -> print(); // Kt qu: AB

Ngun bi vit:http://minhnhut.info/lap-trinh-huong-doi-tuong-voi-php/#ixzz2y1Mcurrq