学习PHP时的一些总结(二)
类中的构造方法和析构方法:
构造方法是对象创建完成后第一个被对象自动调用的方法。析构方法是对象在销毁之前最后一个被对象自动调用的方法。
如果没有显示的声明构造方法,类中都会默认存在一个没有参数列表并且内容为空的构造方法。如果显示的声明它则类中将不会存在默认的构造方法。"__construct"
在类中声明析构方法的名称也是固定的"__desctruct",析构函数不能带任何参数。
面向对象封装性的原则就要求对象以外的部分不能随意存取对象的内部数据(成员属性和成员方法)。从而有效的避免了外部错误对他的”交叉感染“,使软件错误能够局部化,大大减少查错和排错的难度。
魔术方法__set(), __get(), __isset(), __unset(),__toString(),__clone(),__call(), __sleep(),__wakeup(),[__construct, __destruct()也是魔术方法)
在PHP5.1.0以后的版本中,预定义了两个方法"__get()" ,"__set()",用来完成对所有的私有属性都能获取和赋值的操作,以及用来检查属性是否存在的方法"__isset()"和用来删除对象中私有属性的方法"__unset()"
方法的重载:
子类可以重写父类中的方法,包括构造方法和析构方法。子类中也可以调用父类中被覆盖掉的方法。如:parent::construct($name,$age,$sex);
在子类中重写的方法权限一定不能低于父类被覆盖的方法的访问权限。例如:如果父类的访问权限是protected,那么在子类中重写的方法权限就要是protected或public.
使用final标记的类不能被继承
static关键字。访问类中静态成员和方法的使用方式:
类名::静态成员属性名;
类名 ::静态成员方法名();
也可以使用关键字 "self" 来访问其他静态成员。如果在类内部的成员方法中访问其他的静态成员,通常使用self的形式去访问,最好不直接使用类名称。
const 关键字:
在PHP中定义常量是通过define()函数来完成的,但要将类中的成员属性定义为常量则只能使用const关键字,其访问方式和静态成员一样,都会通过类名在成员方法中使用self关键字访问,也不能用对象来访问。
例子:const CONST="CONST value";
__autoload()全局函数:
例子:function __autoload($className){
include("class_".ucfirst($className)."php"); //"class_"为类名的前缀
}
****对象的序列化****:
有两种情况我么必须将对象序列化:
1)对象需要在网络中传输时,将对象序列化成二进制的字符串后在网络中传输。
2)对象需要永久保存时,将对象序列化后写入文件或数据库中。
serialize()函数来序列化一个对象,传入参数为对象的引用名,返回值为一个被序列化的字符串。
反序列化函数unserialize()来将序列化后的二进制字符串再转化为对象,参数为序列化之后的字符串。
__sleep()和__wakeup()函数的使用:
抽象方法和抽象类:
只要在声明类时有一个方法是抽象的方法这个类就是抽象类,但是抽象类中可以有具体的方法。当子类继承抽象类之后,就必须把抽象类中的方法全部实现,除非子类中的方法也存在抽象方法,还是抽象类。
接口技术:
接口是一种特殊的抽象类,接口中所有的方法都是抽象的方法,所以不用在方法前面加abstract关键字了。而且在接口中也不需要显示的使用public 访问修饰符
类继承接口使用implements关键字。
学习PHP时的一些总结(二)的更多相关文章
- Java学习-039-源码 jar 包的二次开发扩展实例(源码修改)
最近在使用已有的一些 jar 包时,发现有些 jar 包中的一些方法无法满足自己的一些需求,例如返回固定的格式,字符串处理等等,因而需要对原有 jar 文件中对应的 class 文件进行二次开发扩展, ...
- Qlik Sense学习笔记之Mashup开发(二)
date: 2019-01-26 11:28:07 updated: 2019-01-26 11:28:07 Qlik Sense学习笔记之Mashup开发(二) 1.Mobile SPA UI Fr ...
- WCF学习之旅—TcpTrace工具(二十六)
止文(WCF学习之旅—TcpTrace工具(二十五))介绍了关于TcpTrance的一种使用方式,接下来介绍第二种使用方式. 三.通过ListenUri实现基于tcpTracer的消息路由 对于路由的 ...
- 学习Coding-iOS开源项目日志(二)
继续前篇:<学习Coding-iOS开源项目日志(一)>,接着本第二篇<学习Coding-iOS开源项目日志(二)>讲解Coding-iOS开源项目. 前言:作为初级程序员,想 ...
- 上四条只是我目前总结菜鸟们在学习FPGA时所最容易跑偏的地
长期以来很多新入群的菜鸟们总 是在重复的问一些非常简单但是又让新手困惑不解的问题.作为管理员经常要给这些菜鸟们普及基础知识,但是非常不幸的是很多菜鸟怀着一种浮躁的心态来学习 FPGA,总是急于求成. ...
- 浅谈学习C++时用到的【封装继承多态】三个概念
封装继承多态这三个概念不是C++特有的,而是所有OOP具有的特性. 由于C++语言支持这三个特性,所以学习C++时不可避免的要理解这些概念. 而在大部分C++教材中这些概念是作为铺垫,接下来就花大部分 ...
- python学习_数据处理编程实例(二)
在上一节python学习_数据处理编程实例(二)的基础上数据发生了变化,文件中除了学生的成绩外,新增了学生姓名和出生年月的信息,因此将要成变成:分别根据姓名输出每个学生的无重复的前三个最好成绩和出生年 ...
- Android 布局学习之——Layout(布局)具体解释二(常见布局和布局參数)
[Android布局学习系列] 1.Android 布局学习之--Layout(布局)具体解释一 2.Android 布局学习之--Layout(布局)具体解释二(常见布局和布局參数) ...
- 在学习泛型时遇到的困惑经常与func<T,U>混淆
在学习泛型时遇到的困惑经常与func<T,U>混淆,总认为最后一个值是返回类型.现在区分一下,原来问题出在泛型委托上. C#委托的介绍(delegate.Action.Func.predi ...
- 跟着刚哥学习Spring框架--Spring容器(二)
Spring容器 启动Spring容器(实例化容器) -- IOC容器读取Bean配置创建Bean实例之前,必须对它进行实例化(加载启动),这样才可以从容器中获取Bean的实例并使用. Bean是S ...
随机推荐
- zigbee智能家居基础扫盲
zigbee Zigbee是基于IEEE802.15.4标准的低功耗个域网协议.根据这个协议规定的技术是一种短距离.低功耗的无线通信技术.这一名称来源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飞翔和&qu ...
- CT 来值班,让您安心过新年!
春节,盼了整整一年的节日,我们一定要抛开工作,狠狠的开心,狠狠的幸福,但是作为苦逼的运维,你们真的能完全抛开工作(对网站不闻不问)吗?OneAPM CT 24 小时监控您的网站,让您无忧无虑过新年. ...
- 李洪强漫谈iOS开发[C语言-034]-程序的结构
- Android 图片比较
Android中图片比较大致的流程如下: 将Drawable对象转化成Bitmap对象.(实际比较的是Bitmap对象,假设为B1和B2) 将B1和B2中的像素取出,分别放在2个数组中.(实际存储的是 ...
- Jsoup 解析 HTML
Jsoup 文档 方法 要取得一个属性的值,可以使用Node.attr(String key) 方法 对于一个元素中的文本,可以使用Element.text()方法 对于要取得元素或属性中的HTML内 ...
- statspack系列8
原文:http://jonathanlewis.wordpress.com/2006/12/27/analysing-statspack-8/ 作者:Jonathan Lewis 在前面的关于stat ...
- StorSimple 简介
2014年 10月 28日,星期二 PRACHEETI NAGARKAR DESAI 混合云存储业务资深项目经理 在此我很荣幸地宣布StorSimple解决方案已经在中国正式上市.该方案为IT部 ...
- 替换SQL Server字段中的换行符,回车符
replace(string_expression , string_pattern , string_replacement) 第一个参数:要查找的字段. 第二个参数:要查找的字符. 第三个参数:要 ...
- ASP.NET中验证控件的使用
转自:http://www.cnblogs.com/yangmingming/archive/2010/03/09/1682006.html 前言: 前几日,无奈用JS判断控件的有效性,发现的确是一件 ...
- Using Nini .NET Configuration Library
Using Nini .NET Configuration Library Tweet When developing a desktop application, there will be tim ...