PHP回顾(面向对象)
类中的成员属性不能够用函数为其赋值。public age = rand(1,100);//这是错误的;
__get() __set() __isset() __unset()
final 用来修饰成员方法或类,被final修饰的类不能被继承,final修饰的方法不能重载。参考博客
const 定义的常量归类所有。类名::常量名 方式访问
statics 成员方法中使用了$this,那么这个成员方法就不能用statics修饰.
parent指向父类,可以访问父类的静态常量、静态属性,不能访问父类的非静态属性,可以调用父类的方法(不能是private方法,无论是否静态)
对象串行化:serialize() 默认情况是把整个对象串行化,准确说是对象里的属性,如果我只想串行化指定的成员属性。那需要使用一个魔术方法 __sleep() ,调用serialize时触发。还有一个 __wakeup() 是在调用unserialize() 触发, 作用是在反串行化的时候可以修改成员属性。
__tostring() 使用echo输出对象时触发。验证码类可以使用来简化操作。
克隆:由于把一个对象赋值给另一个变量的时候默认是引用的(不是把值传递给另一个变量)。所以需要clone,才能得到一个新的一样的对象,改变其中一个对象的时候,另一个不会变。如果说克隆的时候想要改变某些属性,需要使用__clone() 在clone的时候触发。
class SubObject
{
static $instances = 0;
public $instance; public function __construct() {
$this->instance = ++self::$instances;
} public function __clone() {
$this->instance = ++self::$instances;
}
} class MyCloneable
{
public $object1;
public $object2; function __clone()
{ // 强制复制一份this->object, 否则仍然指向同一个对象
$this->object1 = clone $this->object1;
}
} $obj = new MyCloneable(); $obj->object1 = new SubObject();
$obj->object2 = new SubObject(); $obj2 = clone $obj; echo '<pre>';
print("Original Object:\n");
print_r($obj); print("Cloned Object:\n");
print_r($obj2); //手册中的示例
__call() 调用类中不存在的方法时触发。
__autoload()
单例设计模式:
<?php class Mysql{
static private $link = null;
private function __construct(){
echo 1111;
} static public function connect(){
if(is_null(self::$link)){
self::$link = new self;//new self 是实例化
}
return self::$link;
}
}
//这样就实现了一个简单的单例设计模式
Mysql::connect(); //无论调用多少次这个方法,都只会输出一个
PHP回顾(面向对象)的更多相关文章
- Python知识回顾 —— 面向对象
博客转载自 http://www.cnblogs.com/wupeiqi/p/4766801.html http://www.cnblogs.com/linhaifeng/articles/62040 ...
- 洗礼灵魂,修炼python(41)--巩固篇—从游戏《绝地求生-大逃杀》中回顾面向对象编程
声明:本篇文章仅仅以游戏<绝地求生>作为一个参考话题来介绍面向对象编程,只是作为学术引用,其制作的非常简易的程序也不会作为商业用途,与蓝洞公司无关. <绝地求生>最近很火,笼络 ...
- AJPFX:关于面向对象的封装
1.回顾 面向对象 -- 注重的是结果,强调的是具备功能的对象. 面向过程 -- 强调的是函数,注重的实现的过程. 函数:对功能的封装. ...
- day19_python_1124
.01 昨日内容回顾 面向对象:1,将一些相似功能的函数集合到一起 类:具有相同属性和功能的一类事物. 对象:类的具体体现. 2,站在上帝的角度考虑问题,类就是一个公共模板, 类的结构: class ...
- JS高级学习历程-15
昨天内容回顾 面向对象的私有成员.静态成员 私有成员:在构造函数里边定义局部变量,就是私有成员. 静态成员:在js里边,函数就是对象,可以通过给函数对象声明成员方式声明静态成员. 原型继承 关键字:p ...
- python25day
内容回顾 面向对象的回顾 类 对象 怎么用 怎么继承 pickle模块 今日内容 继承(进阶的知识点) 经典类和新式类 python3所有类都继承object类 所有继承object的类都是新式类 不 ...
- python23day
内容回顾 面向对象 类:是具有相同属性和相似功能的一类事物 对象/实例:具体的,一类可以有多个对象 实例化 练习 # 定义一个圆形类,半径是这个圆的属性,实例化一个半径为5的圆形,一个半径为10的圆形 ...
- 2、网络并发编程--套接字编程、黏包问题、struct模块、制作简易报头、上传文件数据
昨日内容回顾 面向对象复习(json序列化类) 对象.类.父类的概念 三大特性:封装 继承 多态 双下开头的方法(达到某个条件自动触发) __init__:对象实例化自动触发 __str__:对象执行 ...
- Javascript基础回顾 之(三) 面向对象
本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...
- 前端面试回顾---javascript的面向对象
转:https://segmentfault.com/a/1190000011061136 前言 前一阵面试,过程中发现问到一些很基础的问题时候,自己并不能很流畅的回答出来.或者遇到一些基础知识的应用 ...
随机推荐
- kubectl相关指令
在列出.描述.修改或删除其他命名空间中的对象时,需要给kubect1命令传递--namespace(或-n)选项.如果不指定命名空间,kubect1将在当前上下文中配置的默认命名空间中执行操作.而当前 ...
- Android的视图(View)组件
Android的绝大部分UI组件都放在android.widget包及其子包.android,view包及其子包中,Android应用的所有UI组件都继承了View类,View组件非常类似于Swing ...
- 如何编写正确且高效的 OpenResty 应用
本文内容,由我在 OpenResty Con 2018 上的同名演讲的演讲稿整理而来. PPT 可以在 这里 下载,因为内容比较多,我就不在这里一张张贴出来了.有些内容需要结合 PPT 才能理解,请多 ...
- supersocket特征
SuperSocket, 可扩展的 Socket 服务器框架 SuperSocket 是一个轻量级, 跨平台而且可扩展的 .Net/Mono Socket 服务器程序框架.你无须了解如何使用 Sock ...
- 客户端相关知识学习(八)之Android“.9.png”
参考 Android中.9图片的含义及制作教程 .9.png Android .9.png 的介绍
- 实现a标签按钮完全禁用
前言 最近在开发时遇见一个问题 我们知道a标签的disabled属性部分浏览器支持,但是尽管设置了disabled属性也无法阻挡任何鼠标经过或是点击事件的,那么如何实现a标签按钮的禁用呢? 转换一下思 ...
- O063、NFS Volume Provider(Part II)
参考https://www.cnblogs.com/CloudMan6/p/5693771.html 本节开始创建 NFS volume ,操作方法和 LVM volume一样,唯一的区别是在 v ...
- jdbc原生操作数据库
jdbc原生操作数据库流程: 第一步:Class.forName()加载数据库连接驱动: 第二步:DriverManager.getConnection()获取数据连接对象; 第三步:根据 SQL 获 ...
- js之常用正则
//用户名正则,4到16位(字母,数字,下划线,减号) let uPattern = /^[a-zA-Z0-9_-]{4,16}$/; //密码强度正则,最少6位,包括至少1个大写字母,1个小写字母, ...
- px自动换算rem
//designWidth:设计稿的实际宽度值,需要根据实际设置//maxWidth:制作稿的最大宽度值,需要根据实际设置//这段js的最后面有两个参数记得要设置,一个为设计稿实际宽度,一个为制作稿最 ...