PHP笔记12-day16

面向过程:

一堆变量。。。。

一些函数。。。。

流程控制。。。。

面向对象:

class  {

一堆属性。。。。

一些方法。。。。

其中有:流程控制。。。。

}

MVC编程思想:

一堆类;

 

 

类的自动加载

含义:

在代码运行到某个位置,需要一个类的时候,php系统内部可以做到“自动加载类文件”

什么时候需要一个类?

new一个对象的时候,使用一个类的静态方法的时候

条件和要求

定义系统内部的特殊函数(魔术函数):__autoload()

function   __autoload(  $class_name  )

{

//这里要根据$class_name去构建合适的文件路径并加载它

}

这个函数不应我们去手动调用。

而且,类的名字应该跟类文件的名字有一定的“关联”,并且推荐类文件有相对稳定的存储位置。

自定义自动加载函数:

2步:

1:定义要作为“自动加载”的函数名,可以多个;

spl_autoload_register(“函数名”);

2: 定义这些函数,跟定义__autoload()类似。

对象的复制(克隆)

$o2 = clone  $o1;

单例类的加强:禁止克隆

class  Single{

private  funciton __construct(){}

private  static  $instance  = null;

private  fucntion  __clone(){};

static  function  GetInstance ( ... ){

if( !(static::$instance  instanceOf  static)  ){//还没有

static::$instance  =  new  self ( ... );

}

return  static::$instance;

}

}

对象的遍历:

foreach( $ob1  as  $key => $vlaue){...}

PHP内置标准类: stdClass

std: standard(标准的)

其他数据类型转换为对象类型

数组--->对象: 下标变为属性名,对应值就是属性值;——注意:数字下标的元素,并不合适

null--->对象:空的标准类对象;

其他标量类型(floatint, stringbool--->对象:是标准类的对象,属性名为scalar

类型约束

什么叫类型约束?

就是要求某个变量只能存储(接收)某种类型的数据;

php中,只支持局部的部分类型约束

局部:只是在函数或方法的形参上,支持约束;

部分类型:array, 对象的所属类,  对象所实现的接口;   function(函数,这是php5.4之后才可以)

与类有关的其他魔术方法

序列化与反序列化技术

序列化:就是将内存数据,存储到硬盘的过程;

反序列化:将存储到硬盘的序列化数据,恢复为内存数据;

__sleep():用于对象的序列化:

该方法在一个对象序列化的时候,会自动调用(前提是有);

此时,在该方法中,就给我们一个“机会”:可以自己选项需要进行序列的属性;

__wakeup:用于对象的反序列化:

此时,在该方法中,就给我们一个“机会”:可以在对象“醒过来”的时候,去完成一些此刻需要做的事情;

 

__tostring()魔术方法——比较常用!

将一个对象当做一个字符串来使用的时候,会自动调用,此时该方法应该返回一个字符串。

__invoke()魔术方法:

将一个对象当做一个函数来调用的时候,会自动调用

其他零碎:

与类有关的魔术常量:__CLASS__,   __METHOD__

与类有关的系统函数:class_exists()  interface_exists(),  get_class(),  get_class_vars(), ....

与对象有关的系统函数:get_object_vars()

与类有关的运算符:new  instanceOf;

一个类的对象,自然是这个类的一个实例;

而且:它必然也是这个类的上级类的实例!

static关键字的新用法和总结:

1:用在函数(或方法中),用来定义一个局部的“静态变量”;

2:用在一个类的属性或方法的定义中,表示“静态”属性或方法;

3,:用在一个方法的内部,并使用“::”语法,表示调用本方法的“当前类”;

对比:self:用在一个方法的内部,并使用“::”语法,表示当前self代码位置所述的类;

面向对象编程思想的3个特征:

封装:

可以简单理解为:类就是一个“语法上的封装”:将一些属性和方法封装起来,变成“我的”;

这是广义的封装;但通常所说的封装,比这个更“严格”:

将一个类中的属性或方法“尽可能地”少对外开放其使用权限;

继承:

就是语法上的常见情形;

继承是设计类的时候的代码重用的最重要的机制;

多态:

就是多种表现形态;

1,不同的对象,使用相同的方法,可能会得到不同的结果;

2,同一个对象,使用相同的方法,也可能会得得到不同的结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值