php闭包this
① php有办法在闭包外部得到闭包内部的变量吗
php
有闭包函数么?好像么有吧,你可能是想问以下两种情况
一。外部访问类的私有变量,可以使用
__get()方法
class
test{
private
$b
=
10;
function
__get($name){
return
$this->$name;
}
}
$a
=
new
test();
echo
$a->b;
二.方法内部访问全局变量
可以使用global
关键字
$b
=
10;
function
test(){
global
$b;
echo
$b;
}
② 如何实际使用PHP5.3闭包语法特性
PHP 5.3闭包语法就是一个匿名函数,可以为开发者带来很多不同的体验。与javaScript的闭包相比稍微有点不同,可以这样使用PHP 5.3闭包语法 $closure = function($param) { echo $param; }; //This one takes value of someVar and "stores" it in
③ php方法中如何获取闭包的值
亲,你好,很高兴为你解答该问题
首先,你的这个写法是有问题的哦!~
classA{
publicfunctionaa(){
//函数体为空,所以外面不会有任何输出,即使设置变量来接受该方法,也不会有任何返回
//所以你肯定拿不到123
}
}
$a=newA;
$a->aa(function(){//aa方法是不接受任何参数的,这个传了闭包进去
return123;
});
要想拿到闭包中的123,你需要这样写才可以呦~~
classA{
publicfunctionaa($closure){//aa方法接受一个闭包函数进来
return$closure(123);//调用闭包函数,传入相应参数,并将闭包返回的值再次返回出去
}
}
$a=newA;
$b=$a->aa(function($param){//给aa传入一个带一个参数的闭包
return$param;//闭包方法返回传入的参数
});
var_mp($b);
希望可以帮到你,给我个采纳呦!~~
④ php代码中的this什么作用
$this->变量名或方法名,指向类中的定义的变量或方法。你这里的var应该是一个变量,但是我们一般不用这个做变量名,因为var在php4中是关键字,php5之后用public代替var来申明一个公共变量。
⑤ php中this的含义
下面定义了一个Cart类
<?php
class Cart
{
var $items; // 购物车中的项目
// 把 $num 个 $artnr 放入车中
function add_item ($artnr, $num)
{
$this->items[$artnr] += $num;
}
// 把 $num 个 $artnr 从车中取出
function remove_item ($artnr, $num)
{
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num;
return true;
} else {
return false;
}
}
}
?>
以一段代码说明问题,在一个类的定义内部,你无法得知使用何种名称的对象是可以访问的:在编写 Cart 类时,并不知道之后对象的名称将会命名为 $cart 或者 $another_cart。因而你不能在类中使用 $cart->items。然而为了类定义的内部访问自身的函数和变量,可以使用伪变量 $this 来达到这个目的。$this 变量可以理解为“我自己的”或者“当前对象”。因而 '$this->>items[$artnr] += $num' 可以理解为“我自己的物品数组的 $artnr 计数器加 $num”或者“在当前对象的物品数组的 $artnr 计数器加 $num”。
⑥ PHP中的闭包有什么用处
闭包其实就是外部函数定义的内部函数。
闭包的作用及好处:闭包给访问外部函数定义的内部变量创造了条件。也将关于函数的一切封闭到了函数内部,减少了全局变量,这也是闭包的真实含义。
⑦ php如何序列化/存储闭包(Closure)
实在需要序列化,可以用反射(Reflection),并直接操作代码文件获得上下文信息:/*** 创建一个反射:*/$reflection = new ReflectionFunction($closure);/*** 参数可以直接得到了:*/$params = $reflection-getParameters();/*** 获得Closure的函数体和use变量,形如: * function($arg1, $arg2, ...) use ($val1, $val2, ...) { * // 要获得这个部分的代码!* }* 办法很多,你可以直接用正则、字符串查找或者Tokenizer,等等等等。 * 比如可以先从reflection里得到函数的开始行和结束行:*/$startLine = $reflection-getStartLine(); $endLine = $reflection-getEndLine(); // 然后用str*这个,str*那个的函数来清理,细节不写了:
⑧ PHP闭包函数传参及使用外部变量的方法
本文实例讲述了PHP闭包函数传参及使用外部变量的方法。分享给大家供大家参考,具体如下:
在Laravel控制器写两个方法,一个是在内部创建一个闭包函数,一个是执行传过来的闭包函数,测试闭包的写法,use使用外部变量,及闭包函数的传参。如下:
//测试闭包传参及use使用外部变量
public
function
testClosure($t1,
$t2)
{
$closure
=
function
($param1,
$param2)
use
($t1,
$t2)
{
echo
$param1.$param2.$t1.$t2;
};
$this->execClosure('test.closure',
$closure);
}
//执行闭包函数
protected
function
execClosure($name,
Closure
$closure)
{
echo
'Closure
func
name:'.$name;
echo
'<br>';
$closure('p1',
'p2');
}
在routes.php添加路由:
复制代码
代码如下:Route::get('/test/closure/{t1}/{t2}',['uses'=>'TestController@testClosure']);
访问www.example.com/test/closure/hehe1/hehe2
浏览器输出结果:
Closure
func
name:test.closure
p1p2hehe1hehe2
转自:小谈博客
http://www.tantengvip.com/2016/03/php-closure-use/
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
⑨ php中This关键字我不明白的地方
注意php是弱类语言。。
他不需要事先定义变量的类型也不须事先声明才可以用。
所以$this->b=12 相当于你var $b=12。然后直接调用像你写的echo $this->b;
你的例子里面var $a=13; 就定义了a的值是13。在类里面你用
$this->a就表明你调用$a这个值;
其实$this就是在本类中直接调用属性。千万不能在后面加$符号;
不知道我的理解对你是否有帮助。。我学PHP也不久。。
搞java其实不错; java的面向对象这块很完善。而php则是在php5后才更进一步,并没有java的强
⑩ php 什么时候使用闭包
当一个函数需要使用另一个函数内的变量的时候 闭包简单来说就是能够读取其他函数内部变量的函数。