#1 Le 26/04/2012, à 13:45
- Morgiver
[PHP]Type d'un paramètre de fonction
Saloute
Question un peu con je crois, c'est juste pour m'assurer de la bonne utilisation.
Il y a différents type de variable, tant que c'est pas défini, je crois que la variable reste un string (si je ne me trompe).
J'aimerais savoir si la liste des types suivantes est acceptée en tant que définition du type d'un paramètre d'une fonction, comme ceci :
function mafonction (int $monparametre)
{
}
D'après la doc il y a :
- int
- string
- bool
- array
- float
- object
- unset
Voilà, j'imagine que ca doit paraître un peu con comme question, mais j'ai besoin de préciser.
Merci d'avance,
Morgiver
Dernière modification par Morgiver (Le 26/04/2012, à 13:54)
Hors ligne
#2 Le 26/04/2012, à 13:48
- Haleth
Re : [PHP]Type d'un paramètre de fonction
php, type de variable .. ?!?
Pour ton truc, c'est comme ca qu'il faut faire, naivement :
function mafonction($monparametre){
blablabla
}
Bien positionner les accolades, c'est faire un code de qualité. Ca marche aussi avec les espaces et les opérateurs.
Ubuntu is an ancien African word which means "I can't configure Debian"
Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.
Hors ligne
#3 Le 26/04/2012, à 13:53
- Morgiver
Re : [PHP]Type d'un paramètre de fonction
Non.
Il est souvent important de définir le type du paramètre qui passe en fonction. Pour être certains qu'on passera rien d'autre.
C'est définir ce que la fonction à besoin pour fonctionner.
Je veux juste m'assurer des types qui sont utilisables.
EDIT : Pour l'accolade, c'est du troll xD, mais avait certes oublier le function.
Dernière modification par Morgiver (Le 26/04/2012, à 13:54)
Hors ligne
#4 Le 26/04/2012, à 14:07
- Haleth
Re : [PHP]Type d'un paramètre de fonction
En effet, tu as tout à fait raison.
Pour être certains qu'on passera rien d'autre.
Un programmeur fait ce qu'il veut avec sa création .. ne penses-tu pas ?
Tu m'ouvres vers de nouvelles pratiques, j'aime ca.
Par exemple, pour reprendre ton exemple plus haut, j'ai fait une fonction :
function test(integer $data){
echo $data;
}
test(3);
Ho rage, ho désespoir !
Alors, ca marche ou pas ?
Il veut un integer, je lui donne un integer, donc c'est bon
NON !
Catchable fatal error: Argument 1 passed to test() must be an instance of integer, integer given
Ubuntu is an ancien African word which means "I can't configure Debian"
Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.
Hors ligne
#5 Le 26/04/2012, à 14:17
- Morgiver
Re : [PHP]Type d'un paramètre de fonction
Pas besoin d'être aussi sarcastique fieu.
Dans ma tête, si je peux passer en paramètre un type array, je voyais pas pourquoi je ne pourrais pas passer un typage int.
Et si je posais la question c'était justement pour tenter de comprendre comment ça se fait qu'on se tape une erreur. Je ne comprenais pas vraiment le truc, j'avais l'impression de passer à coté de quelque chose.
En effet, je suis passé à coté du Type Hinting. Une précision la dessus aurait été plus cool qu'un foutage de gueule.
Hors ligne
#6 Le 26/04/2012, à 14:22
- Haleth
Re : [PHP]Type d'un paramètre de fonction
Bah, c'était marrant, non ?
Tu voit, tu poses la question, tu répond, et je m'instruit, je te suis redevable, à n'en point douter.
J'ai surtout appris à ne pas typer en PHP, c'est casse-tête et ca ne sert à rien.
Fait une doc dans lequel tu précises le type de variables, c'est plus utile.
Utilise les try catch pour les opérations
Enfin, j'dit ca, j'dit rien
Merci encore
Ubuntu is an ancien African word which means "I can't configure Debian"
Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.
Hors ligne
#7 Le 26/04/2012, à 14:34
- Morgiver
Re : [PHP]Type d'un paramètre de fonction
J'ai surtout appris à ne pas typer en PHP, c'est casse-tête et ca ne sert à rien.
Moai, j'en suis pas certain.
Que je sache, une fonction à un rôle bien précis et le but n'est-il pas de faire en sorte que cette fonction ne fasse pas autre chose que ce qu'elle est censée faire ?
Au lieu de taper une doc de je ne sais combien de page, le typage est plus rapide. Quand tu lis la fonction au moins tu sais ce qu'elle attend pour se mettre en route.
Bête exemple pour aller plus loin pour t'expliquer comment je vois les choses.
Je veux que ma fonction n'affiche QUE des entier, rien d'autre. Vu qu'on ne peut typer que des array je le vois comme ça :
<?php
function afficher($data)
{
if(!is_int($data))
{
return FALSE;
}
else {
echo $data;
}
}
C'est quand même plus rapide de définir le type attendu, plutôt que de s'emmerder à taper une condition. Surtout si tu dois le faire dans toutes tes fonctions. Perso, je trouve ça plus prise de tête.
EDIT : J'allais presque oublier le try catch ça rajoute en prise de tête, non ?
Dernière modification par Morgiver (Le 26/04/2012, à 14:38)
Hors ligne
#8 Le 26/04/2012, à 14:37
- Haleth
Re : [PHP]Type d'un paramètre de fonction
C'est vrai que ca semble allégant
Et donc, ce n'est pas possible avec les types de bases, c'est bien cela ? A voir mon exemple de int (ou un autre avec un string sur google), ce système possède certaine restiction ..
Ubuntu is an ancien African word which means "I can't configure Debian"
Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.
Hors ligne
#9 Le 26/04/2012, à 14:40
- Morgiver
Re : [PHP]Type d'un paramètre de fonction
Ben d'après ce que je viens de lire dans la DOC, si j'ai bien compris, le typage peut être utiliser dans certaines utilisation, ce serait apparemment uniquement dans le contexte d'un objet.
Le seul qu'on puisse typer dans n'importe quel cas, c'est le array.
edit : http://ch2.php.net/language.oop5.typehinting
Dernière modification par Morgiver (Le 26/04/2012, à 14:41)
Hors ligne
#10 Le 26/04/2012, à 14:45
- Jules Petibidon
Re : [PHP]Type d'un paramètre de fonction
En PHP, le type hinting n'est possible qu'avec les types "complexes". Pas de typage avec les types primitifs.
Sinon contrairement à des langages comme Java (entre autres), le typage en PHP n'a aucun intérêt hormis documentaire. Et commenter ses fonctions est bien plus efficace (mais plus chiant faut l'avouer)
Hors ligne
#11 Le 26/04/2012, à 18:51
- Mathieu147
Re : [PHP]Type d'un paramètre de fonction
C'est vrai que ca semble allégant
Et donc, ce n'est pas possible avec les types de bases, c'est bien cela ? A voir mon exemple de int (ou un autre avec un string sur google), ce système possède certaine restiction ..
C'est une bonne idée de préciser le type de variable qu'une fonction attend, parce que si le type est mauvais, de toutes façons ça ne va pas marcher. Alors autant s'économiser le test à l'intérieur de la fonction et préciser le type dans la liste d'arguments.
Mais c'est vrai que apparemment, tout ce que tu peux utiliser comme type de base, c'est array.
Pffff…
Hors ligne
#12 Le 26/04/2012, à 18:59
- pires57
Re : [PHP]Type d'un paramètre de fonction
cela ne sert pas a grand chose ... place un commentaire en précisant ce que tu attend si cela peut te faire plaisir mais n'essaye pas de typé, tu va perdre plus de temps qu'autre chose
Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn
Hors ligne
#13 Le 28/04/2012, à 15:49
- Mathieu147
Re : [PHP]Type d'un paramètre de fonction
Moi je trouve que le typage c'est super, mais seulement pour les langages qui sont prévus pour dès le départ. Par exemple en Java, on peut doit préciser exactement ce qu'on attend comme type de paramètre, et ensuite la documentation générée automatiquement (Javadoc) ou l'autocomplétion automatique faite par l'IDE en tient compte, et c'est super.
Par contre en PHP une variable peut changer de type, on n'est pas obligé de typer les paramètres de fonctions, et ça ne marche pas avec tous les types de base, etc. Donc utiliser un truc qui marche à moitié…
Pffff…
Hors ligne
#14 Le 28/04/2012, à 16:43
- Jules Petibidon
Re : [PHP]Type d'un paramètre de fonction
L'intérêt qu'on peut y trouver, du fait du typage dynamique de PHP c'est qu'avec le type hinting, si le paramètre passé n'est pas du type prévu, ça plante tout simplement plutot que continuer avec un comportement imprévisible.
Du coup ça facilite un peu le débogage.
Hors ligne
#15 Le 28/04/2012, à 22:50
- HP
Re : [PHP]Type d'un paramètre de fonction
Donc utiliser un truc qui marche à moitié…
Ouais… PHP quoi…
cat /dev/urandom >/dev/null 2>&1 #github
Hors ligne
#16 Le 01/05/2012, à 10:22
- Mathieu147
Re : [PHP]Type d'un paramètre de fonction
Mathieu147 a écrit :Donc utiliser un truc qui marche à moitié…
Ouais… PHP quoi…
Pffff…
Hors ligne