导航:首页 > 编程语言 > php匿名函数use

php匿名函数use

发布时间:2023-06-14 06:23:05

php 问题 unexpected T_FUNCTION

整理了一下格式,代码没有问题,三次输出中第一个和第三个都能正常显示,第二个会提示全局变量里没有index v1,因为你的$v1是定义在function里面的,所以提示没有也是正确的。

如果还报错就检查一下各种括号的匹配对不对,还不行就报一下PHP版本

functionfunc1(){
$v1=10;
$v2=20;
$func2=function()use($v1,&$v2){
$v1++;
$v2--;
var_mp($v1,$v2);
//11,19
var_mp($GLOBALS['v1']);
};
$func2();

var_mp($v1,$v2);
//10,19
}

② php匿名函数中的use有什么用

php文档中关于use的说明

所有支持命名空间的PHP版本支持三种别名或导入方式:为类名称使用别名、为接口使用别名或为命名空间名称使用别名。PHP5.6开始允许导入函数或常量或者为它们设置别名。
在PHP中,别名是通过操作符use来实现的.下面是一个使用所有可能的五种导入方式的例子:
Example#1使用use操作符导入/使用别名
<?php
namespacefoo;
useMyFullClassnameasAnother;

//下面的例子与useMyFullNSnameasNSname相同
useMyFullNSname;

//导入一个全局类
useArrayObject;

//importingafunction(PHP5.6+)
usefunctionMyFullfunctionName;

//aliasingafunction(PHP5.6+)
;

//importingaconstant(PHP5.6+)
useconstMyFullCONSTANT;

$obj=newnamespaceAnother;//实例化fooAnother对象
$obj=newAnother;//实例化MyFullClassname对象
NSnamesubnsfunc();//调用函数MyFullNSnamesubnsfunc
$a=newArrayObject(array(1));//实例化ArrayObject对象
//如果不使用"useArrayObject",则实例化一个fooArrayObject对象
func();//
echoCONSTANT;//
?>

③ PHP的几种函数参数类型及一些特殊函数

给你整理如下:

$array = func_get_args();

$count = func_num_args();

$value = func_get_arg();

④ PHP匿名函数怎么使用

这里的use实际上就是将全局的$message拷贝到局部函数中,所以很类似于global,不过和global不同的是:
use时:当你在函数中对$message更改的时候不会影响到全局的那个$message,也就是说使用use实际上是拷贝一份变量到函数中。
global时:正相反,在函数中对$message更改的时候会影响到全局的那个$message。我在后盾人视频平台才看见教师讲这个,没想到就能帮到你,呵呵太有趣了

⑤ php的匿名函数怎么访问外部变量

使用create_function()创建"匿名"函数
前面提到PHP5.3中才才开始正式支持匿名函数,说到这里可能会有细心读者有意见了,因为有个函数是可以生成匿名函数的: create_function函数,在手册里可以查到这个函数在PHP4.1和PHP5中就有了,这个函数通常也能作为匿名回调函数使用,例如如下:

<?php

$array = array(1, 2, 3, 4);
array_walk($array, create_function('$value', 'echo $value'));

这段代码只是将数组中的值依次输出,当然也能做更多的事情。 那为什么这不算真正腔御备的匿名函数呢,我们先看看这个函数的返回值,这个函数返回一个字符串,通常我们可以像下面这样调用一个函数:

<?php

function a() {
echo 'function a';
}

$a = 'a';
$a();

我们在实现回调函数的时候也可以采用这样的方式,例如:

<?php

function do_something($callback) {
// doing
# ...

// done
$callback();
}

这样就能实现在函数do_something()执行完成之后调用$callback指定的函数。回到create_function函数的返回值:函数返回一个唯一的字符串拆败函数名,出现错误的话则返回FALSE。这么说这个伍毁函数也只是动态的创建了一个函数,而这个函数是有函数名的,也就是说,其实这并不是匿名的。只是创建了一个全局唯一的函数而已。

⑥ PHP到底有多糟糕

php是web开发第一语言,这已经是坐稳了的事实,因为使用简单,工具完善,开发效率高等优点为它积聚了大量的粉丝,号称世界上最好的语言。 然而,就算是世界上最好的语言也有缺陷,下面我挑几个php语法层面不那么好用的特性吐槽下。

变量面前的美元($)符号

