Indução de Tipo

PHP 5 introduz Indução de Tipo. Funções podem forçar que os parâmetros sejam objetos especificando o nome da classe no protótipo da função.

Exemplo 19-39. Exemplo Indução de Tipo

<?php
// Uma classe de exemplo
class MinhaClasse
{
    
/**
     * Uma função de teste
     *
     * Primeiro parâmetro deve ser um objeto do tipo OutraClasse
     */
    
public function teste(OutraClasse $outraclasse) {
        echo
$outraclasse>var;
    }
}

// Outro classe de exemplo
class OutraClasse {
    
public $var = 'Alô Mundo';
}
?>

Não satisfazer a indução de tipo resulta em erro fatal.

<?php
// Uma instância de cada classe
$minhaclasse = new MinhaClasse;
$outraclasse = new OutraClasse;

// Erro Fatal: Argumento 1 deve ser um objeto da classe OutraClasse
$minhaclasse>teste('hello');

// Erro Fatal: Argumento 1 deve ser uma instância de OutraClasse
$foo = new stdClass;
$minhaclasse>teste($foo);

// Erro Fatal: Argumento 1 deve ser diferente de null
$minhaclasse>teste(null);

// Funciona: Imprime Alô Mundo
$minhaclasse>teste($outraclasse);
?>

Indução de tipo também funciona com funções:

<?php
// Um exemplo de classe
class MinhaClasse {
    
public $var = 'Alô Mundo';
}

/**
* Uma função de teste
*
* Primeiro parâmetro deve ser um objeto do tipo MinhaClasse
*/
function MinhaFuncao (MinhaClasse $foo) {
    echo
$foo->var;
}

// Funciona
$minhaclasse = new MinhaClasse;
MinhaFuncao($minhaclasse);
?>

Indução de tipo só pode ser usado com tipos objetos. Indução tradicional com int e string não são suportados.