PHP 面向对象编程笔记 (麦子 php 第二号)

看似是把富有相似特性的靶子归纳到一个好像中,类即是同样组同样属性与行为之目标的联谊。类和目标的涉:类是形似对象的讲述,先出像样,再发生对象。类是对象的虚幻,对象是接近的实例。通过class关键字创建类,成员属性是以类似吃声明的变量,一个近似可涵盖多只分子属性,成员属性可以生默认值,也得以无默认值,如果有默认值的讲话,值不可知是变量、表达式、函数和方法的调用,只能是一个价。在相近中宣称的艺术,就是成员方法,一个近乎可以涵盖多独分子方法。实例化对象:通过new关键字

  • 接近名
    来实例化类,实例化类的结果产生对象。每个对象还是独立的,不一致。在类似外部,通过对象引用名->属性,访问还是设置成员属性,通过对象引用名->方法,调用成员方法。在接近中,通过$this->属性名,访问成员属性,通过$this->方法,调用成员方法,$this代表时的对象。

php内存分配:php内存分为及时几组成部分:栈空间段:空间小,CPU访问速度快,适合存放代码中即创办的片段变量(临时数据寄存,用于存储占用空间不更换,而且比粗的数据类型的外存段:整形,浮点,布尔),栈是后进先出的组织。堆空间段:用于存储进程运行中动态分配的一个外存段,堆空间的分寸是休定点的,堆内存的深浅可以展开动态的恢宏或减少。可以就此堆来存放数据长度可变,占用内存比较深之多少:字符串,数组,对象,都是储存于积内存段中。代码段:代码段用于存放有可执行文件的操作命令的,它是可执行程序在内存中的相同段落镜像,代码段需防止以运转时吃黑修改,所以仅同意我们读取操作,不容许写入。函数就囤在代码段遭遇。初始化静态段(数据段):用来存放可执行文件中就初始化的全局变量,也就算是储存程序静态分配的变量。在函数中之所以static关键字声明的静态变量(局部的),保存在初始化静态段受到,还有类的静态属性与静态方法也是保存在初始化静态段被。对象在内存中凡是怎来分配的:在用new关键字创建对象后,对象的援保存在栈里,对象保存在堆里,对象的主意保存于代码段里。

php的构造函数:__construct,通过构造函数来好目标数据初始化的工作。在每次用new创建新目标的时光,首先会自行调用类的构造函数。可以当构造函数的参数中为类的成员属性赋默认值。

php的析构函数:__destruct,析构函数,不克带有参数,析构函数会在靶的保有援被删或显式的绝迹之前见面让调用。通过析构函数放资源,包括结果集,数据库连接等。给目标引用赋值为
null 可以显式调用析构函数。

面向对象的封装性:封装就是把我们的积极分子属性与分子方法封装起来,封装的目的在于,不思让类的外场“看到”。使用访问修饰符可以实现封装。封装的好处在可吧不思量暴露被类以外的特性与方,全部还藏匿起来,把看似里的细节无思给旁人见到,这是就是可针对成员开展访问控制。php5中之老三栽访问控制修饰符:public,默认值,在接近的中与表面(通过对象看)。protected:受保障之,在看似的中间还是子类中可以拜,但在类的外表,通过对象无法访问。private:私有的,只能在类的里进行访问。

 php魔术方法:(自动调用)__construct() 
__destruct()  __set()  __get()  __isset()  __unset()     
__set($propertyName,$propertyVal):在类的外表(通过对象引用)对私有的还是吃保障的还是不定义之成员属性进行
赋值
的时节会自行调用。__get($propertyName):在类的标(通过对象引用)对民用的要吃保障之抑未定义之积极分子属性进行
读取 的下会活动调用。

 __isset()
:当于相近的外表对民用的,受保障的抑未定义之积极分子属性进行isset()或者empty()调用时,会活动调用__isset()魔术点子。

 __unset()
:当在类似的表对私家的,受保障之抑不定义的成员属性进行unset()调用时,会活动调用__unset()魔术点子。

使用extends关键字贯彻连续,PHP是单继承的,继承可以兑现代码的胜只是重用性,高可扩展性。父类–基类–超类。子类–派生类–扩展类。

由此parent::关键字于子类中调用父类中于还写的措施。如果子类的重大字和父类一样,相当给子类重写了父类的方式。

父类中之
final 方法无能够于子类重写。

在函数中使用static关键字声明的变量时静态变量,第一不好调动用是函数时一定给初始化static变量,当函数执行完毕后,statice变量没有于放出,而是保持以了静态内存中,当我们重新调用这个函数的上,会再度读取静态内存中的价值,函数static变量的价值当函数多次调用时,其价值不会见掉,函数内部的static变量仅在函数内部是可见的。同样于类似中呢得以应用static关键字,用static关键字来定义类的静态属性与静态方法,通过static关键字声明的static成员属性与分子方法是属于类的,在类似的里以及外部(脚本文件被)static属性和static方法毫无实例化类的对象就足以看,通过
类名::属性名 和 类名:: 方法名 来访问。此外,在类似的中间可以由此self::
关键字来访问static属性和static方法(推荐用self关键字),self关键字表示定义当前方式的类似,在类似的实例中吗堪用self关键字来访问static属性,在看似的中间不能够为此$this来引用static属性和static方法。在static方法中,不可知以$this,在static方法吃呢绝不引用非static内容(即没有用static修饰的性能或方式)。在近似的外表,通过类似的实例的援也得以调用类的static方法。类的static属性,在类似的大半个实例之中共享,其中一个实例修改了static属性值,在相近的享有实例中还拿获得更新。

