面向对象oop教程_第1页
面向对象oop教程_第2页
面向对象oop教程_第3页
面向对象oop教程_第4页
面向对象oop教程_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象编程思想编程思想:面向过程,面向对象例子:学生报到系统1、学生报到2、学校登记3、学生缴费4、学校收费5、学生选择班级6、班级录入信息分析:实现这样业务逻辑。将系统拆分成每一个步骤进行操作。将每一个功能,封装成函数。逐一去调用函数即可。录入echo upda stu bdoddo();stu_jiaofei(); srh_shQufei J); stu_xuanban();team_luru()iQp-I 2/ WUIITWU二1 E0pgMVTOTqHI1 中宰牛旅到Lipdste stu set isbBod = 1 cjhere id = 10羊校登联, ,.insert ini

2、d school (id, stLi_Ld, tine) values(tTiill, 1Q. now:)Lipd si c stLi set irunry nicncy - Lt BOQ where id 10学校收费ujdsie schooL sei notiey - money + 16SOO shc_n5jre - idl学生会择砒缎tdstt *tu set stu_tl:iss=sh59 where id = 1(.录入信息皿tenn s2t count = coutit 4 L inhere id = 12分析:报到系统是如何实现的? ?是将一个完整的业务逻辑,拆分一个一个的步骤

3、, 然后在满足学需求的时候,去逐一调函一个函数。逐一实现每一个过程。想这样的编程方式,面向过程的编程方式。动词罗列,动词的集合体。发现:程序的最终的目的,用于去模拟出现实中的业务逻辑。 现实生活中的业务逻辑,所有的动作。都是由一个主体发出的。 但是在使用面向过程的时候, 没有主体的存在。 使用程序就无法去 完成模拟出现实中的业务逻辑。导致:如果在使用程序去完成模拟出现实生活中的业务逻辑。程序的世界,也需要一个主体的存在。并且所有的工作,都需要由这个主体去发出。将这样的编程思想称为面向对象(现实生活中 的主体)模拟现实世界和程序世界面向过程:只存在着动作,没有一个主体的存在。无法完整的去模拟出现

4、实的世界现芟世畀斯世界面向对象:是完整的去模拟出现实世界中的业务逻辑。在显示世界中的一个主体, 如果使用面向对象的方式来描述,将该实体(人,物,事)映射到编程世界中,作为编程世界中的一 个主体(对象)。问题:使用面向对象思路去完成学生报到的系统1、分析现实的业务逻辑中,完成该动作,需要几个实体三个实体,学生,学校,班级2、需要在程序中去建造三个实体3、为每一个实体去添加一些功能学生:报到,缴费,选班学校:登记,收费班级:录入信息4、在完成系统的,只需要在适当的时候,让一个实体去执行不同的功能。面向对象的语法基本概念对象:在现实中看的见,摸的着的东西,映射到程序中都是对象。 对象是数据和附加在数

5、据 上操作的集合体。对象怎么来的? ?通过实例化类得到的类:对一些具有相同特征的事务的总称,抽象化的描述。本身不是一个具体的对象。是多个具体对象的描述。规定结构的。昆虫是什么? ?是对具有相同特征虫子的描述(翅膀,触角,多条腿)。实例化:将一个类变成一个具体的对象的过程。设计图纸:规定房子的一些结构。对象:根据设计图纸,建造出来的房子。从图纸到房子的过程:称为实例化。不参与建造过程,不参与实例化的过程。基本语法声明类使用class关键字Class类名()r, ; pi ipr2 class StudentRi I oca lh ost/s hxp C localhost, 5h59/les5o

6、n29-oopl/demo02,php类中包含两个部分:成员属性和成员方法成员属性数据,使用变量保存数据,class Student$name;Sage; $sex;H I oc si ho st/s h 5 9/leso i-X- C I oca I h o st/s h 59/lesson 29 -oop L/demo02 .p h p需要使用修饰符来描述变量,publico公共的。class StudentI) I oca I hostyh5 9/1 essor X public public public$name;$agei$sex;-C Ioalhost/sh59/le5son29

