3/02/2010

Passagem de parâmetros no PHP

Exemplo de passagem de parâmetros no PHP, existe uma grande diferença quando é passado um tipo primitivo (incluindo array) e um objeto.

<?php

#################################################
## TESTANDO PASSAGEM DE PARAMETRO POR ARRAY
#################################################

function muda_array($k) {
 $k[] = 1;
}

$arr = array();
muda_array($arr);
//print Variavel em array: 
print("Variavel em array: $arr[0]\n");


#################################################
## TESTANDO PASSAGEM DE PARAMETRO POR OBJETO
#################################################
class Abc {

 public $abc = 0;

 public function setaVariavel($a) {
  $this->abc = $a;
 }
 
}

function muda_classe($k) {
 $k->setaVariavel(1);
}

$k = new Abc();
muda_classe($k);
//print Variavel em classe: 1
print("Variavel em classe: $k->abc \n");

exit;

?>

Para no primeiro exemplo o array ser alterado após executar o método muda_array, precisamos configurar o parâmetro k como sendo de referência e não por valor, sendo assim mudamos o método para

function muda_array($k) {
 $k[] = 1;
}

Se você rodar a aplicação novamente depois dessa alteração perceberá que o array é alterado apoós a execução do método muda_array.

Um link que explica isso perfeitamente AQUI!

Nenhum comentário: