Учитывая следующий интерфейс:
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 с указанием:
Передача по ссылке во время разговора устарела
Итак, я посмотрел это сообщение, и документация кажется вполне ясной, как решить эту проблему. Удаление амперсанда из текущего звонка.
Поэтому я изменил свой код, чтобы он выглядел так:
$soapProvider = array( "FilePool", "UserList" );
foreach( $soapProvider as $provider ) {
call_user_func( array( $provider, "registerSoapTypes" ), $server->wsdl );
call_user_func( array( $provider, "registerSoapOperations" ), $server );
}
Теперь PHP жалуется
Параметр 1 для FilePool :: registerSoapTypes должен быть ссылкой, задано значение
Параметр от 1 до FilePool :: registerSoapOperations ожидается в качестве ссылки, значение дано
В дополнение к этому, функциональность теперь нарушена. Так что это, очевидно, не может быть решением.