7、-oopl/demo03成员方法操作,就是一个动作,一个功能。就是一个函数。使用关键字function方法名(), ?phpclass Student |0 oci I he st/s h 5 9/kss 3 rx 1public $name;public $agg;public $seK; nullA面上it * age* =/ nullF汕 sesJ = mull2、类名是不区分大小的C localhost/shWleon29-c/var_dump(neiA/ Student); $stu = new student;var_dunnp($stu);D: wainpwffif shMes3

8、cn29-oopl demoOE. php: 1 5 abject (5tiratrrt) fj?版上ij name - - null age1 = nullN咄21二 Zest - null3、每一个实例化,生成的都是一个不同的对象。r34/vardump(new Studen Sstul = new Student; var dump($stul);$stu2 = new Student; var_dump($5tu2);$stu3 = new Student; vat_dunip$5 tuB);(j U iocainosvsny/lessonzy-oapi/aennouz.pnD: am

9、pVwwveE59Messcii29_dopldemo02. php : 16. ob ject CStirdfet) LZI小他_hc name - milpublic- age1 二nullscxJ -. :nullU : w amp shby 1 a s? oftZS- sop I dan 402. ph? : LB.object(5tj而jrf)0/ufeTic namftR = mil_pisbh c- 1 age1 -? riull/ufeAc seK? =? nullD: wMipVw*rvsh59Missfln29-o0PII d/*02. php : 201object (5

10、门由nf)司jsuiiJjr 也就/ = nullp由liu age3 = nullj?而liw:昌旧广 :null如何为每一个对象添加不同的属性? 将每一个的姓名都叫了刘备class Student publicpublicpublicSname =刘备 $age;$sex;Pl Icalhct/h53/lc3w0 lot ah ost h5r/l c5son2 ? opl/d emoOi.pi-publicfunction baodg()echo 我要报到? /var_dump(npw Student);$stul = new Student;varduTip(fstul);$stu2 =

11、 nuw Student;工r if J atrvm / dt r i T X -1:anp niillp曲13金苫双 - nullI : kwanpkwnriftiVslSQV.lc:55Qa23-flipl &mj02. php; tQ. object (STudsjrf t J5尸曲工iu ?nsrap11 =划借publS c Jages - rujll户独Tic 后儆=nijll1:Ehbyi43i dim3L. p睚,:zu:pgLic XaiiE = string 划隹?自如4 jiuMjc ?aeP = null月面亡上?ssx? = iujII每一个学生是一个对象,每一个对象

12、的名称都是不一样的。 使用对象操作符-,访问成员(成员属性和成员方法) 对象- 成员访问对象$对象1 -成员$对象2-成员 访问成员属性( , $stul- mame, var_dump($st=刘备;n铝1 : amp www ish59 V1 e,s 5(Jn29-Q op 1V deim a03, php : 19 object (分口由rrt) l /jPufeJic 口沏/ = stride 刘普jpufejj c age = nulljpu&Jjc 各播,二 null前面没孑$stu2 = new Student; JstuB = new Student var,_durnp($i

13、Ujl 7 u;Js.tul-nanne -,刘备,: var_dump($stul);“3_仇呻($景吟; gr :h.inpfMl u勃:一得到一个对象$stu1,为该对象中name的属性(变量)赋值。需要找到当前对象的name属性。使用$stu-name,直接赋值。注意:1、操作其中一个对象的时候,对其他的对象没有任何的影响Ilsnip1 ww* string 刘舀 (Jer和蜴 gm 一 目自jiLtfiJjc ses:r = nullD:IflmiOS. pkp: SO:objerrt lifydfenf 1121pi2BJic nane = milpueJjc rnullp而m曰=

14、 - nullLi: ta,npSwisJi59MeEs milwin3g 二 null耕而* geat? liuLL2、对象的在内存上的分配访问成员方法使用-方法就是函数,调用一个函数函数名(),调用方法:方法名();2 echo t工 baodao();Fatal error: Uhcaughl Error: Call to undefined fun1 oopldEmo03. php on 1 ine 23Ettot: Call to undefined function baodaoO in D:wi23Call StackTine|MeiuaryFunction1 :O.OAOO35

15、6400mainj I )Baodao()方法在类或在对象身上。 先找到对象$stu-baodao();public function baodao() TOC o 1-5 h z 91L0 | echo 我要报到;LIL2L3$stul=newStudent;Sstu2=newStudent;L$stu3=newStudent;L6 var_dump($stulj $stu2, $stu3jL7L8 $stul-name =,刘备匕L9 var_dump($stul);)0 var_dump($stu2);)1 v白;?2 etho hbaodao();D:ampEh59lesson29*o

16、oj 1 demoO3. php: 16 . object (StE/d?/rf) Jp电江合?ifiajnemill? ageP - null 金 n sexP =z nullDAwampdw 八 115911esson29- o op 1A dem o03, plip : 19 : object (.Student) Zl更Ji。?rtame = string “刘备Clen玳*6)p斑亡age=null第演lie 9 sex? = nullD: wampwrwwsh59Messon29-oopl demoO3, php: 20: object (.Student) zl产血石/ ?nan

17、.e? = null1P证7 age? = nullp施工Gg的= nullD : wampwwwsh59M e 5 sor9_oopl dem oO3. php : 21 : object (ytudfeiTf) JO尸y&Zic ? nan.en = milp演工? age?二null尸而上匕写电f I二null我要报到该方法时属于每一个对象的到到到艮艮艮+1 XJAl要要要我我我echo $stul-lbaDdao(); $stu?-bardao();$stu3 baodao()当前使用实例化的三个对象,访问成员方法的时候,执行的都是同一个操作public -Function baoda

18、o(:echo,我要报到b,$stul - new Student;$stu2 = new StudenLj $Stu3 = new Student;va r dump($stulf $stu2t $stiecho 1T j$sLul-narnt = WU 召$stu2-name =关羽Jstu3-namc =,张飞; van dump(力tul$stu2j $sti巳匚h口$stul-baodao();$stu2-baodao()$stu3-baodao();夕曲玄u age =F null曲五岁 sex = nullD;W iiipwvwsh59 Uss QAZtroap 1 击面 W%

19、php J露abject f5u命)3FU&Hf才? name7 = nullp曲工g a mullT sots = null0; w:apwvw E.h59 Mess onZQ- p o nulljju&Jic Vsesc* = nullU : VwampU” shby Less。血 丁 oap LofJ4. php : 2Z:objectzlpubJiC, ILJlLt!7 - EtrirKg 关口T f工吗晦t阜0 jPU&Jxg-喀U 二nullJp 必h。f 5CK1 = tiullD : iwwi-Wvw .sh5914 s son2&-oftr 1 d# o04 ph!卫:nh

20、jimrt f而 _nf ”引口曲五(rnam屋 = itrickf 张V sn/f*幻p曲He age二:nullp曲疗畀ar二仃31我要报到 我要报到 我要报到伪变量每一个不同的对象,去访问baodao(),方法的时候,需要知道当前对象的名字。直接使用了 $name变量,出现了一个变量未定义的错误。L011121314 ISL6L7I QL O19public function baodao()(色亡hn $nmme.,要及“ =b$stnl = npw StudfHit;$stn2 = n?w Student;(stu3 - new Studarrtivar dumptJstulj $s

21、tujNotice: OndefiniEd vqri able: name in D:etowwCa1 Stock*TijkHtmuryFimtt iuoi10. QQQO3国汽220. OOQI35G12L4 uden t JbaDiJau ( )MBecho F jIstn1=,“7-Aflame =$,Jtj3-naiho -刘关张var* dumpCJstul, *5Lu2j Jstu3);4 echo ; Sntul-bdodan();SstuJ-baoriaoO;_ tui-jbaodaon:Notice; IMdefined variole;施ame in D二期raiwAmCn

22、ll SrnckTimctionT1W!llinnry1c. oooo3胧的2WlrJi )20.0010358776工 udEnt ffe a 二 dao I j要期到Notice: Undcflrvd vrariabl c; nrmn in D:whw)wsCall SlackRriTury-1flmc 12 lkil10. oooo3s9 非2L OQIO35872St udmtb 口匚.dao (_ j要报到在方法(函数)中,变量的作用域。在当的局部变量中,没有一个 $name的变量。public function baodao()($name =周瑜echo $name.要报到bro

23、 ;tul = nuw Student;itu2 = new Student;itu3 = new Student;r_dump($stul, $stu2j $stu3);?ho *;itul-nme =刘备itu2-name =关羽itu3-name = 张飞ir_dump($stul? $stu21 $stu3)jD. ksupshSS1 ezstn29-oop 1 d&m*04. php: 23:object SfucfcjTf) ZpuAJic name 二string 如昔口en骸A=d pitldc f age1 =5 nul 1F曲国用=nullD: TaapwTrilfi9li

24、Koii9-ooipiVdinio04, php:Z3:object (打廿的7f) W,就上S n丽/ = string 关羽 Gen用步S pi由He ? agen =) millpu&Jjc4 F saAr = nullD: tks*pww*kshSS11s&rt29*oip 1 dsm*04. php:23:object (51fLn&rrf) J5public 1 najiE1 =/ string 绯-V (1 0或h=& ageJ 二% nul ljPLa&Jj c * 3的* = null周瑜要 周瑜赛 周瑜要?恨到 惯到 展到使用global修饰的变量,是将全局的变量的引入覆盖

25、局部的同名变量。i c 1sexjic function baodaof)Efdbal %rag Iecho $narr0.要型到$tul = n电网 Student;Sstu2 = new Student;ige jlIlLI, jcx - null ; v11 ssqqt 1 dw,qQ4 , ph:利:vLjcct (fudtjTt)【日pt?2G ?r.amBn -: strive 关羽口an门斥G 三gstluII/Jtab Jj c r seK = nuJ 1工:liram?wrff*sh0-l电ss=24oopldflirio04. pkp :24 :obj&ct I:白ti/加

26、汨力/HJtJjjc -ram null?;ck - nullTXXXXX工X工fRly一寸要要尊调用函数,就可以取传递参数,哪一个对象方法了该方法,就将该对象传递这个方法里面puuiic isex;public function baodaafls)(/global $name;echo $-/自*/要报到卜广1314 1SsLul = now Student;$tu)-new Student;1 JhtuJ = new Student;var _duinp(15tul t $3tu2* til ui); 1920 echo itul-name =刘事;22 Sstu2-name =关羽;.

