Type void, constante null et transtypage unset.

ViPHP
ViPHP | 5924 Messages

11 janv. 2009, 21:04

Bah non, php c'est un typage faible, donc ya pas de déclaration de type.
Et même, la déclaration et la définition des variables se font en même temps. Donc la variable existe à la première affectation… A la limite, on peut imaginer un $i = null; pour déclarer la variable sans l'initialiser mais bon…

Eléphant du PHP | 209 Messages

11 janv. 2009, 21:16

Ok, je dis ça parceque ça m'arrive de plus en plus souvent de faire ça : (int) $i = ...
Ce qui est dommage je trouve, ça serait vraiment mieux de pouvoir le faire à l'initialisation.[/php]

ViPHP
ViPHP | 5924 Messages

11 janv. 2009, 21:53

Tu n'es pas censé le faire, où que ce soit. De toute façon, si tu réaffectes une autres valeur à ta variable, tu vas perdre le typage. Et quelquesoit l'opération, il transtypera les deux opérandes dans le bon type. Par exemple, il te castera une chaine de caractère en int lors d'une addition.

Eléphant du PHP | 209 Messages

11 janv. 2009, 22:14

Oui, mais je trouve ça dommage car ça autorise par exemple à faire un substr sur un entier, ce qui ne devrait pas être possible...

ViPHP
ViPHP | 5924 Messages

11 janv. 2009, 22:29

Bah le substr tu le fais pas sur un entier, tu le fais sur une chaine de caractère, résultat du cast d'un entier en chaine de caractère…

ViPHP
ViPHP | 2287 Messages

11 janv. 2009, 22:52

Oui, mais je trouve ça dommage car ça autorise par exemple à faire un substr sur un entier, ce qui ne devrait pas être possible...
Si tu penses comme ça, il est sûrement temps que tu changes de langage ;-)

PHP rend ce genre de choses "sales" possibles car il part du principe que si tu as l'idée de le faire c'est que c'est ce que tu veux faire, et que ça donnera quelquechose d'utile. C'est tout l'intérêt d'un langage à typage dynamique (on dit aussi typage faible).

Toi tu voudrais du typage fort, pas de problème mais les mainteneurs de PHP ont annoncé à plusieurs reprises qu'ils ne suivront jamais cette voie. C'est donc un choix architectural fort du langage qui ne devrait jamais changer.

Ceci dit, si tu programmes en objet, tu as la possibilité de t'approcher de ce comportement, et de vérifier (à la lecture et à l'écriture) qu'une propriété d'objet censée contenir un entier ne contient jamais autre chose.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 209 Messages

11 janv. 2009, 22:59

Ne vous inquiétez pas, je suis pas énervé ;)
Je trouvé mieux de laisser le choix c'est tout.
Par contre je suis tout à fait d'accord avec le fait que c'est un avantage !
C'est juste moins pratique pour débuter car on fait des conneries sans s'en rendre compte et après, quand on évolue, ça nous oblige à être prudent.
Mais ça reste un avantage à mon sens...

On s'est un peu éloigné du sujet de départ avec ça...

lux
Eléphant du PHP | 372 Messages

11 janv. 2009, 23:21

Même si on est un peu loin du sujet du départ, je veux juste donner mon avis sur cette histoire de typage fort/faible.

Pour php, le typage faible est très bien, on peut bosser sans se poser de questions, c'est plus simple je trouve, ça va tout seul. Pas besoin de se stresse avec des int, double, flot, etc...

Pour d'autres langages, tel que le C++, perso moi j'ai besoin d'un typage fort, donc de bien déclarer mes variables au début. J'étudie la physique, et on à quelques petits scripts à faire, si on veut faire des grosses maths avec du C++, y a intérêt qu'on définisse bien les variables, au risque de ralentir à mort le traitement.

Voila mon point de vue. Mais dès fois c'est vrai que je regrette qu'il n'y ait pas de typage faible dans le C++, c'est tellement plus agreable en PHP :wink:

ViPHP
ViPHP | 4674 Messages

11 janv. 2009, 23:34

L'histoire de typage dynamique ou déclaré (respectivement faible ou fort comme vous dites) est un long débat sans fin. La force de PHP n'est pas dans son typage dynamique, car d'autres l'ont ; je pense notamment à Scheme ou encore Javascript. La grande force de PHP c'est son type juggling, c'est à dire le fait de pouvoir passer/sauter/jongler d'un type à l'autre sans problème. Bien sûr, ça permet de faire des choses sales, mais ça permet aussi de développer plus vite.
Si vous voulez un langage vraiment typé, il faut se tourner vers Java, car même en C, on peut faire des choses très bizarres … Je passe les autres langages à typage inféré (qui pour moi est la meilleure façon de travailler), on va rester sur des langages connus qu'on aime mettre dans de vilains trolls …

De toute façon, quand on développe, que ce soit en n'importe quel langage, on donne une variable pour une donnée précise. Si on doit manipuler une chaîne puis un entier, on aura deux variables. Ne serait-ce que pour le développeur ou le mainteneur du code, c'est nettement plus clair …
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 5924 Messages

12 janv. 2009, 01:09

car même en C, on peut faire des choses très bizarres
Euh, ca reste un typage fort, c'est juste qu'on peut faire ce que l'on veut avec ses données, et éventuellement contourner le typage, parce qu'en C, on a tous les droits. :)
Je passe les autres langages à typage inféré (qui pour moi est la meilleure façon de travailler)
Mouais, le problème c'est que c'est un chouia restrictif comme langages…