php回调函数返回字符串,PHP函数的回调方式和字符串转为函数

首先,同javascript一样,php也遵守了“一切皆字符串”的原则,造成函数名和字符串某种特别的联系。

//javascript形式的回调

function sayHello($name)

{

echo "Hello ".$name;

}

function greet($name,$callback)

{

$callback($name);

}

greet('zhangsan','sayHello');

//输出结果Hello zhangsan

这是一种简单的方式,如下,使用php内置的回调函数

function testCallBack( $msg1 , $msg2 )

{

echo msg1.' '.$msg2.'
';

}

$fn_Name = "testCallBack";

$params = array( 'zhangsan' , 'san' );

call_user_func_array( $fn_Name , $params );

如果是对类方法的话,回调却是另一种

class CallbackClass

{

public static function fnCallBack( $msg1 , $msg2 )

{

echo 'msg1:'.$msg1;

echo "
\n";

echo 'msg2:'.$msg2;

}

}

$className = 'CallbackClass';

$fnName = "fnCallBack";

$params = array( 'hello' , 'world' );

call_user_func_array( array( $className , $fnName ) , $params );

如果是对象回调呢

class ObjectClass

{

private $name = 'abc';

public function testMethod( $msg1 = 'default msg1' , $msg2 = 'default msg2' )

{

echo 'object name:'.$this->name;

echo "
\n";

echo 'msg1:'.$msg1;

echo "
\n";

echo 'msg2:'.$msg2;

}

}

$myobj = new ObjectClass();

$fnName = "testMethod";

$params = array( 'hello' , 'world' );

$myobj->$fnName();

//当然也可以使用下面的一种

call_user_func_array( array( $myobj , $fnName ) , $params );

目前主流的PHP mvc框架或多或少使用了 方法或函数名可以和字符串转换的功能,此功能非常强大,以至于在mvc中可以自由的通过url进行方法调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值