黑马程序员_PHP_课程同步笔记day34:PHP类其他魔术方法

时间:2019-05-12 19:45:12下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《黑马程序员_PHP_课程同步笔记day34:PHP类其他魔术方法》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《黑马程序员_PHP_课程同步笔记day34:PHP类其他魔术方法》。

第一篇:黑马程序员_PHP_课程同步笔记day34:PHP类其他魔术方法

【黑马程序员济南】PHP类其他魔术方法

序列化:

就是将一个变量的“内存数据形式”,转换为“硬盘数据形式”的过程。

分2步就可以:

1,$str = serialize($变量);//该函数将该变量数据,转换为一个字符串

2,file_put_contents(“文本文件名”, $str);//将该字符串保存到该文件中。[PHP] 纯文本查看 复制代码 ? 01 5.5,'bbcc'=>true);13 $data3 = new A();

黑马程序员济南中心 编著 //开始转换得到一个字符串 16 $str1 = serialize($data1);17 $str2 = serialize($data2);18 $str3 = serialize($data3);19 //开始写入硬盘中 file_put_contents('./file1.txt',$str1);22 file_put_contents('./file2.txt',$str2);23 file_put_contents('./file3.txt',$str3);24

[align=left] 反序列化:

将已经存到硬盘的变量数据,转换(恢复)到内存数据(变量)形式的过程。同样分2步:

1,$str = file_get_contents(文本文件名);

//读取出序列化之后所存储的文件内容(就是字符串)

2,$变量 = unserialize($str);

//将该字符串恢复为变量(数据);

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

黑马程序员济南中心 编著

02 //演示3中数据的序列化结果 03 class A{ 04 public $p1 = 1;05 protected $p2 = 2;06 private $p3 = 3;07 } 08

09 //开始从硬盘中读取数据(字符串)10 $str1 = file_get_contents('./file1.txt');11 $str2 = file_get_contents('./file2.txt');12 $str3 = file_get_contents('./file3.txt');13 //开始转换得到一个字符串 15 $data1 = unserialize($str1);16 $data2 = unserialize($str2);17 $data3 = unserialize($str3);18 var_dump($data1);20 var_dump($data2);21 var_dump($data3);结果为: float(1.1)

黑马程序员济南中心 编著

array(3){[0]=>string(2)“aa” [5]=>float(5.5)[“bbcc”]=>bool(true)} object(A)#1(3){[“p1”]=>int(1)[“p2”:protected]=>int(2)[“p3”:“A”:private]=>int(3)} __sleep():

该魔术方法是对一个对象进行“序列化”的时候,会被自动调用。

此时,在该方法中,我们就可以(而且必须)返回一个数组,该数组中含所有我们“想要”对该对象的属性进行序列化的属性名。[PHP] 纯文本查看 复制代码 ? 01

黑马程序员济南中心 编著 }

__wakeup()

该魔术方法是对一个对象进行“反序列化”的时候,会被自动调用。

此时,该对象的属性值,就会恢复到“原来的数据”

但:如果某个属性当时并没有做序列化,则此时就不会恢复为原来对象的数据,而是恢复为该类中的初始数据; [PHP] 纯文本查看 复制代码 ? 01

黑马程序员济南中心 编著 $this->p1 = $p1;13 $this->p2 = $p2;14 $this->p3 = $p3;15 } 16 function __sleep(){ 17 return 18 array(“p1”,“p3”);19 } 20 function 21 __wakeup(){ 22 echo “对象苏醒23 了。。”;24 } 25 } 26

$s1 = new S(11,12,13);$str = serialize($s1);var_dump($)

[align=left]

黑马程序员济南中心 编著

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

黑马程序员济南中心 编著

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

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

PHP函数 1.概念

将一段常用的功能代码,进行封装,然后起个名字,叫”函数” 使用函数,可以减少我们的工作量。对于后期的项目维护,十分方便。2.函数定义格式

Function functionName(形参1,形参2,形参3......){

函数的功能代码

[return 参数r] } 函数语法格式说明:

Function是系统关键字,不分大小写。

functionName是自定义的函数名称。函数名的命名规则与变量一样,只是不加$符号。

()定义函数时的参数,该参数又称为”形参”。

形式参数:主要用来接收调用函数者,传递过来的数据。

形参可以是多个,多个形参之间用逗号隔开,也可以没有形参

形参其实就是一个变量的名称,主要用来临时存储数据的。{}是函数的功能代码。Return语句:

向谁返回内容?谁调用了该函数,就向谁返回。

返回什么内容?该内容的类型不限制,可以是任何数据类型

黑马程序员济南中心 编著

Return语句,一旦执行,函数将中止。也就是return语句之后的函数代码不再执行。

Return 语句返回一个值,并退出函数。

