【发布时间】:2010-10-19 13:27:21
【问题描述】:
给定如下界面:
interface ISoapInterface {
public static function registerSoapTypes( &$wsdl );
public static function registerSoapOperations( &$server );
}
还有如下代码:
$soapProvider = array( "FilePool", "UserList" );
foreach( $soapProvider as $provider ) {
call_user_func( array( $provider, "registerSoapTypes" ), &$server->wsdl );
call_user_func( array( $provider, "registerSoapOperations" ), &$server );
}
FilePool 和 UserList 都实现了ISoapInterface。
PHP 会抱怨 foreach 中的两个调用:
调用时传递引用已被弃用
所以我查看了这条消息,the documentation 似乎很清楚如何解决这个问题。从实际调用中删除与号。
所以我把我的代码改成这样:
$soapProvider = array( "FilePool", "UserList" );
foreach( $soapProvider as $provider ) {
call_user_func( array( $provider, "registerSoapTypes" ), $server->wsdl );
call_user_func( array( $provider, "registerSoapOperations" ), $server );
}
现在 PHP 抱怨
FilePool::registerSoapTypes 的参数 1 应为参考,给定值
FilePool::registerSoapOperations 的参数 1 应为参考,给定值
除此之外,该功能现在已损坏。所以这显然不能成为解决方案。
【问题讨论】:
标签: php pass-by-reference