学习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 ...
随机推荐
- A simple test
博士生课程报告 视觉信息检索技术 博 士 生:施 智 平 指导老师:史忠植 研究员 中国科学院计算技术研究所 2005年1月 目 ...
- python中xrange()和range()函数的区别使用:
1.range()函数: 函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列. >>> #ra ...
- Word删除空白页
1.常见的就是在前一页最后按delete 2.我遇到的问题是,共两页第一页是平常的A4,是表格,第二页也是A4,只不过横着显示(后来才知道的),中间是分节符,不能直接删除的,否则表格各个部分分开在好几 ...
- kav卡巴斯基2014 优化设置
- 高级PHP应用程序漏洞审核技术
前言 PHP是一种被广泛使用的脚本语言,尤其适合于web开发.具有跨平台,容易学习,功能强大等特点,据统计全世界有超过34%的网站有php的应 用,包括Yahoo.sina.163.sohu等大型门户 ...
- [wikioi]石子归并
http://wikioi.com/problem/1048/ 区间型动态规划.参考PPT:http://wenku.baidu.com/view/73c1ded5b9f3f90f76c61bc4.h ...
- [转贴] C/C++中动态链接库的创建和调用
DLL 有助于共享数据和资源.多个应用程序可同时访问内存中单个DLL 副本的内容.DLL 是一个包含可由多个程序同时使用的代码和数据的库.下面为你介绍C/C++中动态链接库的创建和调用. 动态连接库的 ...
- 转载:遍历Map的四种方法
http://www.cnblogs.com/kristain/articles/2033566.html 遍历Map的四种方法 public static void main(String[] ar ...
- 一起啃PRML - 1.2.1 Probability densities 概率密度
一起啃PRML - 1.2.1 Probability densities @copyright 转载请注明出处 http://www.cnblogs.com/chxer/ 我们之前一直在讨论“谁取到 ...
- DevExpress控件汉化类 z
更新了一些字段,VER9.3.3 using System; using DevExpress.XtraEditors.Controls; using DevExpress.XtraGrid.Loca ...