知识点关键词:FSCICATS
一、 f => final:
  a) 是一个修饰符,用来修饰类和成员方法
  b) 使用final修饰符修饰的类不能被继承,使用final修饰符修饰的成员方法,不能被重写;
  c) 好比是专利、知识产权
二、 S => static:
  a) 是一个修饰符,用来修饰成员属性和成员方法
  b) 修饰成员属性:
    i. 使用的方法:static修饰符可以配合PPP修饰符进行修饰成员属性修饰
      1. Public static $name;
    ii. 作用:其实就是将使用静态修饰符修饰的成员属性变为共有存在的属性
    iii. 访问形式:
      1. 在类的内部:self::属性名;
      2. 在类的外部:类名::属性名;
  c) 修饰成员方法:
    i. 使用的方法:static修饰符可以配合PPP修饰符进行成员方法修饰
      1. Public static function sing();
    ii. 注意事项:被static修饰符所修饰的成员方法,只能操作静态成员属性,和静态成员方法,也就是说在静态成员方法中不能有$this
    iii. 访问形式:
      1. 在类的内部:self::方法名();
      2. 在类的外部:类名::方法名();
三、 单例模式:
  a) 目标:想在脚本当中只实例化一次该对象\
  b) 步骤:
    i. 将构造方法私有化
    ii. 定义判断是否为第一次实例化的一个静态成员属性,用于存放实例化的对象的
    iii. 定义静态成员方法,将实例化结果返回到调用出

 //单例模式
class Obj{
//定义静态成员属性
public static $o = null; //构造方法私有化
private function __construct(){ } //在类的内部去实例化本对象
public static function getObj(){
if(self::$o==null){
self::$o = new Obj();
}
return self::$o;
} } $a = Obj::getObj();
$b = Obj::getObj();
$c = Obj::getObj();
ar_dump($a); //D:\wamp\www\lamp183\lesson30_oop3\5.php:25:
object(Obj)[1]
var_dump($b); //D:\wamp\www\lamp183\lesson30_oop3\5.php:25:
object(Obj)[1]
var_dump($c); //D:\wamp\www\lamp183\lesson30_oop3\5.php:25:
object(Obj)[1]

四、 C => const
  a) 这是一个关键字
  b) 作用:用来定义一个常量
  c) 格式:const 常量名 = 常量值;
  d) 注意:
    i. Define可以在流程控制当中定义
    ii. Const不可以在流程控制当中定义
    iii. 常量可能的值:四种标量类型的值+null空型
  e) 类常量的访问方式:
    i. 在类的内部:self::常量名
    ii. 在类的外部:类名::常量名
五、 I => instanceof
  a) 是一个运算符
  b) 作用:用来判断一个对象是否属于该类或父类
  c) 格式:对象 instanceof 类名; 如果为真说明该对象属于该类,否则不属于
  d) 滴血认亲

 class GrandPa{

 }

 class Father extends GrandPa{

 }

 class Son extends Father{

 }

 class Gebi{

 }

 //实例化一个儿子类
$me = new Son(); //查看对象是否是由Son类实例化的
var_dump($me instanceof Son); //D:\wamp\www\lamp183\lesson30_oop3\7.php:24:boolean true
var_dump($me instanceof Father); //D:\wamp\www\lamp183\lesson30_oop3\7.php:25:boolean true
var_dump($me instanceof GrandPa); //D:\wamp\www\lamp183\lesson30_oop3\7.php:26:boolean true
var_dump($me instanceof Gebi); //D:\wamp\www\lamp183\lesson30_oop3\7.php:27:boolean false

六、 C => clone
  a) 是一个关键字,可以将一个对象克隆出另一份
  b) 格式:$a = clone $b;
  c) 魔术方法:__clone
    i. 自动执行场景:当我们对一个对象进行克隆的时候,会自动调用该方法
  d) 作用:为了初始化当前新创建出来的对象的信息

 class Twins{

     //成员属性
public $name;
public $age; //构造方法
public function __construct($name,$age){
$this->name = $name;
$this->age = $age;
} //成员方法
public function dance(){
echo '我正在跳舞中,么么哒……';
} //当我们对一个对象进行克隆的时候,会自动调用的一个方法
public function __clone(){
$this->name = 'Mandy';
$this->age = 15;
} } $sandy = new Twins('sandy',15);
$mandy = clone $sandy; //执行了一个克隆 var_dump($sandy);
//结果
object(Twins)[1]
public 'name' => string 'sandy' (length=5)
public 'age' => int 15 var_dump($mandy);
//结果
object(Twins)[2]
public 'name' => string 'Mandy' (length=5)
public 'age' => int 15

