phpuse函数
1. php子类怎么使用父类的use
你指的是导入命名空间的语法 use?
那不存在父类子类的说法。use只是将另外一个命名空间的定义(类或函数等)导入到当前命名空间使用。
每个文件(如果一个文件有多个命名空间,那每个命名空间导入一次)使用该语法导入一次,就可以一正常使用了。
如果一个文件里同时定义了两个类,同时只有一个命名空间,那在命名空间后导入一次就可以在两个类里同时使用了
PHP: 命名空间
2. php use php namespace 到底是怎么一回事
1. namespace Zend\Http\PhpEnvironment;
这句代码定义了一个命名空间,你可以理解为定义一个名称为 Zend\Http\PhpEnvironment 的域名。
在定义了之后,下面所申明的class, interface, const等都是在申明的这个“域”里面的。当引用一个申明了命名空间的包含文件,想要调用这个里面的东西,那就必须:
调整当前脚本也到这个域名里,否则,就得用namesapce的全称。
比如,inc.php 文件:
namespace Zend\Http\PhpEnvironment;
class Bar {}//定义了一个类
则其他文件调用时:
// 访问Foo的第一种方法,用全称
require 'inc.php';
$foo = new \Zend\Http\PhpEnvironment\Bar();
// 访问Foo的第二种方法
namespace Foo; // 调整当前脚本到Foo这个ns域,而且namespace申明必须在第一句
require 'inc.php';
$foo = new Bar();
2. use关键字目的是使用ns的别名:
比如说,上面的
// 访问Foo的第一种方法,用全称
require 'inc.php';
$foo = new \Zend\Http\PhpEnvironment\Bar();
用uses后,写法如下:
use \Zend\Http\PhpEnvironment as pe; //定义别名
$foo = new \pe\Bar(); //用短的别名来代替原来的
如果省略后面的as ....,那么,就可以直接用最后一节的文字来代替,比如,上面的:
use \Zend\Http\PhpEnvironment; //定义别名
$foo = new \PhpEnvironment\Bar(); //用短的别名来代替原来的
================================================
php官方手册中的相关内容:
在PHP中,namespace命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题:
1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
2. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
PHP 命名空间提供了一种将相关的类、函数和常量组合到一起的途径。
PHP 命名空间支持有两种使用别名或导入方式:为类名称使用别名,或为命名空间名称使用别名, 别名通过操作符 use 来实现。
3. PHP匿名函数和use子句用法实例
本文实例讲述了PHP匿名函数和use子句用法。分享给大家供大家参考,具体如下:
下面方法输出的是hello
world
$param1和$param2是闭包变量
function
test()
{
$param2
=
'every';
//
返回一个匿名函数
return
function
($param1)
use
($param2)
{
//
use子句
让匿名函数使用其作用域的变量
$param2
.=
'one';
print
$param1
.
'
'
.
$param2;
};
}
$anonymous_func
=
test();
$anonymous_func('hello');
下面的方式
输出hello
everyone
function
test()
{
$param2
=
'everyone';
$func
=
function
($param1)
use
($param2)
{
//
use子句
让匿名函数使用其父作用域的变量
print
$param1
.
'
'
.
$param2;
};
$param2
=
'everybody';
return
$func;
}
$anonymous_func
=
test();
$anonymous_func('hello');
下面的方式
输出hello
everybody
$param2中多了一个引用
function
test()
{
$param2
=
'everyone';
$func
=
function
($param1)
use
(&$param2)
{
//
use子句
让匿名函数使用其父作用域的变量
print
$param1
.
'
'
.
$param2;
};
$param2
=
'everybody';
return
$func;
}
$anonymous_func
=
test();
$anonymous_func('hello');
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
4. php 匿名函数 use 怎么用
这里的use实际上就是将全局的$message拷贝到局部函数中,所以很类似于global,不过和global不同的是:
use时:当你在函数中对$message更改的时候不会影响到全局的那个$message,也就是说使用use实际上是拷贝一份变量到函数中。
global时:正相反,在函数中对$message更改的时候会影响到全局的那个$message。我在后盾人视频平台才看见教师讲这个,没想到就能帮到你,呵呵太有趣了
5. 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;//
?>
6. php编程高手们来吧 use有什么用
php中use用来以别名的方式引入命名空间:
比如在a.php中调用My\Full命名空间下的Fun对象:
use My\Full;
$fun = new Fun();//这样就可以了,
如果没有使用use,
则需要:$fun = new My\Full\Fun();//带着命名空间路径
7. PHP关于Use用法的疑问
子类B不可以直接使用类C的方法。需要Use类C后,才可以使用类C的方法。
use是你在当前文件需要引用哪个类时,在当前文件的代码前面声明——如果当前文件有声明namespace,则放在namespace之后。
8. 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);
9. php中use 的问题
use Tymon\JWTAuth\Exceptions是引入exceptions内部的所有方法,其中JWTException是一个类,所以是先use,后用new生成对象。