知识点关键词: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)

最新文章

  1. Magento代码之订单创建流程
  2. Fixed Responsive Nav – 响应式的单页网站导航插件
  3. 【原】ajaxupload.js上传报错处理方法
  4. Android仿快递 物流时间轴 的代码实现
  5. adb device 调试
  6. innodb必收藏
  7. Linux下生成patch和打patch
  8. Map集合的遍历方式:
  9. Xcode 8:在 Active Compilation Conditions 中自定义环境变量
  10. MapReduce的手机流量统计的案例
  11. Mybatis 控制台打出Sql-Log的设置
  12. The file “XXX” couldn’t be opened because you don’t have permission to view it.解决方法:
  13. java中的log
  14. Spring Mvc Url和参数名称忽略大小写
  15. Hadoop,master和slave简单的分布式搭建
  16. Ubuntu下搭建spark2.4环境(单机版)
  17. iOS QRcode识别及相册图片二维码读取识别
  18. winform(记事本--查找)
  19. iosg给父类view添加透明度子类也变得透明
  20. Elasticsearch快速入门案例

热门文章

  1. C#窗体排列方式
  2. 测试必知必会系列- Linux常用命令 - tar
  3. niginx:duplicate MIME type "text/html" in nginx.conf 错误(转载)
  4. .Net Framework 工具Mpgo.exe与Ngen.exe
  5. java学习笔记(1)——有关接口
  6. Sqli-labs 搭建SQL注入平台
  7. 一些Nmap NSE脚本推荐
  8. python浅学【网络服务中间件】之Memcached
  9. 直径问题 Diameter Problems
  10. Java BIO、NIO与AIO的介绍(学习过程)