2015-03-20 1 views
1

En PHP, vous pouvez faire la chose suivante:PHP - paramètre de fonction Force pour integer

class Something {// bla bla} 

function functionName(Something $object) { 
    // Do stuff here ^^^^^^^^^ 
} 

Cela garantit que la fonction a reçu une instance de classe quelque chose.

Mon problème est que je veux appliquer à un type de base.

function functionName(integer $someInt) { 
    // Do stuff here ^^^^^^^ 
} 
functionName(5); 

Cela dit que $ SomeInt est "pas une instance de nombre entier, entier donné". Comment pouvez-vous appliquer à un type de base?

+0

il n'y a aucun mot-clé entier en php –

+0

vous pouvez simplement ajouter '$ SomeInt = (int) $ SomeInt;' sur la première ligne de votre fonction. De cette façon, vous obtiendrez toujours un format d'argument entier. – machineaddict

Répondre

7

Vous ne pouvez pas le faire pour scalar types voir le manuel:

Et une citation de là:

type laisse deviner ne peut pas être utilisé avec des types scalaires tels que int ou chaîne. Les ressources et les traits ne sont pas autorisés non plus.

Mais vous serez en mesure de ce PHP 7: https://wiki.php.net/rfc/scalar_type_hints_v5

+1

Ajout d'une référence si cela ne vous dérange pas ... – jeroen

+1

@jeroen Merci, j'allais juste l'ajouter avec une citation: D – Rizier123

+0

@ Rizier123 Sons prometteurs que PHP 7 soutiendra cela. J'ai demandé plusieurs fois pour cette fonctionnalité, mais j'ai toujours eu une réponse comme «vous n'avez pas besoin de taper les types scalaires si vous comprenez les langues dynamiquement typées». Hihi, semble que je l'ai eu raison! : D – hek2mgl

6

Vous ne pouvez pas typehint types scalaires en PHP. La seule chance est d'utiliser un type de wrapper. La bibliothèque SPL est livrée avec SplInt à cette fin.

Mise à jour: Il semble que PHP 7 offres qui comportent. Soupir, les temps ont changé :)