27、 var dimpflstulj $stu2f $Stu3); 25,、Bth口 chn :Sstul-baodao($stul);J.tu? -bflodanfjtu?); 1 J-.t j_i-haariJo($即“,九/【和ptiiJjr Hi.e! = . b.t i-羌Ty (IJ不说必IlT-11p添黑/ &,- nullr. Vvit trim - HraM issname =关而;8 istu3-name =光飞;,:var_dump(Sstuij SstuZ, $&tuJ);:: u2t- db 4vh :0& 101p 131objftiTt (STiu 1rMLig Wa

28、iH =trizi .张 7r 近幼加盟_ ,Gp. 一* i |,1 金 二02 什 口峰上心 ”B dip :.objectL/心中sfriftg刘声定炉DL长明胸/股匕底中理二二:酸命力特如心情黄巾9.vbRt )也帚山W-nwi =, Xt-rssif H和启0h=E”: wqAiriAW9Ui4a2*P,n%“CE fp m,fibjKl 南用J尸他iu 二二au?ttrijK 曲山en蝇j忙70 lefrha Zhn4jjtulbaodao();/Sthis-SstiHj,Jtu2-$tu2;t.1tu3bdodjo(j;lstu3;哪一个对象访问的$this表示的就是这样对象。p

29、ublic -Function baodao() .一/var_duifip($this)echo $thi5-nmme.要报到 tstul = new Student5$stu2 = new Student;$stu? = new Student;var_dump($stul3 Jstu2 $5tu3)$stul-name =$stu2-name 二Jstu3-name =D: wampwwshS9les5cm29- string 0: VWftmpwsh59Messon29-co object (SW由frt)4 子曲上jGn邮e = sAnngD : #amp 7fwwsh59lessc

30、oobject (5Yii曲nt) Jla必lir nan =A stri ng 刘备要报到关羽要才谈张飞要报至备羽飞刘关张va r_dump($ stul, $stu2z $stu3);echo ;(stul- baodaoM/$this = $stulj Jstu2-baodao()j/Jthis = $stu2; $stu3-baodao();/$this = $stu3;构造方法 construct是php内置的方法,当对象在实例化的(在new的时候),会自动去调用,在该方法中完成初 始化的操作。在实例化对象的时候,为每一个对象都设置一些初始的值IS 第国评一字王$stul = new

31、 Student;L7 1stul-name =刘备卜 $stul-ago = 3Q;J Jst j1 -sex =男;EO $51u 1- is_baodao - G;Ll var_dump$stul)j22 一b 实洌化第二个学生,斗 $stu2 = new Student;P5 $5tu2-name =,关羽$sLu2-age = 29;,7 |stu2-sex =男; s baodao = 0;z gjdu叩($m):B0k 实例化第二个学生52 $stu5 - new Student)B $stu3-namc - 张飞丁B4 Jstu3-agc - 26;卜sex =女 13$stu

32、3-is_baodao - 0;B var dump($stu3)jVJ locamosun、jessonzv-oopi/aemouo,pnp丁轴如口 .聃eA ih59l*o1 0O6 ihj 21object :5于丁成次:刃c n3meP工trin(削骨H忒住8?putJHh 岑口 一、i hi 刃pIic ses1 -筝tr:i string 关口才(7are - int 29产出Z二e7airing. 判jjufcJjc is_baolaj二)mt 0D: 硼。1池八口招口 vulVdvnwX. flip:37: object Stuasjit JOFLiJH# n卸式- Etrin

33、 二张飞/1ft站印= iM 2s*uEl?Jc 蓄es7 = Ktrin p3工Wg isbaoiao=)int 口观察以上代码。发现,1、有一个属性的值在最初始的时候,永远都不会发生变化。可以在类中,直接为该属性设 置一个默认的初始值。1 ?plip.cldss Studentpublic Inane; public $name.)S 实例第一学生b $stul = new Student;$stul -name =,文备r一 iiii ;p通上It;,雷= mlrijtg 奥旬71 L_li&jaaJ 二+ mt UD: VoTijM4s5sn2fl= cp kdsme6, php 23

34、 ntijerrt (,(U&jtT目尸uMitr name ;: slr.ng,天号 fl5威*身声时JLt 才 * a0&iiLt 2.:/小XlE)理-里。事2小田,岫打伊 Y队batriao=)int -B Vrar* ww =hK 1 e E3riZS- c dL IdamdEE. php 37cib 5(口圭1力)4fBll心 n3Ti& = string 张飞士上5计出,)Jii/ijjf 逑葭= ist P而= Eiriie 女珀P母后baodhg* = ini 02、在初始化赋值的时候,所有的操作都是重复的,可以将该操作封装成方法,再去调用该 方法即可初始化操作public

