面向对象第四天
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象第四天相关的知识,希望对你有一定的参考价值。
第四天 常见关键字和魔术方法
========================================================================
1. final 关键字
修饰类 和 方法
被修饰的类不能被继承
被修饰的方法 不能被重写
作用
① 真理性
② 安全性
2. static 静态
回顾 静态变量
修饰成员属性和方法 3p依然有效
格式:
public static $param;
public static function funName()
{
}
访问静态属性
在类的外部
类名::$属性名 //不需要实例化。直接用类名访问
在类的内部
类名::$属性名\self::$属性名
访问静态方法
在类的外部
$obj->funName()\类名::funName()
在类的内部
$this->funName()\类名::funName()\self::funName()
特点注意:
① 静态方法中不能出现非静态属性调用 $this
② 在老版本php 中如果一个方法中 没有出现非静态调用则默认为静态方法(了解)
3. 单态 (单例)设计模式
一个类只能被实例化一次
4. const 常量
const 定义常量
在类的外部访问
className::常量名
在类的内部访问
self::常量名 \ className::常量名
作用:
给方法或函数定义参数
便于记忆
5. instanceof
$obj instanceof 类名
判断对象是否时类或其子类的实例化
6. 克隆对象
__clone(){}
当对象被clone 关键字克隆出另一个对象时调用
如果有属性为对象,则需要在__clone(){}中再次克隆属性,以完成完整的克隆操作
7. __toString()
当用echo print 对象当作字符串string来输出打印时自动调用
作用:
类的说明信息输出
8. __call() 和 __callStatic()
当访问方法或静态方法不存在时自动调用
第一个参数:调用方法名
第二个参数:传入方法的参数集合数组
作用:
404
9. __invoke() (没啥用)
在对象当作方法或函数调用时触发
10. 自动加载类的函数
如果脚本中实例化对象时 类文件不存在 则自动触发__autoload函数
将类名传入方法
先判断指定位置是否存在类文件 如果存在 require 不存在 die
11. 对象串行化(序列化)
$str = seralizie($obj)
自动触发
__sleep()
{
return array(‘name‘,‘age‘。。。) //返回想保存的属性值数组
}
用文件或数据库或缓存存储obj 字符串
$objStr = unserialize($str);
__wakeup(){}
12. 类型约束
array 和 class
13. stdClass
系统空类
以上是关于面向对象第四天的主要内容,如果未能解决你的问题,请参考以下文章