黑马程序员_PHP_课程同步笔记day33:类和对象的其他相关技术[推荐]_黑马程序员php笔记

2020-02-28 其他范文 下载本文

黑马程序员_PHP_课程同步笔记day33:类和对象的其他相关技术[推荐]由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“黑马程序员php笔记”。

类和对象的其他相关技术

类的自动加载: 基本概念:

当在一个代码中,需要使用一个类(比如new),但此时,在这行代码之前,都没有出现过该类的定义,则php有一种机制,可以让系统这个时候去调用一个函数,在该函数中,我们就可以预先写好加载类的代码——这样就实现了类的自动加载。

该函数就是:__autoload()该函数使用形式如下:

function __autoload($cla_name){

//这里就可以去写加载类的代码,其中:

//$cla_name就代表“正需要”的那个类名;

} [PHP] 纯文本查看 复制代码 ? 1

黑马程序员济南中心 编著

可见,实现这种类的自动加载的方便性,需要做到:

1,类文件名有一个统一的形式:比如:类名.cl.php

2,统一都放在一个文件夹中;

3,尽可能做到:一个类文件中,只放一个类的定义;

自定义类的加载函数

使用下述函数,可以人为定义“多个”自动加载函数(这些函数的作用跟__autoload)一样。使用形式:

spl_autoload_register(“自动加载函数名1”);

spl_autoload_register(“自动加载函数名2”);

。。

然后就可以去定义这些函数了

在运行的时候,如果需要一个类,就先调用第1个函数去“试图”加载该类,如果在该函数中没有加载成功,就会继续调用下一个函数继续“试图”加载该类,依此类推。。举例:

[PHP] 纯文本查看 复制代码 ? 01

04 spl_autoload_register(“auto1”);

黑马程序员济南中心 编著

05 spl_autoload_register(“auto2”);06 function auto1($cla_name){ 07 echo “进入auto1,需要:$cla_name”;08 $file = “./{$cla_name}.cla.php”;09 if(file_exists($file)){ 10 include_one $file;11 } 12 } 13 function auto2($cla_name){ 14 echo “进入auto2,需要:$cla_name”;15 $file = “./{$cla_name}.cla.php”;16 if(file_exists($file)){ 17 include_one $file;18 } 19 } 20 $obj1 = new A();22 echo “”;23 var_dump($obj1);24 $obj2 = new B();26 echo “”;

黑马程序员济南中心 编著var_dump($obj2);

展示结果为: 进入auto1,需要:A object(A)#1(0){} 进入auto1,需要:B 进入auto2,需要:B object(B)#2(0){}

对象的复制

$obj1 = new A();

$obj2 = $obj1;

//这里,虽然是值传递,但因为对象数据存储的特殊性,并没有复制对象数据本身

//即,并没有生成一个新对象;

要想复制一个对象——得到一个完完全全的相同的对象,只能这样:

$obj3 = clone $obj1;[PHP] 纯文本查看 复制代码 ? 01

黑马程序员济南中心 编著

05 } 06

07 $obj1 = new A();08 $obj2 = $obj1;09 $obj3 = clone $obj1;10 var_dump($obj1);11 var_dump($obj2);12 var_dump($obj3);13 $obj1->p1 = 11;15 var_dump($obj1);16 var_dump($obj2);17 var_dump($obj3);展示效果:

object(A)#1(1){[“p1”]=>int(1)} object(A)#1(1){[“p1”]=>int(1)} object(A)#2(1){[“p1”]=>int(1)}

object(A)#1(1){[“p1”]=>int(11)} object(A)#1(1){[“p1”]=>int(11)} object(A)#2(1){[“p1”]=>int(1)}

黑马程序员济南中心 编著

可见,普通赋值所得到的对象,仍然是原来的对象;

只有clone所得到的对象,才是一个全新的对象; 注意:

1,当对一个对象进行克隆的时候,就会自动调用系统中的__clone()魔术方法(如果有);

2,因此,对于单例类的需求来说,就应该做到:禁止克隆,写法:

private function __clone(){ }

对象的遍历

跟数组类似,对象的“所有属性”,也是可以进行遍历的——一个一个取出。

形式:

foreach($对象 as $prop => $value){

//$prop表示属性名;

//$value表示对应的属性值;

} 注意:

其实能取到的属性数据,只是在该位置可以访问(有权限访问)到的那些。[PHP] 纯文本查看 复制代码 ? 01

黑马程序员济南中心 编著

04 05 cla A{ 06 public $p1 = 1;07 protected $p2 08 = 2;09 private $p3 = 3;10 static $p4 = 4;11 function 12 showInfo(){ 13 foreach($this 14 as$prop=>$value){ 16 echo “属性17 $prop = $value”;18 } 19 } 20 } 21

$a1 = new A();foreach($a1 as $prop=>$value){ echo “属性

黑马程序员济南中心 编著

$prop = $value”;}

$a1->showInfo();展示效果: 属性p1 = 1;

属性p1 = 1 属性p2 =2 属性p3 = 3

不知道大家对今天讲的类和对象的其他相关技术学习的怎么样啊?有什么疑问欢迎来黑马程序员济南中心来咨询哟~

黑马程序员济南中心 编著

黑马程序员_PHP_课程同步笔记day30:PHP类中关键字

【黑马程序员济南】PHP课程同步笔记day30:PHP类中关键字今天我来为大家讲解一下PHP类中的一些关键字: parent和self关键字 parent: 用在一个类的一个方法中;代表这个类的“父类......

黑马程序员_PHP_课程同步笔记day35:PDO介绍

PDO介绍pdo是什么? PDO: PHP 的 Data Object(php的数据对象) pdo到底是什么? 它相当于“别人”写的mysqldb工具类! 比如: $pdo = new pdo();//这就是$pdo的一个对象! 但pdo比我们自己写的m......

黑马程序员_PHP_课程同步笔记day11:DOM介绍

【济南中心】PHP课程同步笔记day11:DOM介绍DOM(文本对象模型(Document Object Model)) W3C组织推荐的处理可扩展标志语言的标准编程接口。W3C的DOM,可以使程序或脚本(JS或AS、......

黑马程序员_PHP_课程同步笔记day17:数组介绍

【黑马程序员】PHP课程同步笔记day17:数组介绍数组 1.数组的概念数组是一组值的集合,变量是单个值的容器,而数组是多个值的容器 2.数组的分类1.枚举数组:数组的下标是从0开始的......

黑马程序员_PHP_课程同步笔记day18:PHP函数

【黑马程序员】PHP课程同步笔记day18:PHP函数PHP函数 1.概念将一段常用的功能代码,进行封装,然后起个名字,叫”函数” 使用函数,可以减少我们的工作量。对于后期的项目维护,十分方......

《黑马程序员_PHP_课程同步笔记day33:类和对象的其他相关技术[推荐].docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
黑马程序员_PHP_课程同步笔记day33:类和对象的其他相关技术[推荐]
点击下载文档
相关专题 黑马程序员php笔记 黑马 程序员 对象 黑马程序员php笔记 黑马 程序员 对象
[其他范文]相关推荐
[其他范文]热门文章
下载全文