35、function init()为每一个成员属性赋值。调用该初始化的方法F / r 产,- Z 工 n_UO3U6J D刘备:30j,男); var_dump(tstul);执行该方法,完成了初始的操作。力初始化操作public function init($namej $age $sex) ($this-rame = $namej$this-age = 附;$thi&-sex =3、如果可以在建造的时候,就可以完成初始的操作。Php内置一个方法,可以在对象实例化的时候,自动去调用该方法。构成方法“杓适方法public -functionconstruct()(var_dump我被构造 了);-

36、 Lv-Bl loname = ndme; lthis-age = idgp;$this-sex = Sspx;fistul = new Student;Cd1 Slock*TlXcmityFuiK:ti(Kl10, OOOD354744fealn) ( J20, GOOD弘山STi*dj&r4-_const m: t ()Mhnins: Kibeii% arvwm* 1 for Student *2constnict() calledul9pL4jjwjO7. ptip ihi 1 iik- IS thfid delirujd in 口:、癣.匕wikiZgf可在实例化的时候,如果类中存在构

37、造方法,并且需要传递参数,这时候,需要在类名的后面 加上(),并且写入实参“构造方法public function _ construct( 一vmr_du叩(我被构造Sthis$this*sex =- 电冷弱肝/ $sex)4 jitul - neuStudent孙猿力var dump($stul);$stu2 = ne*StWnt关羽 23 ,勇,);var_dump(5stu2);= neStudent张飞28, 女,);v dumptu3)j+ C (P I ocalhosl sh 59/ les son i 9-oopl /demoUU:廿amp;si廿卜工59%19工4MS一二IE

38、fennClT php 1abject :打曲Ej 7jupJjf nanij:* ;, ah iiix 1 丸1* 白 scnfTA匐j5afrJjF r agff ini 5j?u&Jjr ,sese 1 -: string 舁J: V ThJ* lilSqU e- ruTj 】tkfvHT pl 21iilijiRctW产丽力u即二 工中了汨彳无羽TtoSJF曲lie+殁殳, - snt 2&Jf困U 眩string 更。赵看生=D J四制中1列厘1*9UHK中心=/的力MT 的 弱abject的E司平曲11 拿 nsriE: -.- Mtriy 张飞 (i函Q25)A岫lit, jnt

39、 看j?upJjr rscL lUiitK 文打小nrfiW,构造方法的作用:为当前对象做初始的操作。实例对象也叫作构造对象。析构方法 _destruct()和构造方法是相对的, 构造方法时实例化对象的时候调用,做初始化的操作,析构方法时在对象被销毁的时候自动调用。销毁对象:对象是一个数据。数据保存在一个变量中是将student的一个类的对象,作为数据赋值给了$stu.销毁该变量。析构方法in _desiructpublic function _destruct0工re&Durc = irr5gecrGJtetruecolor(100J 1。); Ipublic function d-ttru

40、Et。( 销毁资源irridgadet lr*oy (jLhis-Xysourcy);)$ irrg = nw I mg;var _dump($resourep) unspt($ irng);2、如果不手动的去销毁对象,在脚本结束之后,析构方法也会被自动调用切啊力espublic function _destruct()echo r in destruct1:16)17 1819 $5 tu = new 0tLident ( 刘备)j1 oca 1 h os V? h591/l esso n X-jVC Iocalhost/sh59/lesson29oop20 /unset($stu);这是第

