usephp函数
‘壹’ php 命名空间函数和类中不能使用use吗
public 表示全局,类内部外部子类都可以访问;
private表示私有的,只有本类内部可以使用;
protected表示受保护的,只有本类或子类或父类中可以访问;
当实例化对象时,在外部只能使用其公共方法。不能使用protected和private方法。
而protected方法当子类继承时,可以调用父类的protected方法。或者在本类中使用,
‘贰’ 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 匿名函数,也叫闭包函数
应该说不对,在 php 中 使用了 use 语句的匿名函数才是闭包函数。php 的变量默认是局部的,没有 use 语句,匿名函数使用不了定义作用域里的变量。只有使用了定义作用域内变量的才能叫闭包函数。
‘肆’ 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用法的疑问
子类B不可以直接使用类C的方法。需要Use类C后,才可以使用类C的方法。
use是你在当前文件需要引用哪个类时,在当前文件的代码前面声明——如果当前文件有声明namespace,则放在namespace之后。
‘陆’ PHP 的use 命名空间 是什么意思
有点类似于 java 中的包机制,用来解决重名问题的,每一个命名空间都是独立的
给你举个例子吧,比如我现在想写两个类,名字都叫 Action
<?php
namespaceA;//定义命名空间
classAction{
//..
}
namespaceB;//定义第二个命名空间
classAction{
//..
}
use 关键字用于导入某个命名空间下的类, 如果我在B空间内想使用A空间中的Action类,就需要导入这个类才能使用(当然也可以指明空间前缀来使用)
namespaceB;
//在本空间中需要使用A空间中的Action类,使用use导入
useAAction;//导入,如果本空间中也有一个Action会出现错误,因为类重名了
useAActionasA_Action;//通过取别名的方式解决
$var=newA_Action;
‘柒’ 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 来实现。
‘捌’ php子类怎么使用父类的use
你指的是导入命名空间的语法 use?
那不存在父类子类的说法。use只是将另外一个命名空间的定义(类或函数等)导入到当前命名空间使用。
每个文件(如果一个文件有多个命名空间,那每个命名空间导入一次)使用该语法导入一次,就可以一正常使用了。
如果一个文件里同时定义了两个类,同时只有一个命名空间,那在命名空间后导入一次就可以在两个类里同时使用了
PHP: 命名空间
‘玖’ php类中定义了一个函数,怎么使用它
php类中定义的函数有几种,
例如:
classA{
//公共方法
publicfunctiontest(){
//dosomething
}
//受保护的方法
protectedfunctiontest2(){
//dosomething
}
//静态方法
staticfunctionst(){
//dosomething
}
//私有方法
privatefunctiontest3(){
//dosomething
}
//内部访问
publicfunctionuse(){
//使用公共方法
$this->test();
//使用受保护方法
$this->test2();
//使用私有方法
$this->test3();
//使用静态方法
self::st();
}
}
//外部调用方法:
$a=newA();
$a->test();//外部使用test,
//$a对象不能外部使用受保护方法和私有方法,受保护方法可以被继承到,而私有方法不能被继承。
A::st();//外部使用静态方法
‘拾’ php中use 的问题
use Tymon\JWTAuth\Exceptions是引入exceptions内部的所有方法,其中JWTException是一个类,所以是先use,后用new生成对象。