3.函数调用

函数定义是不会自动执行的。函数必须要经过调用,才能看到结果 调用函数和定义函数不分顺序。4.函数参数

a)形式参数(形参):形参主要用来接收调用函数传递过来的数据。

i.形参一般是变量,不能是具体的值

ii.形参只能在函数内部使用

b)实际参数(实参):向定义函数传递的数据

i.实参可以是具体值,也可以是一个变量

c)形参和实参的个数,一般情况下必须一致 Function showInfo($a){ Echo “OK”;} $a = 100;showInfo($a);函数参数传递 1.值传递(拷贝传值)将一个变量的值,”拷贝”一份,传给形参

黑马程序员济南中心 编著

在函数内部,对形参进行了修改,而函数外的这个变量不会改变 函数内的形参,与函数外的实参,是相互独立的,没有任何联系的

在PHP中,默认”值传递”的有:字符型、整型、浮点型、布尔型、数组、NULL

2.引用传递

将一个变量的地址传给形参,即形参与变量指向的是”同一物”.变量和参数之间是相互联系,修改一个,另一个会跟着变。

参数在使用引用传递时,需要在”形参”前加一个”&”符号。”实参”前不能添加。

默认引用传地址:资源和对象

黑马程序员济南中心 编著

3.默认参数

PHP支持默认参数。

当实参格式少于形参个数时,那么少的那个实参可以用末日的形参来代替

匿名函数

1.概念

没有名字的函数就是匿名函数,它不能单独定义也不能单独调用 匿名函数一般用来给其他变量赋值的。

黑马程序员济南中心 编著

2.匿名函数的两种用法

i.将匿名函数当成一个数据,赋给其他变量

ii.将匿名函数作为函数的参数来使用

变量作用域

变量作用域:就是变量生效的范围

在PHP中三种变量作用域:全局变量、局部变量、超全局变量。1.全局变量

全局变量:在函数外部定义的变量,称为”全局变量”。

黑马程序员济南中心 编著

全局变量,在网页执行完毕,就消失了。在JS中,全局变量,可以直接在函数内部来使用 在PHP中,全局变量不能直接在函数内部使用 2.局部变量

局部变量:在函数内部定义的变量,称为”局部变量”。局部变量,只能在函数内部来使用 局部变量,在函数执行完毕后就消失了。3.在局部作用域中访问全局变量---global关键字

Global关键字,只能在函数内部来使用

不能在使用global关键字时,直接给变量赋值。只能是先声明为全局,再赋值。

$GLOBALS超全局数组

“超全局数组变量”可以在网页的任何地方使用,包括函数内部和函数外部。$GLOBALS超全局数组中包含的内容有:$_GET、$_POST、$_COOKIE、$_FILES

黑马程序员济南中心 编著

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

【黑马程序员济南】PHP课程同步笔记day30:PHP类中

关键字

今天我来为大家讲解一下PHP类中的一些关键字: parent和self关键字 parent:

用在一个类的一个方法中;

代表这个类的“父类”——注意,是代表一个类,不是类的对象;

但:实际应用中,常常会看起来“代表”这个类的父类对象——因为用的时候,是使用了父类的对象来调用某个方法而产生了所谓的对象传递; [PHP] 纯文本查看 复制代码 ? 01

黑马程序员济南中心 编著 1;//声明静态属12 性 13 } 14 15 class B extends A{ static function f1(){ echo “父类的静态属性s1:”.parent::$s1;echo “父类的常量PI:”.parent::PI;} } B::f1();显示结果:

父类的静态属性s1:1

父类的常量PI:3.14

黑马程序员济南中心 编著

self:

用在一个类的一个方法中;

代表这个类“本身”——还是代表一个类,而不是类的对象; [PHP] 纯文本查看 复制代码 ? 01

黑马程序员济南中心 编著

己的常量PI:”.self::PI;} } B::f1();典型使用1:

在构造方法中,调用父类的构造方法,以完成对象的一些共同的数据初始化工作。[PHP] 纯文本查看 复制代码 ? 01

04 class Member{ 05 public $name;//声明一个变量 06 public $salary;//声明一个变量 07 //创建一个构造方法 08 function

09 __construct($name,$salary){ 10 $this->name = $name;//把实例11 化类时的实参传递给之前声明好的变量 12 $this->salary = $salary;//把实例13 化类时的实参传递给之前声明好的变量

黑马程序员济南中心 编著 } 15 } 16 class Teacher extends Member{ 17 public $edu;//声明一个变量 18 //创建一个构造方法 19 function __construct($name,$salary,$edu){ 21 //$this->name = $name;22 //$this->salary = $salary;23 //将上面两行的内容用下面一行类24 代替 //调用父类的构造方法,去完成一个26 共同属性数据的初始化 parent::__construct($name,$salar28 y);29 //把实例化类时的实参传递给之前声30 明好的变量

$this->edu = $edu;32 } 33 } 34 class Student extends Member{ 35 public $age;//声明一个变量

黑马程序员济南中心 编著

//创建一个构造方法 37 function

__construct($name,$salary,$age){ 39

//调用父类的构造方法,去完成一个41 共同属性数据的初始化

parent::__construct($name,$salary);//把实例化类时的实参传递给之前声明好的变量

$this->age = $age;} } $t1 = new Teacher(“老师”,1000,“大学”);echo “

