php判断是否是匿名函数

<?php
class di{
function set($name,$value)
{
$this->_set[$name] = $value;
if(is_string($value))
$this->_type[$name] = 's';
else if(is_object($value))
if(is_callable($value)) //匿名函数类型是对象并且可以调用
   $this->_type[$name] = 'f';
else
                $this->_type[$name] = 'o';
else if(is_array($value))
            $this->_type[$name] = 'a';
else
$this->_type[$name] = 'f';
}
function pt()
{
print_r($this->_set);
print_r($this->_type);
}

function get($name)
{
return $this->_set[$name];
}
}
class db{
function getDb(){
return 'mysql';
}
}
$di = new di();
$di->set('test',function(){
echo $a='hello';
});
$di->set('db',new db());
$di->pt();
$b = $di->get('test');
$b(); 

php 5.4新功能
class bar {}
function  foo(bar $foo) { }  //参数必须是bar类的实例,否则报错
function  foo( array  $foo) {}   //参数必须是数组

function foo(callable $callback) {
$callback('good');
}
//foo("false"); //错误,因为false不是callable类型

foo("printf"); //正确

foo(function($a){echo 'niming:'.$a;}); //正确
class A{
static function show($a){
   echo 'method'.$a;
}
}
foo(array("A", "show")); //正确 

转载于:https://my.oschina.net/u/196016/blog/162540

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值