Conforme mencionado acima, você não poderá ignorar os parâmetros. Escrevi esta resposta para fornecer algum adendo, que era muito grande para incluir em um comentário.
@Frank Nocke propõe chamar a função com seus parâmetros padrão, por exemplo, tendo
function a($b=0, $c=NULL, $d=''){ //...
você deveria usar
$var = a(0, NULL, 'ddd');
que funcionalmente será o mesmo que omitir os dois primeiros parâmetros ( $b
e $c
).
Não está claro quais são os padrões (é 0
digitado para fornecer o valor padrão ou é importante?).
Também existe o perigo de que o problema dos valores padrão esteja conectado a uma função externa (ou embutida), quando os valores padrão podem ser alterados pelo autor da função (ou método). Portanto, se você não mudasse sua chamada no programa, poderia mudar acidentalmente seu comportamento.
Uma solução alternativa poderia ser definir algumas constantes globais, como DEFAULT_A_B
qual seria "valor padrão do parâmetro B da função A" e "omitir" os parâmetros desta forma:
$var = a(DEFAULT_A_B, DEFAULT_A_C, 'ddd');
Para classes é mais fácil e elegante se você definir constantes de classe, porque elas fazem parte do escopo global, por exemplo.
class MyObjectClass {
const DEFAULT_A_B = 0;
function a($b = self::DEFAULT_A_B){
// method body
}
}
$obj = new MyObjectClass();
$var = $obj->a(MyObjectClass::DEFAULT_A_B); //etc.
Observe que essa constante padrão é definida exatamente uma vez em todo o código (não há valor mesmo na declaração do método), portanto, no caso de algumas alterações inesperadas, você sempre fornecerá a função / método com o valor padrão correto.
A clareza desta solução é obviamente melhor do que fornecer valores padrão brutos (como NULL
, 0
etc.) que não dizem nada ao leitor.
(Concordo que ligar como $var = a(,,'ddd');
seria a melhor opção)