回复内容:
自从PHP玩闭包后,大家一口气跳五楼,不费劲。
1、基础:一句话实现定义一个函数并立即调用
大家在JavaScript里经常这么搞,因为变量污染是个不可容忍的事儿。但是PHP里如何实现这样的功能?一个可行方法是:
call_user_func(function(){
echo "hello,world";
});
@陈乏 还有一个解决办法的哈。<?php
class A
{
protected function pro()
{
return "pro";
}
public function pub()
{
return "pub";
}
}
$a = new A();
$ext = function () {
var_dump($this);
// var_dump($this->pro()); //Error: Call to protected method A::pro()
var_dump($this->pub());
};
$ext = $ext->bindTo($a);
var_dump($ext());
<?php
$b=3;
switch(1){
case $b==3:
echo "fuck";
break;
}
?>
<?php
function callback($callback) {
$callback();
}
$obj = (object) "php aaa";
$callback = function () use ($obj) {
print "This is a closure use object, msg is: {$obj->scalar}. <br />";
};
$obj->scalar = "php bbb";
//$obj = (object) "php bbb";
callback($callback);
C语言有趋向于运算符 -->,这个 PHP 也有,就不说了。补充一个:在 PHP 源代码中可以直接输入网址,不需要注释(黑魔法):
<?php
http://www.zhihu.com
?>
奇技淫巧这个咋说呢, 玩玩还可以, 可千万别在实际项目中用, 贡献俩个吧:交换俩个值:
list($b, $a) = array($a, $b);
$a = array($b, $b = $a)[0]; 当然是神奇的BOM头啦,不知道搞的多少PHP初学者睡不好觉 Quora 的列表
What are some cool PHP tricks? XML字符串转数组
$xmlObj = simplexml_load_string($xmlStr);
$xmlArr = json_decode(json_encode($xmlObj) , true);
1. stdClass();$obj = new stdClass;
$obj->a = 1;
$obj->b = 2;