我想不明白当初php语言的设计师是怎么想的,为什么非要在变量名面前加上这个美元符号?每次我书写变量时必须要按一下shift +4键,用其它语言可以很流畅的写代码,在php中却老是被按这个shift打断整个过程,这除了能给程序员带来麻烦,我实在看不到有其它一丁点的好处。网上流传着的说法好像是因为带美元符号代码解析起来更容易, 性能更好。但是解释类型的语言又不只有php ,为什么其它语言就不用让程序员打这个讨厌的美元符号。每天看着满屏的美元符号,我口袋里的钱也没见多一分呀。

访问对象成员要使用箭头符号

明明按一下点号(.)就可以方便快捷的搞定的问题,却非要使用简单符号(->)来代替,真的是借我一百个脑袋也想不明白php设计者在设计这个特性是什么逻辑。难不成是因为php解释器最终会把php的代码转换成c代码执行,而c中访问指针的成员就是使用箭头符号的。如果是这样那显然是php的设计者们偷懒了,难到不能在转换成c执行的过程中多一步将点号转换为箭头符号的过程吗?不要告诉我又是因为性能问题而办不到,他们就不能为程序员想想?

数组即能当列表也能当字典

写一个函数,返回一个数组类型,但是在函数的外面,鬼知道这个数组是一个list还是一个map?写php代码不知道被这个特性坑过多少回,如果是别人写的函数, 又没有注释,那非得跑进函数里看个明白才知道应该这么样使用这个函数才是安全的。难到就不能把array拆成两个独立的类型分别代表list(列表)和map(字典)吗?这能为程序提供很大的便利,写的代码也更加不会出错。

匿名函数使用外部变量必须使用use关键字导入

这个特性不能说完全没有优点,对于代码的可维护性还是能起到正面的作用的,因为这么做能让我知道我在匿名函数体里面对于外部会有哪些依赖,让代码更可控。然而,这种写法真的是非常的不方便,每次写lambda时,要用到外部的变量时,都要使用use导入,把代码搞的看起来很臃肿,而且,因为其它语言没这个限制,习惯已经养成,所以每次都会忘记使用use导入,导致代码出错,增加排查问题的时间,这真的不是什么好玩的事。

用include导入文件

当把代码模块化时,然后在其它文件中使用,每次都需要使用这个include把文件导入进来,而且还要考虑路径的问题,在结构复杂的项目中,非常让人蛋疼。而像Java和Python之类的语言中,代码管理机制设计的非常好,想用什么import进来就可以了,根本不用考虑路径啊,文件名大小写啊之类的问题,能大大的提升开发效率。虽然,有框架可以解决这类问题,但毕竟是外部实现,使用起来总归不是那么顺畅。这也算是php一个比较大的毛病了。

总结的这五点算是php中存在问题的典范了,希望php团队能加把劲,把这些问题在未来的版本中优化掉,让开发者写代码时有更好的体验,更高的效率,让世界上最好的语言名副其实

⑦ PHP关于Use用法的疑问

子类B不可以直接使用类C的方法。需要Use类C后,才可以使用类C的方法。
use是你在当前文件需要引用哪个类时,在当前文件的代码前面声明——如果当前文件有声明namespace,则放在namespace之后。

⑧ PHP没有函数名的函数什么时候需要用到呢

没有函数名的函数也就是匿名函数,通常在定义后就立即使用,比如当某个函数要求参数也是函数时,就可以用一个匿名函数传递进去,然后那个函数就会立刻调用它了,比如
//这段代码用于过滤数组,筛选数组中的所有偶数:
$a1=array(1,2,3,4,5,6,7,8,9);
$a2=array_filter($a1,function($v){
return$v%2==0;
});
print_r($a2);

也可以把匿名函数赋值给一个变量,以后调用这个变量就相当于执行了这个函数:

$f=function($x,$y){
return$x+$y;
};
echo$f(1,2);
阅读全文

与php匿名函数use相关的资料

热点内容
如何看漫威漫画app 浏览:789
安卓手机如何按拼音排布app 浏览:721
java中exceptionin 浏览:882
java131 浏览:868
学英语不登录的app哪个最好 浏览:299
安卓的后台运行怎么设置 浏览:135
如何撰写论文摘要以及编译sci 浏览:416
安卓如何使用推特贴吧 浏览:429
怎样避免程序员入狱 浏览:856
苹果方块消除安卓叫什么 浏览:535
安卓世界征服者2怎么联机 浏览:297
国企招的程序员 浏览:969
哪个app可以看watch 浏览:518
dns备用什么服务器 浏览:1002
中达优控触摸屏编译失败 浏览:80
上海科纳压缩机 浏览:680
python工时系统 浏览:551
查好友ip命令 浏览:118
通达信python量化交易 浏览:506
cnc编程工程师自我评价 浏览:133