博客列表 >匿名函数的三个应用场景、命名空间、类与对象-2019-09-29

匿名函数的三个应用场景、命名空间、类与对象-2019-09-29

风吹的博客
风吹的博客原创
2019年10月20日 18:52:542032浏览

1.匿名函数

<?php
//1.匿名函数三个应用场景
//1.1作为值被调用
$t=function ($a,$b){
	return $a*$b;
};
echo $t(10,10);

echo'<hr>';

//1.2作为回调参数来使用
$arr=[7,9,10,5,33,6];
usort($arr,function($a,$b){
	return $a-$b;
});
echo'<pre>'.print_r($arr,true);
echo'<hr>';
//1.3获取父作用域中的变量(此时匿名函数即为闭包)
function s(){
	$a=6666666666666;
	return function()use($a){
		return $a;
	};
}
echo s()();


?>

效果图:

demo1.png

2.命名空间

命名空间:个人理解就是在出现两个或者以上相同代码内容时,为了区分   便于使用 且 在使用时不发生冲突  就得给他们取一个名字,课件中的namespace_0929,

可以翻译为:
为此空间取名为_0929.

注意:

  1. 命名空间必须是脚本的第一行代码

  2. 正常情况下,一个文件一个空间,不能将多个空间写在一脚本上

  3. 当一个php文件中创建了命名空间就无法创建匿名空间,即使可以做也不要做

  4. 相同的命名空间会合并,尽管不在一个脚本里



<?php
namespace a;
function aa($a,$b){
	return $a+$b;
}
namespace b;
function aa($a,$b){
	return $a+$b;
}

echo \a\aa(10,20);

效果图:

命名空间.png

3.类与对象

首先明确几点:类是对象的模板。类的载体是对象。类实例化后就是对象。打个比喻:我想要一个有黑色长发,身高165左右的女朋友。那我找女朋友的时候就要找符合这个要求的女孩。在这里,这两个要求其实就是我找对象时的模板(就要找这类女孩),凡是能装近这个模板的女孩都能做我对象,只是我能不能追到的问题,当我有一天真的找到了一个身高165黑色长发的女孩做我女朋友时,那我的要求就实例化(具体化)了,实例化结果 就是我女朋友。而且我女朋友身上有我当初提的要求(类的载体是对象)

<?php
class black{
	public $v='黑色长发';
	public $vv='165';

}
$obj = new black();
echo '要求:'.$obj -> v;
echo '<br>';
echo '要求:'.$obj -> vv;

效果图:

实例化.png

此次作业有几个问题,希望老师在改作业时解答一下:

1.为什么匿名函数获取父作用域中的变量时,最后的echo s()();
这里要打两个圆括号?打一个就出错?

2.为什么在用呢pre时,一定要用true,有个缓冲区不然浏览器显示出来不对

3.匿名空间的代表是全局空间用 \ 表示,当我们创建一个脚本时,可否认为整个脚本就是一个全局空间?


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议