Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/04/2012, à 13:45

Morgiver

[PHP]Type d'un paramètre de fonction

Saloute smile

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

http://img689.imageshack.us/img689/5230/maise.png


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

Haleth a écrit :

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

Mathieu147 a écrit :

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

HP a écrit :
Mathieu147 a écrit :

Donc utiliser un truc qui marche à moitié…

Ouais… PHP quoi…

big_smile


Pffff…

Hors ligne