2017-06-09 5 views
-1

Est-ce encore valable? Parce que ça marche.objet comme paramètre exit()

if(empty($query)) { 
    exit(View::forge('error', $data)); 
    //View::forge('error', $data) = object 
} 

Selon le manuel PHP exit ne devrait accepter "string" ou "int" en tant que paramètre.

donc j'ai essayé:

if(empty($query)) { 
    return View::forge('error', $data); //will not display 
} 

    return View::forge('default', $data); //displays 

Mais il semble qu'il ne tient pas compte et affiche le modèle par défaut, donc j'ai essayé la combinaison avec la sortie:

if(empty($query)) { 
    return View::forge('error', $data); //will not display 
    exit; 
} 

return View::forge('default', $data); //displays 

Mais toujours le même résultat, ce que je voulez-vous savoir que exit ($ obj) est valide dans fuelphp? Parce qu'il semble que ça marche. Ce que je veux faire est si la requête est la page vide afficherait le modèle d'erreur au lieu du modèle par défaut, n'importe quelle aide serait appréciée, merci!

Répondre

0

Si le résultat de l'objet est une chaîne ou un entier, alors il répond aux critères définis dans le manuel. Tout ce qui se trouve dans les parenthèses exit est exécuté comme une ligne PHP; voir l'exemple ci-dessous:

$a = 4; 
$b = 17; 
exit(print $a * $b); 

cette volonté sortie

donc, sur votre question:

exit(View::forge('error', $data)); 

Si le résultat renvoyé de View::forge est une chaîne ou une autre sortie imprimable puis il correspond aux critères énoncés par exit et est exécuté en conséquence.

Que va pas travail est un non entier, le résultat non-chaîne telle que:

$a[] = "trees"; 
$b[] = "cats"; 

exit(array_merge($a,$b)); 

donne:

Avis: Array à la conversion de chaîne en ligne 4

En raison de cette "conversion" je m'attends à ce que si vous passez un objet à la e exit alors il essaiera probablement d'utiliser la méthode de la classe __toString(), si disponible, (mais je ne suis pas encore sûr de cela).

+0

merci pour votre réponse! J'ai essayé var_dump (View :: forge ('error', $ data)); et il est retourné -> objet (Fuel \ Core \ View) # 23() {... etc, vous voulez dire que l'objet est traité comme une chaîne? et le paramètre exit() sera valide? donc je n'ai aucun problème à coder de cette façon? –

1

La classe View de Fuel a une méthode _toString() qui appelle render() pour afficher le modèle de vue. Donc, l'objet renvoie une chaîne lorsqu'il est utilisé comme ça.