ca88官网 1

http://php.net/manual/zh/language.oop5.late-static-bindings.php

于php脚本文件中通过define或者const来定义常量。在类似里通过const关键字定义常量属性。常量属性之称呼一般用小写。常量的值只能是价值,不能够是表达式或变量。在接近里通过类名或self访问常量属性,在看似外部,通过类似名来访问,不克由此类似的实例的援来拜会。在相近的其中也得经static关键字访问const常量。

通过 is_a() ,instanceof
来检测一个对象引用是否是一个好像,父类或接口的实例。get_class()返回时调用对象引用的类名。get_parent_class()返回类或者目标的父类名。is_subclass_of()检测一个目标(引用)是否是另外一个类的子类。

===================================

虚幻类非可知一直给实例化,只能通过子类来继承其,并且经过当子类中贯彻抽象类吃的空洞方法要抽象类具体化,在空虚类吃仅需要定义子类需要之法,也可以虚幻类吃一些实现部分内容,把集体的片先实现以下。在空虚类吃须要来抽象方法,抽象方法就一个空洞的想想,抽象方法没有现实的兑现,通过
abstract
关键字来定义一个架空方法,抽象方法无方法体,只是声明了一个调用方式,不可知定义具体的效力实现,子类在延续的当儿必须兑现有的纸上谈兵方法,子类在促成父类抽象方法的时,可见性可以同父类相同或从宽,子类中呢足以定义自己的法。在一个类似中,只要发生一个类是空泛方法了,那么是仿佛即必声明也abstract
抽象类。abstract抽象类非克吃实例化。

接口就是一律模拟规范或契约,是看似与类里的等同种植协议,接口也是对外提供服务之平等种说。在接口定义中须是彻头彻尾的模板,接口定义中不得不定义功能,不克包含具体的贯彻内容。通过interface
关键字来定义接口,在接口定义中可以蕴涵方法,也得以分包属性,接口中的办法必须定义成
public
的,不能够定义方法体。通过implements关键字来促成接口,实现接口的时光要贯彻接口中负有的章程。一个像样可兑现多个接口,多单接口之间以逗号分隔,多只接口中之道是未克闹重名的。一个类似可先连续另外一个类,在实现多单接口。接口也支撑继承,并且一个接口可以持续多独接口,接口间的累方式和类的持续一样,在接口中还而定义常量,接口常量不可知吃子类或者子接口所盖。

 继承实现多态,接口实现多态。

ca88官网 2

=================================== 

 魔术点子:__toString():当我们输出一个目标的时刻,__toString()魔术点子会受自动调用,__toString()魔术点子要回到以字符串。当我们的目标为用作函数的方式调用(即,在靶的援后面长左右括号(),来调用对象,也得以在调用对象的时刻,向目标调用传递参数)的早晚,会活动触发
__invoke()
魔术点子的调用。(通过func_get_args()函数可以抱调用函数时传递给函数的参数)。当调用一个目标的未定义或不足看(例如:在相近外部调用类的
private
方法)的艺术的时刻,__call()魔术点子会为自动调用,__call()魔术点子有一定量个参数:第一个是休定义的点子名,第二单是受非定义之函数传递的参数(在__call()内部以数组的花样保留),__call()魔术点子,相当给道的重载。__callStatic()魔术点子在于是静态方式调用一个不得看还是无存的static方法时,会为活动调用,__callStatic()魔术点子一致产生零星独参数:第一独是不定义之点子名,第二单凡是吃不定义之函数传递的参数(在__callStatic()内部以数组的花样保留)。__clone():默认情况下,将对象的援直接赋值给一个变量,是引用的赋值,两单还对准同一个靶。想得及片独一样的目标足以由此clone关键字就。通过clone关键字可以用一个对象的性能和法了复制一卖与给任何一个靶,clone完成后会见取得两单同的单独对象,各自占用不同的内存空间,一个靶的改不会见潜移默化其他一个目标。当我们应用clone关键字之时段,自动会调用(触发)一个魔术点子__clone()。__sleep():序列号对象的时刻会自行调用。__wakeup():反序列化对象的时光会自行调用。(序列化一个对象是借助用一个目标转换成字节约流的款式,这样就算好将目标保存于文书中。)

===================================

以下是前进阶篇的情:面向对象的宏图条件,自动加载类,类型提示,traits,命名空间,spl的行使,反射的运,php常用设计模式

 

 

相关文章