”;var_dump($t1);echo “
”;$s1 = new Student(“学生”,100,18);var_dump($s1);

黑马程序员济南中心 编著

不知道大家对今天讲解的parent和self关键字学习的程度如何啊?如果有兴趣,欢迎来黑马程序员济南中心来详细了解PHP~

黑马程序员济南中心 编著

第四篇:黑马程序员_PHP_课程同步笔记day13:PHP基础介绍

【黑马程序员】PHP课程同步笔记day13:PHP基础介绍

1.语言基础

PHP文件的访问,必须要经过虚拟空间(域名),才能访问PHP文件,不能本地直接访问 Php文件的扩展名:.php Php代码的标记: Php区分大小写。但是函数名和关键字不区分大小写。每一条语句,必须以英文下的分号(;)结束。2.语句结束符

每一条PHP语句,都要以英文状态下的分号(;)结束。

PHP中的语法结构(if、switch、for、while、do while、function、foreach等)不能加分号(;)结尾。

如果PHP代码中,只有一条语句的话,可以省略分号;如果是多条PHP语句,最后一条语句可以省略分号。3.注释

HTML注释: CSS注释:/* */

黑马程序员济南中心 编著

JS注释://或/* */ PHP的单行注释://或# PHP的多行注释:/* */ 注意:

PHP多行注释不能嵌套

PHP的注释在浏览器端同样看不见

PHP变量

1.变量的概念

变量是临时存储数据的容器 变量是在内存中存在和运行的

变量是一个代号。用变量来代替一个数据 2.变量命名规则

变量名称包含的字符有:a-z、A-Z、0-

9、_ 变量名只能以字母或下划线开头 变量名不能以数字开头

PHP的变量前,必须加”$”符号。”$”不是变量名称的一部分。”$”之后为变量名

PHP变量是区分大小写的

PHP关键字,也可以作为变量名称。如$if、$while等 PHP长文件名如何表示

“驼峰式命名”:$getUserName “下划线式命名”:$get_user_name

黑马程序员济南中心 编著

PHP变量操作

1.定义变量

PHP的变量不用提前定义,用的时候直接赋值即可.$name = “abc”;JS的变量在使用时要提前声明。Var name=”abc”;2.变量赋值

使用”=”赋值号,给变量进行赋值(往容器中装东西)。

“=”含义:将”=”右边的运算结果,赋值给”=”左边的变量名称,左边不能是一个运算表达式。

举例:$a = $b + 10*24-26 3.读取变量值

$name = “Mary”;Echo “我的名字叫$name”;4.判断变量是否存在isset()如果一个变量的值不等于NULL,就返回TRUE,反之返回FALSE 5.判断变量是否为空empty()对于empty来说,0、””、”0”、0.0、NULL、FALSE、array()认为是空,返回TRUE,反之就返回FALSE.6.删除变量unset()Unset()函数

语法:void unset(mixed $var[,mixed$....])提示:变量被删除后,变量的返回值为NULL。

黑马程序员济南中心 编著

变量的值传递和引用传递

1、值传递

将变量的值”复制”一份,传给另一个变量。

这两个变量之间没有任何联系,修改其中一个,另一个变量的值不会改变。在PHP中,哪些数据类型,默认是”值传递”。包括:字符型、整形、浮点型、布尔型、数组、NULL。

在JS中,默认是”值传递”包括:字符型、数值型、布尔型、undefined、NULL

黑马程序员济南中心 编著

2.引用传地址

将一个变量的数据地址,”复制”一份,传给另一个变量。这两个变量,指向同一份数据。

在PHP中,默认传地址的数据类型有:对象、资源。在JS中,默认传地址的数据类型有:数组、对象、函数。

但是在PHP 中,也可以让所有其他类似数据,都变成”引用传地址”,只需在引用的变量名前加”&”符号.黑马程序员济南中心 编著

可变变量

一个变量的名称,可以用另一个变量的值来充当。如$$name;

实例:批量获取表单提交值 代码:

