学习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 ...
随机推荐
- 【BZOJ 1594】 [Usaco2008 Jan]猜数游戏 (二分+并查集)
1594: [Usaco2008 Jan]猜数游戏 Description 为了提高自己低得可怜的智商,奶牛们设计了一个新的猜数游戏,来锻炼她们的逻辑推理能力. 游戏开始前,一头指定的奶牛会在牛棚后面 ...
- 李洪强漫谈iOS开发[C语言-025]-赋值运算符案例
- BZOJ2464: 中山市选[2009]小明的游戏
2464: 中山市选[2009]小明的游戏 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 280 Solved: 124[Submit][Statu ...
- Beta Round #9 (酱油杯noi考后欢乐赛)乌鸦喝水
题目:http://www.contesthunter.org/contest/Beta%20Round%20%EF%BC%839%20%28%E9%85%B1%E6%B2%B9%E6%9D%AFno ...
- 【转】android获取屏幕宽度和高度
原文网址:http://www.cnblogs.com/howlaa/p/4123186.html 1. WindowManager wm = (WindowManager) getContext() ...
- web前端相关的书籍
一.Javascript方面的书籍: 1 JavaScript权威指南(第6版):号称javascript圣经,前端必备:前端程序员学习核心JavaScript语言和由Web浏览器定义的JavaScr ...
- Devexpress GridView部分常用操作总结 z
一:Clone返回新的 DataTable Clone返回新的 DataTable,与当前的 DataTable 具有相同的架构:Copy:返回新的 DataTable,它具有与该 DataTable ...
- ASP.NET返回Json数据
Schedule.ashx: <%@ WebHandler Language="C#" Class="Schedule" %> using Syst ...
- 最佳化常用测试函数 Optimization Test functions
http://www.sfu.ca/~ssurjano/optimization.html The functions listed below are some of the common func ...
- python进度1
Python 错误和异常 异常参数: 3.4与2.7有些不同 3.4中 try: x except NameError as e: print(type(e)) print(e) 运行结果: < ...