给出以下接口:
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
and UserList
两者都实现ISoapInterface
.
PHP 会抱怨 foreach 中的两个调用:
调用时间传递引用已被弃用
所以我查了一下那条消息,然后文档似乎很清楚如何解决这个问题。从实际调用中删除 & 符号。
所以我将代码更改为如下所示:
$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 预期为参考,给定值
除此之外,该功能现在已损坏。所以这显然不是解决方案。