if(isset($_POST['ac'])&&$_POST['ac'] == “login”){

黑马程序员济南中心 编著

foreach($_POST as $key=>$value){

/*

$$key = $value

$username = $key;

$password = $value

*/

$$key = $value;//可变变量

}

$sql = “INSERT INTO 007_news(username,password)VALUES('$username','$password')”;

echo $sql.“


”;} ?>

用户名:

密码:

PHP超全局变量数组

1.PHP中的超全局变量数组

$_GET:获取地址栏中传递的参数。

黑马程序员济南中心 编著

$_POST:获取表单method=”post”提交的数据

$_REQUEST:包含$_GET、$_POST、$_COOKIE上数组中的数据 $_SERVER:获取apache服务器或执行环境的相关信息 $GLOBALS:获取全局变量的各个数据 $_SESSION:跟踪用户 $_COOKIE:跟踪用户 $_FILES:上传文件 2.超全局变量$_POST的使用

描述:主要用来获取表单method=”post”提交的数据。举例:$username = $_POST[‘username’];3.实例:简单PHP计算器 代码实现:

if(isset($_POST['ac'])&&$_POST['ac'] == ”login“){

// 获取表单提交值

$value1 = $_POST['value1'];

$value2 = $_POST['value2'];

$operator = $_POST['operator'];

//计算结果

switch($operator){

黑马程序员济南中心 编著

case 1:

$result = $value1 + $value2;

break;

case 2:

$result = $value1-$value2;

break;

case 3:

$result = $value1 * $value2;

break;

case 4:

$result = $value1 / $value2;

break;

case 5:

$result = $value1 % $value2;

} }else{

//网页首页下载完成时,变量初始化

$value1 = ”“;

$value2 = ”“;

$operator =1;

$result = ”“;}

黑马程序员济南中心 编著

?>

“ />

“ />

">

黑马程序员济南中心 编著

超全局变量$_GET的使用

$_GET可以获取地址栏中参数的数组

发送GET数据的方法总结

1.通过表单method=”get”发送

2.通过发送GET数据

黑马程序员济南中心 编著

3.通过JS的location对象也可以发送GET数据

4.使用PHP的header()函数传递参数

黑马程序员济南中心 编著

黑马程序员济南中心 编著

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

类和对象的其他相关技术

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

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

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

function __autoload($class_name){

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

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

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

黑马程序员济南中心 编著

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

1,类文件名有一个统一的形式:比如:类名.clsss.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($class_name){ 07 echo “
进入auto1,需要:$class_name”;08 $file = “./{$class_name}.class.php”;09 if(file_exists($file)){ 10 include_one $file;11 } 12 } 13 function auto2($class_name){ 14 echo “
进入auto2,需要:$class_name”;15 $file = “./{$class_name}.class.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 class 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_课程同步笔记day34:PHP类其他魔术方法word格式文档
下载黑马程序员_PHP_课程同步笔记day34:PHP类其他魔术方法.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

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

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

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

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

    黑马程序员_PHP_课程同步笔记day41:验证码模块讲解

    【黑马程序员济南】PHP模块讲解之验证码部分 在日益庞大的网民的面前,如何能够合理的规避以防止服务器被恶意DoS攻击或者不法之徒利用机器程序自动贴牛皮癣广告?一条小小的验......

    黑马程序员_PHP_课程同步笔记day10:JS小游戏

    【黑马程序员】PHP课程同步笔记day10:JS小游戏 通过前几周的学习我们对JS有一定的了解,今天的内容就是将之前的学习的内容在小游戏中应用,希望大家能够在小游戏中进一步提升自......

    黑马程序员_PHP_课程同步笔记day05:CSS介绍(二)

    【黑马程序员】PHP课程同步笔记day05:CSS介绍(二) CSS内边距属性:padding填充 Padding:一个数字,指的是四个方向是一样的(上右下左) Padding的四个属性:  Padding-top(上内边距),p......

    黑马程序员_PHP_课程同步笔记day36:PDO介绍(二)

    【黑马程序员济南】PDO介绍(二) 异常模式 使用一种特定的异常处理语法,则一发生错误,就会自动处理,不发生错误,就正常执行。 语法形式如下: try { //这里执行pdo的一些操作,比......

    黑马程序员_PHP_课程同步笔记day21:表定义语句

    【黑马程序员】PHP课程同步笔记day21:表定义语句 表定义语句 创建表: 基本形式: Create table [if not exists] 表名(列定义列表,[索引或约束列表])[表选项列表]; 说明: 1.上述......

    黑马程序员_PHP_课程同步笔记day07:JS介绍(二)

    【黑马程序员】PHP课程同步笔记day07:JS介绍(二) 流程控制 If语句: 格式:if(条件){//语句块} 如果条件满足true,才执行大括号里面的代码,如果条件不满足,则不执行大括号里面的代码......