欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-11 14:12:54
...

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()();


?>

效果图:

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

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);

效果图:

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

3.类与对象

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

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

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

效果图:

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

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

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

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

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