您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 燕十八PHP面向对象视频教程笔记(面向对象部分)
107-面向对象的哲学面向对象PHP5中非常重要的一个概念面向对象的哲学面对对象的概念(类是什么?对象是什么?)面向对象的基础语法---声明类如何创建一个对象没有面向对象之前,我们能否开发程序?答:当然可以.比如c语言,没有类与对象的概念.被称为面向过程的语言.面向对象与面向过程,同样是一种编程范式.回顾以往的代码每一个步骤,每个分支,都是我们考虑进来,并加以控制的.如果步骤/人物角色/分支特点多的时候,程序庞大,不好维护.而从开发角度讲,无论你多少分支,多少步骤.这1W或2W个步骤,也是在我们的讨论范围内的一个确定情况.=============比如一只鸡,他有可能来叨菜叶,也有可能不来.这个事情,就没必要在你创建之初定义下来.定义一只鸡这样的一个对象,他有一定的智商,有一定的功能,比如叨菜叶.至于去不去,受环境的影响,比如菜叶的大小,园子的远近....就是说:作为上帝,创建有功能的对象.对象有一定的功能,对象与对象之间在其功能范围内,相互操作.至于做哪些操作?比如公鸡可以去吃沙子,可以去吃菜叶,也可以斗架.?php//01.php/*从地址栏接收gender参数,男/女模拟商场迎宾的行为:如顾客为男:则招呼先生好;如顾客为女:则招呼女士好;用地址栏的参数来模拟顾客的性别.*/$g=$_GET['gender'];if($g=='男'){echo'先生好';}elseif($g=='女'){echo'女士好';}else{echo'妖猴!';}/*这个程序,对于可能性的判断,都被我们详细的讨论到,并为每一种可能准备的相应的操作.*/??php//02.php/*张三张三的智商张三打招呼车车撞人以往我们分析:收到什么数据做什么判断各自再怎么处理....我们把张三看成一个对象张三有智商---属性[名字]张三能打招呼---功能/方法[动词]车也是一个对象车能撞人---功能/方法[动词]*/classMan{public$iq=100;publicfunctionsay(){$arr=array('早上好','晚上好','尼妹呀');if($this-iq=100){echo$arr[0];}else{$i=rand(0,2);echo$arr[$i];}}}classCar{publicfunctionhit($people){$newiq=rand(50,110);$people-iq=$newiq;}}$lisi=newMan();$QQ=newCar();$lisi-say();echo'br/';//撞击$QQ-hit($lisi);echo$lisi-iq,'br/';$lisi-say();echo'br/';$lisi-say();echo'br/';$lisi-say();echo'br/';/****这一道题的目的---是让大家换个思维,换个面向对象的思维来看待问题.至此里面的语法,你不懂,没关系.****/?108-类与对象的概念先从生活中的角度来理解面向对象类的概念对象的概念以女娲造人为例,女娲看到人世间冷清,于是在水中照见自己的形象并在自己的形象基础上构思,加上2条腿.动手捏泥人!思考问题1:在泥人产生之前,先产生的是女娲在脑子中构造的人的形象然后根据形象来捏人.思考问题2:捏的人都有一个什么特点-----和人的形象相符换句话说:人的形象是抽象的,用来说明人的共同特点的.而每一个人,是具体的,且符合形象的描述.类:就是所有对象共同点的一个抽象.就是一个----制造说明书!对象:就是根据说明书造出来的具体对象.====我买过一个四层书柜,原以为是现成书柜,送来货后发现是说明书+板子+螺丝说明书上说清了A板B板....如何结合并画了一张图,就是组装成功后的图.我照着图--最终组装一个书柜.说明书---就是类.书柜-----就是对象.???如果原材料非常多,我造1000个书柜,需要几份说明书答:还是1份.===========如果我们在PHP中用面向对象的话====想造N个人的对象,需要先:创建人类,且只需要创建1次.然后再:由类创造人的对象,可以N次.=======如果声明类====对象有什么?属性(身高,体重,姓名)对象能干什么?功能(哭,笑,招呼,吃饭)我们用变量,函数来模拟属性/功能我们把{N个属性+N个方法}打包成一个东西,--就是对象.其实就是N个变量,N个函数,打包到某个对象里.这个对象可以使用这N个变量,N个函数?php//03.php/**人类声明语法:class类名{}这个类,没有属性,也没有方法**/classPeople{//public的含义先别管public$name='nobody';public$height=30;publicfunctioncry(){echo'呱呱坠地';}}/****有了类,就可以产生对象了.如何类来产生对象?new类名();这个语句返回对象返回的对象赋给一个变量****/$a=newPeople();print_r($a);/***这个a是什么,a对象就是一个箱子,里面装了N多属性和属性值$a={name:nobody,height:30}可以看出$a是一个复合数据,我们要想访问$a的名字,即$a里面name的值,我们可以怎么访问呢?答:肯定是得通过$a来访问了.$a-属性名,就可访问该属性的值***/echo$a-name,'br/',$a-height,'br/';$b=array('name'='nobodyB','height'='40B');echo$b['name'],'br/',$b['height'];echo'br/';//====对象调用其方法====//$a-cry();?109-属性与方法的注意点?php//04.php//声明类的时候,注意点./*1:关于属性值,可以声明属性并赋值,也可以声明属性先不赋值如果不赋值,则属性的初始值是NULL2:关于PHP中的类,请注意,属性必须是一个直接的值是8种类型任意的值.不能是:表达式1+2的值不能是:函数的返回值time();这点和java不一样.*/classHuman{//public$age=time();//错误//public$age=1+2;//错误}$a=newHuman();echo$a-age,'br/';classPeople{public$age;}$b=newPeople();var_dump($b-age);echo'br/';??php//05.php//方法的注意点functiont(){echo't';}//这个t是我的自定义函数t();//我再定义一个t函数/*Fatalerror:Cannotredeclaret()(previouslydeclaredinD:\:5)inD:\(){echo'tt';}PHP中函数不能重复定义这点和js不一样*//**time是系统函数,因此你也不能再次定义functiontime(){}**//***但是,类中的方法,可以理解包在类范围内的函数和全局的函数不是一回事,因此,可以重名***/classclock{publicfunctiontime(){echo'现在的时间戳是aaaa';}publicfunctiont(){return'内部的t';}publicfunctiontime2(){echo'现在的真正时间戳是',time(),'br/';//注意此处调用的是系统的time()函数echo$this-t();//注意,此处调用的是自身的t函数;}}$c=newclock();$c-time();echo'br/';$c-time2();?110-构造函数详解?php//01.php/****燕十八公益PHP讲堂论坛:微博:频道:88354001****//***====笔记部分====构造函数__construct()***//****代码部分****/header('Content-type:text/html;charset=utf-8');classHuman{public$name='李四';public$gender='男';}$a=newHuman();$b=newHuman();$c=newHuman();echo$a-name,'br/';echo$b-name,'br/';echo$c-name,'br/';echo$a-gender,'br/';echo$b-gender,'br/';echo$c-gender,'br/';/*在上面的例子中,体现出类是模板,对象根据模板造出的实例.但是,模板是固定的.因此,导致造出来的对象,各种属性值都一样.这显示与现实生活中的逻辑不符.比如:新生儿,性别姓名体重这些都不一样.同一个模板,不同的对象这就是一对矛盾?答:___想一想:为什么新生儿有的是男,有的是女?答:因为,染色体不一样.x,y-男x,x--女造对象时,传x染色体,还是y染色体,都有可能这就说明创建对象时,可以传参在类中,有一个构造函数,就是用来初始化对象用的.利用构造函数,你有机会操作对象,并改变他的值*/??php//02.php/***====笔记部分====构造方法__construct();注意前面是两个下滑线构造方法的作用时机:每当new一个对象,就会自动新new出来的对象发挥作用newClassName($args);$args参数原样传给构造方法;然后构造方法,用参数来影响新创建的对象当然:newClassName()也可以不传参但注意:$args要与构造方法里的参数一致.***//*classHuman{publicfunction__construct(){echo'紫微星下凡了!';}public$name=null;public$gender=null;}$a=newHuman();*///构造函数的传参,并影响对象/*classHuman{publicfunction__construct(){$this-name='李四';$this-gender='女';}public$name=null;public$gender=null;}$a=newHuman();$b=newHuman();$c=newHuman();echo$a-name,'br/';//李四echo$b-name,'br/';//李四echo$c-name,'br/';//李四*/classHuman{publicfunction__construct($name,$gender){$this-name=$name;$this-gender=$gender;}public$name=null;public$gender=null;}$a=newHuman('张飞','男');$b=newHuman('空姐','女');$c=newHuman('孙二娘','女');$d=newHuman();echo$a-name,'br/';//张飞echo$b-name,'br/';//空姐echo$c-name,'br/';//孙二娘??php//03.php/***====笔记部分====析构函数:__destruct()构造函数是在对象产生的时候,自动执行析构函数是在对象销毁的时候,自动执行构造函数就是出生时啼哭析构函数就是临终遗言对象如何销毁?1:显式的销毁,unset,赋值为NULL,都可以2:PHP是脚本语言,在代码执行到最后一行时,所有申请的内存都要释放掉.自然,对象的那段内存也要释放,
三七文档所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
本文标题:燕十八PHP面向对象视频教程笔记(面向对象部分)
链接地址:https://www.777doc.com/doc-2303941 .html