作业1:自写案例演示匿名函数的三个应用场景
场景1:作为一个值
实例
<?php // 1、匿名函数作为值使用 // 注意:匿名函数当值定义时是一条语句,需要在结尾加‘;’ $cal = function ($a, $b) { // 做取模运算 return $a % $b; }; // 调用时需要在变量后加(),()内是匿名函数的参数 echo $cal(100, 30);
运行实例 »
点击 "运行实例" 按钮查看在线实例
场景2:做为回调参数来使用
回调函数:回调函数是指调用函数的时候将另一个函数作为参数传递到调用的函数中,而不是传递一个普通的变量作为参数
使用回调函数是为了可以将一段自己定义的功能传到函数内部使用
实例
<?php // 2、匿名函数当回调函数使用 // 匿名函数当回调函数使用时,匿名函数当做原函数的一个参数 $arr = [2, 8, 5, 7, 3, 4, 1]; usort($arr, function ($a, $b) { return $a - $b; }); echo '<pre>' . print_r($arr, true); echo '<br>'; ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
场景3:获取父作用域的变量
实例
<?php // 3、获取父作用域的变量 $str = 'niminghanshu'; $s = function () use ($str) { echo $str; }; echo $s(); echo '<br>'; ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
场景4:
实例
<?php // 4、作为闭包函数 // 获取父函数中元素的匿名子函数就是闭包 function sum($c, $d) { return function () use ($c, $d) { return $c + $d; }; } echo sum(10, 20)(); ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
作业2:深刻理解全名空间的意义,并实例演示多个命名空间的场景
一、命名空间的作用
在PHP中,命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题:
1、用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
2、为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。应用其他命名空间时可以使用as为类其别名。例如:use My\Full\Classname as Another;
二、定义命名空间:
命名空间必须在脚本的第一行定义。格式:namespace 命名空间名
三、在同一个文件中定义多个命名空间
使用大括号形式的语法
四、使用命名空间
命名空间地址\命名空间名\函数名
其中最前面加入\代表根目录,当前空间可以用namespace表示。例如 namespace\num();
实例
<?php namespace a{ function num($a,$b){ return $a+$b; } } namespace b{ function num($a,$b){ return $a-$b; } echo namespace\num(30,10); echo '<br>'; echo \a\num(30,10); } ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
作业3:实例演示类与对象的关系与使用方式
类是对象的模板,对象是类的实例。
实例
<?php namespace test; //声明一个类,类名为Test class Test { // 声明一个public属性$name,$name类内类外均可使用。 public $name = '小红'; public $age = '12'; public $sex = '女'; //声明一个public函数myTest(),次函数类内类外均可调用 public function myTest() { echo '我的类'; } } // 创建一个Test类的对象$test $test = new Test(); // 调用$test中的public属性(成员变量) echo '我的名字是:' . $test->name . ',我今年' . $test->age . '岁了' . ',我是' . $test->sex . '生.'; // 调用myTest函数 $test->myTest();
运行实例 »
点击 "运行实例" 按钮查看在线实例
总结:
1、PHP中匿名函数又称为闭包函数,允许临时创建一个没有指定名称的函数。最经常用作回调函数参数的值,也可以作为变量的值来使用。还可以从父作用域中继承变量。
2、命名空间最重要的作用是解决函数、常量、类、接口重名的问题。
3、类是对象的模板,对象是类的实例。