8722 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Je sais comment mettre une variable/tableau en tant que paramètre optionnel d'une méthode en php, mais je n'arrive pas à faire de même avec un objet.

Voici le style de code que je souhaiterais réaliser :

public function MaFonction(Objet $obj = FALSE)
{
//blabla
}


Sauf que ceci, ne fonctionne pas. Sauriez-vous comment faire ce genre de chose ? (Ce qui m'interresse par dessus tout dans cette syntaxe, c'est le check que l'objet est bien un objet provenant de la clas

P.S: j'ai vu ceci :

function test(stdClass $obj = NULL) {

}


Ca serait peut être la solution la moins "mauvaise", mais qui nécessite quand même de spécifier un argument lors de l'appelle de la méthode de ma classe.
Modifié par Super_baloo8 (28 Nov 2012 - 15:35)
Salut,

Ce n'est pas la moins mauvaise, c'est la seule possible. À noter que mettre une valeur par défaut à null pour un argument typé signifie aussi que la valeur peut-être null (oui je sais ^^, un exemple)

function f1(StdObject $o){}
function f2(StdObject $o = null){}
function f3(StdObject $o = null, $other){}

f1(null); //erreur car null n'est pas un stdobject
f2(null); //ok
f2(); //ok
f3(null, 42); //ok car le premier paramètre à une valeur par défaut à null)

Le comportement du '=null' est pareil avec le array.
function f4(array $o = null, $other){}
Salut Messieurs,

Merci pour vos retours.

@Niuxe, malheureusement ces fonctions ne permettent pas de contrôler directement que l'argument passer est bien l'objet attendu.

@jo_link_noir, j'ai appliqué le = null, car il fallait que j'avance, mais ce que tu donnes en exemple n'est pas ce que j'ai pu avoir.

Je précise, l'exemple de la fonction "f2" et ce que j'ai appliqué, mais si je l'appelle sans mettre de paramètre, je n'ai plus de retour (c'est pour un outils en surcouche (userscripts) qui ne fonctionne qu'en ajax, et le débug n'est pas aussi simple, malgrès Firebug qui aide énormément)

Je test de nouveau demain.

Encore merci !