学习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 ...
随机推荐
- delphi xe5 android 开发数据访问手机端(一)
上几片文章我们把供手机端调用的web服务完成,接下来实现手机端调用webservices获取数据 1.新建firemonkey mobile application 2.选择blank applica ...
- 系统调用与API的区别
整理自系统调用与API的区别 1.为什么用户程序不能直接访问系统内核模式提供的服务? 答:在linux中,将程序的运行空间分为内核与用户空间(内核态和用户态),在逻辑上它们之间是相互隔离的,因此用户程 ...
- CT 来值班,让您安心过新年!
春节,盼了整整一年的节日,我们一定要抛开工作,狠狠的开心,狠狠的幸福,但是作为苦逼的运维,你们真的能完全抛开工作(对网站不闻不问)吗?OneAPM CT 24 小时监控您的网站,让您无忧无虑过新年. ...
- WAF
http://netsecurity.51cto.com/art/201010/231124.htm http://wenku.baidu.com/link?url=elrFtxPRcwJ5FjlXE ...
- 李洪强漫谈iOS开发[C语言-025]-赋值运算符案例
- AC-BM算法原理与代码实现(模式匹配)
AC-BM算法原理与代码实现(模式匹配) AC-BM算法将待匹配的字符串集合转换为一个类似于Aho-Corasick算法的树状有限状态自动机,但构建时不是基于字符串的后缀而是前缀.匹配 时,采取自后向 ...
- hadoop2.2编程:mapreduce编程之二次排序
mr自带的例子中的源码SecondarySort,我重新写了一下,基本没变. 这个例子中定义的map和reduce如下,关键是它对输入输出类型的定义:(java泛型编程) public static ...
- MySQL源码之mysqld启动
启动mysqld,并进入listen阶段 函数调用栈: mysqld_main(): my_init();初始化变量,锁,错误串 my_thread_global_init ...
- C#获取文件的当前路径
C#获取文件的当前路径 1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName -获取模块的完整路径. 2.Syst ...
- log4net封装类 zz
封装说明: 1.使用静态方法调用即可写入日志. 2.在日志信息写入之前,定义委托处理日志信息,便于记录日志信息之前,显示给用户. 3.添加代码配置Log4net,避免应用程序总是携带配置文件.如果需要 ...