PHP头条
热点:

PHP面向对象(一),PHP面向对象(


self-----------代表类本身,只能在当前类内部的函数中使用,代表代码所在的类;

$this----------代表当前类的当前对象(在对象调用的方法中使用$this 就代表哪个类的对象),在子类对象调用继承自父类的方法时,方法中的$this 是子类的对象;;如果是在static静态方法中,不能使用;

static-------作用1:静态变量; 作用2:静态方法;静态方法中不能调用非静态方法;作用3:调用的是static所在的这个个方法,哪个类调用这个方法,static就代表这个类,作用4:静态绑定;

parent------代表父类,


类中只有个三种成员:属性,方法,常量;

除了这三种成员外,其他的如流成控制语句if ,while,for,case等都只能在函数中使用;



类中的属性 前面要加上var  ;类之外的变量不需要加var ;



访问修饰符:public,protected,private;----不写默认是public;


调用:对象->属性;(不加$)

            对象->方法;

        




注意方法4 不加括号;




对象的变量进行普通传值得时候,复制的是对象变量中所存储的对象标识符;对象标识符指向真正的数据;




-------------------------------------------------------------------------

对象的属性可以定义不赋值,不能是表达式和变量,可以是直接值和常量;前面必须加上public或var;

变量必须定义的同时赋值;


定义属性时 $前面必须要加上var 或public,

在函数中计算的时候用  $变量名  就可以了;

定义属性的时候要加var $或者 public $;在调用属性的时候不要加var $或者 public $;


           pow(9,0.5);----------------9的0.5次方


$this 是一个伪对象,代表当前类的当前对象;


-----------------------------

------------------静态属性-----------------------------------------

静态属性隶属于类本身,同一个类的所有对象共享数据;



静态属性的调用-------------用类名去调用********类名::$静态属性名;

静态属性的调用-------------用对象去调用********对象名::$静态属性名;



----------------------通过对象也可以使用静态属性--------------------


获取对象所属的类名:get _class();


只是得到一个类的名称,并不能得到这个类;


----------------静态方法-----------------------

静态方法属于类,所有对象共有;

静态方法的调用-------类名::静态方法名();

对象亦可以调用静态方法------对象名::静态方法名();

静态方法中不能使用$this;静态方法中不能调用非静态方法;


类调用一般的非静态方法或静态变量,只能在自己的类中调用,其他地方调用会报错;类调用静态方法可以在任何地方;

$this----------代表当前类的当前对象;如果是在static静态方法中,通过类名调用静态方法不能使用$this;静态方法是用类调用,此时没有对象;



静态方法中不能调用非静态方法,静态方法中可以用self(代表当前类),通过类名调用的静态方法不能用$this;一般方法中可以用this(代表当前对象)


==============构造方法=============



new的时候,会自动调用__construct($n,$a);如果定义构造方法,则调用时的实参必须和构造方法的参数个数一致;

如果不实现__condtruc()构造方法,系统会默认执行父类的构造方法;如果父类没有,就一直往上找,最终找到系统的不带参数的构造方法,那么就对结果没有影响;

$p=new p("lisi",18);//用构造方法创建一个对象;


==============析构方法=============



析构方法不能手动调用,在销毁对象unset()时会自动调用,析构方法可以用于清理一些在PHP代码结束后不能清理的数据,如生成的文件;

程序结束的时候,所有对象被销毁,会调用析构方法;销毁对象unset()时也会调用析构方法;改变对象变量的值,原来变量指向的对象没有被变量指向,就会销毁对象,也会调用析构方法;

function __destruct(){


}


PHP程序结束后,PHP所有的对象自动销毁,析构方法是PHP内部的垃圾回收机制;




总结:

子类中没有定义构造方法会自动调用父类的构造方法,实例化子类的时候会按照父类的构造方法进行;

子类中定义了自己的构造方法,则不会自动调用父类的构造方法,但是可以手动调用parent ::__construct();

析构方法和构造方法用法相同。


------------------类的继承-----------------------


类的继承:   Class A类  extends  B类{


}


访问修饰符---------------------------------------------



上面的例子是子类访问父类的属性$p1;

下面这个例子是父类访问子类的属性$p2,但是不常用;要注意:



protected收保护的,只能在当前类或者有继承关系的上下级使用;



private修饰符只能在本类中使用:



parent,self,this--------------------------------



parent :  : 父类的方法;

self :: 自己的方法或者继承父类的方法;

$this ->自己的方法或者继承父类的方法;


系统有默认的构造方法:function __construct(){   },如果自己在类中实现 了构造方法,就会覆盖系统的构造方法;

子类中没有定义构造方法会自动调用父类的构造方法,实例化子类的时候会按照父类的构造方法进行;

子类中定义了自己的构造方法,则不会自动调用父类的构造方法,但是可以手动调用parent ::__construct();

析构方法和构造方法用法相同。








//=================链接数据库==============




-------------------重写override-------------------------


重写针对的是非构造方法和非析构方法;

将从父类继承下来的属性和方法重写或者覆盖;覆盖是建立在继承的基础上,如果没有继承,谈不上覆盖重写了;



访问控制的权限不应该低于上一级的权限;

重写的普通方法的参数个数必须和父类的参数个数一致,参数的名字可以写成不一样的;

构造方法可以重写,参数也可以不一致;

私有的属性和私有的方法,不能覆盖,但子类可以定义和父类同名的方法和属性,但是只作为当前类的自有属性;


-------------最终类和最终方法----------------------------


最终类不能被继承,最终方法不能被重写;


---------------------设计模式-----------

工厂方法:


file_exists--------判断文件是否存在;

单利模式:

关键点:private 构造方法,private clone方法;



构造方法私有了,只能在类内部使用,外部new的时候就不会调用,这样就创建不了对象;


clone 是运算符,复制一个对象;new也是运算符;他们两个的优先级最高;


注意:上面 的clone $o1是运算符,不是类中默认的clone方法,在做单利的时候必须把默认的 function __clone(){}方法private,执行clone $o1 时,类中默认的clone方法才不会执行,否则,就会执行系统默认的clone方法;

构造方法,clone方法都叫魔术方法(就是系统默认的隐藏的方法);




========抽象类,抽象方法===========




抽象类专门做父类,子类继承他;



=============重载是在同一个类中;重写是在不同的类中;





上面:$o1->p2=2不存在,先调用下面一个set,然后不不存在的属性和值存起来,然后$o1->p2不存在,又再调用上一个get,从而得到数组中值;


方法重载:使用对象调用一个不存在的方法时。

在类中可以调用类外面并且不是类中的方法。





==============接口----------------


接口可以实现多继承,类不能实现多继承;接口的作用就是统一;

类实现接口;


一个类只能继承一个父类,但是可以实现多个接口;


----------------自动加载技术和克隆技术--------------

第一种方法:


第二种方法:



---------------对象的复制:


浅克隆:克隆的是非对象非资源数据;





深度克隆---------------

PHP中默认克隆是浅克隆,要想一个对象的所有属性数据都被克隆,就需要使用魔术方法__clone()里面实现深度克隆;



对象的遍历:

对象遍历只能遍历属性:


自定义遍历(局部遍历):




------------------------PHP内置标准类:

内置标准类:new stdclass();


对象类型转换-------其他类型转换成对象:




纯字符下标的数组才适合转换成对象。数字下标的数组转成对象,不能通过数字下标访问属性;


标量转换成对象:


PHP是弱类型语言,无需为变量指定类型;PHP中只能对对象,接口,数组,函数进行约束;

 

类型约束:


get_class(对象)也可以获取类名,但是必须要有一个对象;


==================数据序列化:===============



序列化:$str=serialize($变量);

将文件存储起来:file_put_contents("文本文件路径",$str);





反序列化:

 

 

类和对象的系统函数:




















static 的不同用法:

 

多态:




www.phpzy.comtrue/php/20241.htmlTechArticlePHP面向对象(一),PHP面向对象( self-----------代表类本身,只能在当前类内部的函数中使用,代表代码所在的类; $this----------代表当前类的当前对象(在对象调用的方法中使用$this 就代...

相关文章

    暂无相关文章

PHP之友评论

今天推荐