七、 A => __autoload
  a) 这是一个魔术函数
  b) 触发场景:当我们实例化一个不存在的类的时候,或者继承一个不存在的类的时候,会自动调用
  c) Spl_autoload_register:可以对__autoload函数进行重命名,重命名之后,则必须使用新名进行操作

 // 魔术函数__autoload,在实例化或继承一个不存在的类时,自动调用
function __autoload($name){
if(file_exists('./Libs/'.$name.'.class.php')){
include './Libs/'.$name.'.class.php';
}elseif(file_exists('./Class/'.$name.'.class.php')){
include './Class/'.$name.'.class.php';
}
} // 将类文件引入
include './Libs/upload.class.php';
include './Libs/model.class.php'; // 实例化不存在的类时
$a = new User();
var_dump($a);
//结果
object(User)[1]

八、 T => __toString
a) 是一个魔术方法
b) 触发场景:当我们对一个对象进行字符串操作的时候会自动进行调用
c) 作用:代替对象进行字符串输出
d) 注意:必须返回一个字符串类型的值

 //定义一个
class SuperMan{ //成员属性
public $name;
public $age;
public $tall; //成员方法
public function __construct($name,$age,$tall){
$this->name = $name;
$this->age = $age;
$this->tall = $tall;
} public function fly(){
echo '我正在飞……带你装X带你飞,带你飞进垃圾堆……';
} //当我们使用echo对对象进行输出时,会自动调用
public function __tostring(){
return '我是超人,我怕谁!!';
} } $kent = new SuperMan('肯特',45,'185cm'); echo $kent; //我是超人,我怕谁!!

九、 S => serialize(串行化、序列化)
  a) 是一个函数
  b) 它能够将一个数组或一个对象变成字符串
  c) 将数组转换成字符串
    i. a:4:{i:0;s:5:"apple";i:1;s:6:"banana";i:2;s:6:"orange";i:3;s:5:"xigua";}
      1. a:变量的数据类型 a => array
      2. 4:数组中的单元格数 有4个单元、有4个元素
      3. I:数组中第一个元素的下标类型 I => int
      4. 0 :下标的值
      5. S : 数组中第一个元素的值的类型 s => string
      6. 5 :数组中第一个元素的值的长度 单位:字节
      7. Apple:值的内容
  d) 将对象转换成字符串:
    i. O:8:"SuperMan":3:{s:4:"name";s:6:"海波";s:3:"age";i:18;s:4:"tall";s:5:"180cm";}
      1. O :变量的数据类型 o=>object
      2. 8:类名的成都(字节)
      3. SuperMan:类名
      4. 3:类当中有3个属性
      5. S:第一个属性的类型 s => string
      6. 4:属性名的长度(字节)
      7. Name:属性名
      8. S:属性对应的值的类型 s => string
      9. 6:属性值的长度(字节)
      10. 海波:属性值的内容
  e) 魔术方法:__sleep
    i. 自动执行场景:当我们对一个对象进行串行化的时候,会自动调用
    ii. 作用:可以方便我们对串行化数据的一个筛选
    iii. 注意:该方法返回的必须是一个数组
十、 U => unserialize(反串行化、反序列化)
  a) 这是一个函数
  b) 作用:可以将串行化的数据反串行化成数组或对象
  c) 魔术方法:__wakeup
    i. 自动执行场景:当我们对一个对象进行反串行化的时候,会自动调用
    ii. 作用:可以方便我们修改对象的成员属性的内容

 //定义了一个类
class SuperMan{ //成员属性
public $name;
public $age;
public $tall; //成员方法
public function __construct($name,$age,$tall){
$this->name = $name;
$this->age = $age;
$this->tall = $tall;
} //__sleep魔术方法
public function __sleep(){
return array('name','tall');
} //__wakeup魔术方法
public function __wakeup(){
$this->name = '仉浩焱';
$this->age = 50;
$this->tall = '140cm';
}
} //实例化对象
$haibo = new SuperMan('许超',18,'160cm'); //将对象串行化
$contents = serialize($haibo);
var_dump($contents);
//结果
string 'O:8:"SuperMan":2:{s:4:"name";s:6:"许超";s:4:"tall";s:5:"160cm";}' //反串行化:
$jiji = unserialize($contents);
var_dump($jiji);
//结果
object(SuperMan)[2]
public 'name' => string '仉浩焱' (length=9)
public 'age' => int 50
public 'tall' => string '140cm' (length=5)

