❶ php闭包函数用use传参有什么意义
PHP语法对于全局变量和局部变量分得太清楚,这里不讨论它好与不好,但确实使用起来比较麻烦。在函数里面调用全局变量,必须global声明以后,才能使用,其它的语言貌似都能直接用。而use在这里的用法,就是解决这个问题的,有时候不但要传参数进来,还要调用局部变量进行计算或判断。举个例子,你也许更明白:
<?php
functiongetMoney($cny){
$usd=6;//这个局部变量,想在闭包里面用,必须放到use里
$func=function($jpy)use($cny){
echo$cny.'<br>';//10
echo$jpy.'<br>';//0.1
echo$usd;//否则就报错,Undefinedvariable:usd
};
$func(0.1);
}
getMoney(10);
❷ PHP 的use 命名空间 是什么意思
有点类似于 java 中的包机制,用来解决重名问题的,每一个命名空间都是独立的
给你举个例子吧,比如我现在想写两个类,名字都叫 Action
<?php
namespaceA;//定义命名空间
classAction{
//..
}
namespaceB;//定义第二个命名空间
classAction{
//..
}
use 关键字用于导入某个命名空间下的类, 如果我在B空间内想使用A空间中的Action类,就需要导入这个类才能使用(当然也可以指明空间前缀来使用)
namespaceB;
//在本空间中需要使用A空间中的Action类,使用use导入
useAAction;//导入,如果本空间中也有一个Action会出现错误,因为类重名了
useAActionasA_Action;//通过取别名的方式解决
$var=newA_Action;
❸ php7使用use引入命名空间提示语法错误
我也遇到了这个问题,我是这样解决的,我服务器装了5.2和7.2两个版本,可能两者有冲突,5.2不支持命名空间,不支持use和namespace,解决办法就是卸载5.2版本!!!
❹ php子类怎么使用父类的use
你指的是导入命名空间的语法 use?
那不存在父类子类的说法。use只是将另外一个命名空间的定义(类或函数等)导入到当前命名空间使用。
每个文件(如果一个文件有多个命名空间,那每个命名空间导入一次)使用该语法导入一次,就可以一正常使用了。
如果一个文件里同时定义了两个类,同时只有一个命名空间,那在命名空间后导入一次就可以在两个类里同时使用了
PHP: 命名空间
❺ PHP关于Use用法的疑问
子类B不可以直接使用类C的方法。需要Use类C后,才可以使用类C的方法。
use是你在当前文件需要引用哪个类时,在当前文件的代码前面声明——如果当前文件有声明namespace,则放在namespace之后。
❻ php命名空间 use使用的问题:
命名空间是运行时解析的。use就相当于一种声明,并不解析和加载。在使用时就可以自动加载进来,那么这里你就可以理解为把db这个类库导入进来了,所以可以正常使用。
❼ php 使用use 和直接传参的区别
实际应用 1 : 在创建闭包时, 生成所use变量的快照, 下文再次调用闭包函数时, 快照变量不改变
$a = 5;
$b = function ($x) use ($a) {
$a += $x; echo $a;
};
$a = 10; // 这个变量被再次赋值, 但是在use语句中的'快照'是不会改变的
$b(100); // 输出 : 105
实际应用 2 : 使用引用传值, 生成所use变量的指针, 下文再次调用闭包函数时, 快照变量会改变(其实这样做与直接传参已经没有区别, 所以这么做意义不大, 而且代码可读性降低)
$a = 5;
$b = function ($x) use (&$a) {
$a += $x; echo $a;
};
$a = 10; // 变量重新赋值, 上文中闭包所引用的变量值也被改变
$b(100); // 输出 : 110
❽ 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;//
?>