匿名函数、命名空间、类与对象的场景及使用
没有命名的函数叫匿名函数,PHP里面匿名函数也叫闭包函数,命名函数按名调用,匿名函数按值调用,将函数表达式赋值给变量。
匿名函数使用场景一:作为值来使用
实例
<?php //匿名函数,作为值来使用,变成一个语句,必须要以分号结尾 $sum = function($a,$b){ return $a+$b; }; echo $sum(12,15); ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
匿名函数使用场景二:作为回调参数来使用
实例
<?php $arr = [3,1,6,2,9]; // usort 是数组排序函数 usort($arr,function($a,$b){ return $a-$b; }); echo '<pre>'. print_r($arr,true).'</pre>'; echo('<hr>'); ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
匿名函数使用场景三:获取父作用域中的变量,闭包来使用
实例
<?php function func(){ $email = 'example.@php.cn'; return function() use ($email) { return $email; }; } echo func()(); ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例运行的结果
PHP 命名空间(namespace),主要解决类名、函数名或变量名的命名冲突,命名空间必须是脚本的第一行代码,命名空间类似于文件目录结构,一个目录里不能有两个相同的文件夹或两个相同的文件,命名空间就可以解决这个问题;命名空间的应用对象,主要用在全局中的四类成员:函数、常量、类和接口。
实例
<?php namespace one; function func($a,$b){ return $a+$b; } echo func(8,2); echo '<hr>'; namespace two; function func($a,$b){ return $a-$b; } echo func(8,2); echo '<hr>'; namespace three; function func($a,$b){ return $a*$b; } echo func(8,2); echo '<hr>'; //运行的结果 //10 //6 //16 ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
在同一个脚本中,定义了三个func函数,因为定义了三个命名空间,每个func函数只会调用自身命名空间的方法。
匿名函数、命名空间、类与对象的场景及使用
类与对象,类是对象的模板,对象是类的实例化。类由成员变量和成员函数(方法)组成。
实例
<?php namespace mobile; class mobile{ public $product = '手机'; public $price = 3000; public $model = 'huawei Mate30'; public function name(){ return $this->product; } } $obj = new mobile(); echo $obj->name(); echo '<br>'; echo '商品型号:'.$obj->model; //运行结果 //手机 //商品型号:huawei Mate30 ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
小结:匿名函数是一个函数,在赋值给一个变量后,就成了一个语句,后面要加上分号;, 命名空间可以防止重名,在调用当前命名空间的方法时使用 namespace\func() ; 访问另一个空间的函数要从根空间开始用反斜杠表示\ ; 命名空间的应用对象,函数、常量、类和接口。 类是变量与作用于这些变量的函数的集合,用关键字new来实例化,类和对象可以提高代码的复用。