【php】面向对象(三)的更多相关文章

  1. Python面向对象三要素-继承(Inheritance)

    Python面向对象三要素-继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承概述 1>.基本概念 前面我们学习了Python的面向对象三 ...

  2. Python面向对象三要素-封装(Encapsulation)

    Python面向对象三要素-封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.封装概述 将数据和操作组织到类中,即属性和方法 将数据隐藏起来,给 ...

  3. JavaScript 面向对象(三) —— 高级篇

    JavaScript 面向对象(一) —— 基础篇 JavaScript 面向对象(二) —— 案例篇 一.json方式的面向对象 首先要知道,js中出现的东西都能够放到json中.关于json数据格 ...

  4. JavaScript面向对象(三)——继承与闭包、JS实现继承的三种方式

      前  言 JRedu 在之前的两篇博客中,我们详细探讨了JavaScript OOP中的各种知识点(JS OOP基础与JS 中This指向详解 . 成员属性.静态属性.原型属性与JS原型链).今天 ...

  5. Python之面向对象三

    面向对象的三大特性: 多态 多态指的是一类事物有多种形态.Python3天生支持多态. 动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCM ...

  6. Python面向对象(三)

    一.绑定方法与非绑定方法 一.绑定方法:绑定给谁就应该由谁来调用,谁来调用就会将谁当作第一个参数传入 1.绑定给对象的方法:类中定义的函数默认就是绑定给对象的 2.绑定给类的方法:为类中定义的函数加上 ...

  7. Python面向对象三要素-多态

    Python面向对象3要素-多态 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.多态概述 OCP原则:多用“继承”,少修改. 继承的用途:在子类上实现对基类的增强,实现多态. ...

  8. javascript面向对象(三):非构造函数的继承

    本文来自阮一峰 这个系列的第一部分介绍了"封装",第二部分介绍了使用构造函数实现"继承". 今天是最后一个部分,介绍不使用构造函数实现"继承" ...

  9. Objective-C面向对象(三)

    1.类的继承 OC的继承是单继承,每个子类只有一个直接父类 1.1 继承的特点 OC继承的语法 @interface SubClass :SuperClass { //成员变量定义 } //方法定义部 ...

  10. Java学习笔记10(面向对象三:接口)

    接口: 暂时可以理解为是一种特殊的抽象类 接口是功能的集合,可以看作是一种数据类型,是比抽象类更抽象的"类" 接口只描述所应该具备的方法,并没有具体实现,具体实现由接口的实现类(相 ...

随机推荐

  1. 【10】openlayers 视图view

    创建地图: //View对象代表地图的简单2D视图 //创建view let view = new ol.View({ center:[109,34],//视图的初始中心 maxZoom:18,//最 ...

  2. Go语言转义字符

    \a 匹配响铃符 (相当于 \x07) 注意:正则表达式中不能使用 \b 匹配退格符,因为 \b 被用来匹配单词边界, 可以使用 \x08 表示退格符. \f 匹配换页符 (相当于 \x0C) \t ...

  3. JAVAEE学习day03,基本的流程控制

    有问题请留言 1.流程控制语句分类 1)顺序控制语句 2)选择结构语句 if... if...else... if...else if... else... for... switch... whil ...

  4. node 微信支付

    基于node 实现微信支付功能 需要了解的网站:微信支付 流程图: 1. 1.我的路由: const Koa = require('koa') const app = new Koa() const ...

  5. 基于 HTML5 WebGL 的发动机 3D 可视化系统

    前言     工业机械产品大多体积庞大.运输成本高,在参加行业展会或向海外客户销售时,如果没有实物展示,仅凭静态.简单的图片说明书介绍,无法让客户全面了解产品,不仅工作人员制作麻烦,客户看得也费力.如 ...

  6. npm 安装 electron 出现的奇葩错误

    起因 使用yarn安装electron有时稳定,在搭配别的框架时有时又出现无解的错误了,于是打开electron官网,发现: emm,似乎官方对npm情有独钟.于是我遵从官方旨意使用npm安装elec ...

  7. 2020kali浏览器汉化等配置

    0.修改搜索引擎 1. 2. 3.点击左侧搜索,输入language因为我已经修改为中文所以没有查询到结果 4点击搜索更多语言(未汉化未英文)找到chinese后添加 5.要将chinese上移到第一 ...

  8. 洛谷1074 靶状数独dfs 排序、记录、搜索

    题目网址:https://www.luogu.com.cn/problem/P1074 大意就是在一个9*9的数独中填数,要求行列宫都是九个互不相同的数字,给定一定的得分机制,要求求解最大得分.思路大 ...

  9. 如何使用WordPress搭建网站

    1.空间的申请 阿里用户可以申请[阿里共享虚拟主机普惠版6元/年],虽然配置和空间不高,但也可以做个小站点的.当不满足当前配置的时候,随时可以进行升级,所以拿来练手还是比较合适的.   2.WordP ...

  10. 基于 HTML5 WebGL 的故宫人流量动态监控系统

    前言 在当代社会,故宫已经成为一个具有多元意义的文化符号,在历史.艺术.文化等不同领域发挥着重要的作用,在国际上也成为能够代表中国文化甚至中国形象的国际符号.近几年故宫的观众接待量逐年递增,年接待量已 ...