41、21行21 echo ,这是第21 行(br 1;in _destruct22因为php中变量是有最大的生命周期。脚本执行结束,会将当前脚本中所有的变量全部释 放,会触发到析构的方法。4、向栈内存中存在了四个变量。先进后出,在声明变量的时候,一次 a, b, c, d,执行构造方法。当脚本执行结束的时 候,栈内存,将d,c,b,a依次去销毁,依次触发析构方法。echo. .被析构了 cbr;new new naw newStudent(A); Student(B); Student(C) Student(D);Pl I oca St ost/sh 59/1 essor X_/ :- C O I

42、ocalhost/sh59/lesA被构造 啾构造了 C被构造了 D被构造了 D被析构了 C被析构了 B被析构: A被析构二O lQtaltiQ5t/h/lesson30-aop2/dernQ01,phf我被析构了$stu = new Student unspt(Stn);echo ;甫 I or a I bh 5 Q/l fs snrX析构方法public function _destruct()( 一I echo ,我被折构了19 *011 $stu = new Student;12 /unset($stu);13 echo 在对象被销毁的时候,自动调用1、直接删除掉对象的引用2、脚本执行

43、结束了P Iocalbti5t/S-i59/Ie5s0r- 9我被析构了析构方法public function _destructf;、pi lip class Student析构方法public function destructt)echo 1我被析构了;3、为保存对象变量重新赋值析构方法public function _destruct()1一|ecR 我被析构了匕j1【,( C Ioc(jIhost/sh519/Itsson30 oopZ/dcmoOL.php他对于料了4&tu = new Student;$stu -ij/unset(Jstu)j echo 1;只要某一个对象的引用被

44、断开,都会自动调用析构方法。例1:使用面向对象的方法完成学生报道系统1、分析该系统需要几个实体? ? 学生,学校,班级需要三个对象。 设计三个类型,设置类的结构。f 学生类class Studentl 17 学校类 class School stririt y苔仃切W尔田/titJLl; r stTJjrbd - int 1UjJt/Jjc ?5tiJum(mt?y,1H :方力口1里彳iq|*-iiL ph 冷it. 4, *1 g: J objKt口 Ior M,Q T / / 地5Z, pUiii虹皿 flftlVJi F ijniggwy8int1 A_pati_Tr sdv=tTi

45、=vrv aI#8DP0 - .1门山1 S 附忖关羽沙虹st总榭声方;甘eiuja = , im P了由万平ffTi1aBJian可=- sat -T00CJ =sbjiwt (rfrjnr) Jntq._nmt, = iren4 弓,r fj wyrtA=r.fi.lF心金工仁 , srturiD8 = in.1 EjdLJjC MlLL_itiCtk4- int 1. UIpublic function baodao()$this-is_baodao = 1;echo $this-5tu_name要报道;I学校登记学校笠记public function dengji($s)学校系统里加了

46、一个学生echo 欢迎1 .$s-stu_naiie. F-5feSIJthis-sch_naiie T;Jthi-&ch_stuL J = Js-stu_nama; 一 一学生缴费宇土8K员public function jiaofei() echo $thi5 = Ktu n3me.需要缴费 16200Vbr ; Sthis-stujnoney -= 16800; 学校收费三仇仅贺public function shou-fei() recho $this-sch_name1 收了 168001;$this-sch_money 4= 16800; 学生选班学生选班public functi

47、on xuanban($t)echo $thi,-stu_name.选择了 ,$t-team_name, ; $this-stu_team = $t-tearn_name;班级录入录入public function luru($s)$this - stu_c:oijnt += 1;$th i s- st u_in fo = $s;) 例子:数据库操作类将多个操作封装在一起,设计一个数据库的操作类,工具集:将所有的功能全部组合一 起。1、分析一下数据库操作类,需要哪些属性主机名,端口号(3306),用户名,密码,数据库,字符集class MySqlDB 成员属性public$host;主机名pu

48、blic$port;端口号public$user;用户名publihQ5t = 5pptians hast;tthis-port -$this uscr - $ Lhs-pjss = $this-dbname $thi s-rhar =)toptionsfport;Jrjprwn$, U5cr J;SupLiunspassJ;=JoptionsdbnameJnpticnsf1 char1;( C 欣 Hh 口中iC-co|LJ/r JvqlUJ: Vt-siplies szdJ/ oil B. cl az s.二 hp :即object (如liI/M iPiAlic host 就门博T工&

49、Ol 仃打/附刈 rtriM ?33QS1 0”注吧步辿Eg 9日 一 :stri7 root - (J A.1罩由h pass 二tr二x U室 步岫上在 rdbnsr = sLrifcE shW jriciiJjctLr j Lrt B (1讲告知档图话II3、在构造方法中,去完成数据连接,设置数据库,设置字符集的操作 连接的操作/f注旗数据序dllflk - fwy4qll_comwcr(5rhK- host:tthLs- port, $thlcur 叩“G;“却轩是否连播我功if (SSlink) J this - rrorMess = piR.dft( .n7sqli connect

50、 inna(). ; . n vssli ccnnec t trrar() 上 eBe (this-Link = $link;连接时候生成的数据,使用属性保存起来力运行时产生的属性public Slink;保存数据库连接成功的数据public JerrorMess;保存错误信息Ifthis-rrarPle$ = ERROR(1 +mysqj connect errrwf*) : *mysqi _ccnnect 4*rror(); 口与e (this-link = Slink;以上的所有的操作,都是一个独立的功能,会将独立的功能,分离出来。添加连接数据库的方法/*走接数据库的方法pub I i.

51、c f unction connect()($link = mysqli_cDnnprt( hi s-hnst:$this-port Jthis-xjserj $this-pass);判断是否连堂立功if (l$Link) lthis-errorMeis - ERRORmysqliconnecterrno()*):J.fflysqliconnecterrc elie lLhib-link - flink;添加选择数据的方法public furictian selectDt()if (IMy-qli_骗lt_db($this-linkJ3bfi-) Sthi5-errorHess 乍聊。帆二。5

52、(11:1_电“锹1($冰$11口10-);y5qLL_err5($thilirik);)1 J设置字符集*科置字符集*/public function settharsetO(if fInysqli set _char5et(ithis-link, $this-thar) errDrMets = ftROR( .ByaqlLrrnizi(?this-linlc) . .ny&qli &rrnr(5thi&-link);设置初始值Hhis-Miost = $thport lhi* tisen - $lhh邓总” xJbnjmcJLh_b - Ltidr =iaset(*f)tionshhost

53、 F (option心t ! 127,6,0,1,; isiet(toptians por t) ? 4uptionspor t : 3J06j issct(ttjpticris user1- ) ? luptiuns usn J out;i&sct($oplionsFpass) ? SuptiunbpjstFJ :1;=isset(5oftiuritldbnjmc?J ) F tupLitns bJLndine J :;is&et(fcourt +)|)“析构方法pubJ.it Function destructf(/刑除一个对象,数量闻L )争当1 - new Stud&nt;fo = n

54、ew Student)a_du叩(Ssl.$32)口: 5ml 1r h siJ59M wociSC - DcpSXdenoCIS pt3: 2.0 :object ISiudirnij Jwbh S ticurii.!i jlI IBrgAnw IsliS淤3, c-ss*n30- ocip2deno(2 pAgs : 20-bjEdEfudkrrt.卫盘 L c criinl i nt L是操作的每一个对象上的属性,成员属性是属于对象的ShiMrit 类声明:ScouniL2、声明一个静态的变量3、$S1$s2$s3/5this-count + static $count; $count

55、+;echo $count;)I析构方法public function de (删除一个对象.)=new Student;=new Student;=new Student;在实例化的时候,的确可以统计学生数量。力析构方法public function deslr uct()“删除一个对象.数量减1Jcountecho $count;)si = nex Student;locairosT/sny, le5so r-。 Iojlhot/sh59/le弱口nmCP。0p2/dem。123D : wampsh59l essoil30- o op2 dem a)2, php : 24 : ulijec

56、L f Jltrnfem)力城 count =) int 0D: wampwwwVsh59l eeson30- o op2 V dam o)2. php : 24: object(3于u曲)同? cotirrtP int 0件TineJlcmorytunct inn10, 0020犯53附GnairiJC )20. 002D3561MStu dent 一_d 白struct ;Cnll StckNciticTVr: TTciclirfi rji*i rariible: cniMit in D:rtaiNotice: Undefined variable: count in O:wa甘11 St

57、ackLI在删除变量的时彳It无法完成,static定义的是静态的局部变量,在其他的函数中无法使用。需要可以被每一个方法都可以共享的变量。每一个对象都可以操作的变量。定义一个全局的变量/echo Jcount;$GL0BALScount)Jcaunt = 0;$bl = new SLudenL;$s2 = new Student;$s3 = new Student;$s4 = new StudenL;var_dump(Ssljls2);echo (count;echo iat JD #8mpw*wsh59ltssflti3(-oop2dtrioQ2.php .31.object (Sf廿总才”

58、习 public 1 count- int 04在php语法上完成了业务的逻辑。在业务逻辑本身是不符合面向对象的编程思 维。需要找打一个可以被每一个对象共享,在每一个方法中使用,并且需要在逻辑 上,符合面向对象的思维。只能在类里面找。类的静态成员是属性类的。静态成员:分为静态成员属性和静态成员方法。声明静态成员加上一个额外的关键字 static普通成员前面静态属性:xI pup2 class Studentpublic $namA;public static $stu_count = 0;public functionP Iocjlhost/sh59/l50r XO910L112public

59、functionC Iocalhost/sh59, Iesson3 J-oop2/demoCP: vnpwwwxhS9ltiphp: W: object Student) 7Fnanie =; null15L6 ) 1 $stuL8 var=new Student; ump($stu);不属于对象。静态方法:rpublic static function fl()I )访问静态成员对象访问:对象-成员 类访问静态成员;:静态访问符,范围解析操作符类:静态的成员;访问静态的属性vdr _uurTip* Lu/ 3echo Student:$stu_count;需要在属性的前面加上 $,访问静态的

60、方法类:静态的方法 TOC o 1-5 h z b|public static function|echo,静态的方法;。?)$stu = new Student;var_dump($stu);echo Student:$stu_count;echo *;Student:打。/f Q I oc a lh ost/sh 5 9/ksso rXQ O localhost/shSQ/lessonOD wanpwwwsh39MessQn30-demq03, yhp: 3object ( tucfejTf) 7pu&Jjc name = null0静态的方法注意:1、在类的里面也是使用了类名去调用了静态

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论