Pergunta

Olá a todos, eu uso array_map de vez em quando para escrever métodos recursivos.por exemplo

function stripSlashesRecursive( $value ){

    $value = is_array($value) ?
        array_map( 'stripSlashesRecursive', $value) :
    stripslashes( $value );
    return $value;
}

Pergunta:

digamos que quero colocar esta função em uma classe estática, como usaria array_map de volta ao escopo do método estático na classe como Sanitize::stripSlashesRecursive();Tenho certeza de que isso é simples, mas não consigo descobrir, olhei para o php.net também.

Foi útil?

Solução

Ao usar um método de classe como um retorno de chamada para funções como array_map() e usort(), você deve enviar o retorno de chamada como matriz de dois valores. O segundo valor é sempre o nome do método como uma string. O 1º valor é o contexto (nome ou objeto de classe)

// Static outside of class context
array_map( array( 'ClassName', 'methodName' ), $array );

// Static inside class context
array_map( array( __CLASS__, 'methodName' ), $array );

// Non-static outside of object context
array_map( array( $object, 'methodName' ), $array );

// Non-static inside of object context
array_map( array( $this, 'methodName' ), $array );

Outras dicas

array_map Leva um ligar de volta como seu primeiro parâmetro.

E um retorno de chamada para um método estático é escrito assim:

array('classname', 'methodname')


O que significa que, no seu caso específico, você usaria:

array_map(array('stripSlashesRecursive', ''), $value);


Para mais informações sobre retornos de chamada, veja esta seção do manual do PHP: Pseudotipos e variáveis ​​usadas nesta documentação – retorno de chamada.

array_map( array('Sanitize', 'stripSlashesRecursive'), $value) ...
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top