[HS] Discussion autour du typage en PHP

ViPHP
ViPHP | 5462 Messages

01 avr. 2010, 20:09

Modération de zeus : splitté de ce sujet

ouai, pareil ca devien de plus en plus propre et c'est plus rapide a l'exécution pas besoin de faire de transcryptage

Mammouth du PHP | 985 Messages

01 avr. 2010, 20:12

Oui oui c'est cool, car:
$var = array('a', 'b', 'c');

function trim_perso($var) {
   $var = trim($var);
   return $var;
}
Pas testé en 5.3.2, mais je ne pense pas que cela fonctionne encore :wink:

Ou le fameux:
$var = false;
echo $var['toto'];
Modifié en dernier par Dr@ke le 01 avr. 2010, 20:15, modifié 1 fois.
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

ViPHP
ViPHP | 5462 Messages

01 avr. 2010, 20:15

y'a rien de spécial la

Mammouth du PHP | 985 Messages

01 avr. 2010, 20:16

Ben si, c'est tout simplement pas logique, et cela te fait une belle erreur.
Avec une régle typage simple dans la fonction, cela sera bien plus simple.
Surtout par exemple pour $_POST
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

ViPHP
ViPHP | 5462 Messages

01 avr. 2010, 20:21

ah oui mais un parle pas de ca
on parle de ca
function test_type_hinting(array $arr)
{
   var_dump($arr);
}

test_type_hinting(array('kikoo', 'lol'));
test_type_hinting('kikoo lol');

/*
rray(2) {
  [0]=>
  string(5) "kikoo"
  [1]=>
  string(3) "lol"
}

Catchable fatal error: Argument 1 passed to test_type_hinting() must be an array, string given
*/

Mammouth du PHP | 985 Messages

01 avr. 2010, 20:23

Pas du tout, c'est toi qui en parle, on parlait surtout de cela:
En effet il me semble que dans la/les prochaines versions de php , nous pourrons typer directement dans les déclaration de fonctions/méthodes
En tout cas, c'est de cela que je parlais moi :)
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

ViPHP
ViPHP | 5462 Messages

01 avr. 2010, 20:28

En effet il me semble que dans la/les prochaines versions de php , nous pourrons typer directement dans les déclaration de fonctions/méthodes
ton exemple c'est ni dans un fonction ni dans une methode

Mammouth du PHP | 985 Messages

01 avr. 2010, 20:31

function trim_perso($var) {
   $var = trim($var);
   return $var;
}
c'est quoi cela? un mars? #-o

le deuxième, j'ai juste eu la flemme de l'inclure dans une fonction, c'est tout
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

ViPHP
ViPHP | 5462 Messages

01 avr. 2010, 20:35

lol mais ca c'est un l'intérieur de ta fonction ca a rien avoir

le vrai type fort en dehors de ta definition de fonction ca ressemblerai a ca
$test int = 3;
$text string = 'blabla';

$error Exception = new Exception();
$dom DomDocument = new DomDocument();
ou le typage avant comme en C

Mammouth du PHP | 985 Messages

01 avr. 2010, 20:37

Le principe est le même, cela va être utile, c'est tout.

Et cela à tout à fait avoir :)

Vérifier le type ou caster, c'est lourd à la longue
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

ViPHP
ViPHP | 5462 Messages

01 avr. 2010, 20:44

parce que ce le fait depuis longtemps, pre php 5.3 on pouvait faire tu type hinting qu'avec les array et les object (donc aussi les class), depuis php 5.3 ca marche avec tout les types :mrgreen:
j'ai un gros doute sur que j'ai dis, parce la j'essaye chez moi et ca marche pas (php 5.3.1, osx), il me semble avec tester au boulot (php 5.3.2 XP) et que ca marchait (array et object ca c'est bon mais c'est les autres...), a voir...

Mammouth du PHP | 985 Messages

01 avr. 2010, 20:47

$test int = 3;
$text string = 'blabla';
Puis ceci est un non-sens en php, car tu castes déjà en string rien qu'en entourant blabla entre apostrophes.
Même chose avec 3, pour le int :)
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

ViPHP
ViPHP | 5462 Messages

01 avr. 2010, 20:50

ca marche comme ca dans tout les languages a typage fort et version plus absurde dans certain tu peu faire
var text:String = new String('hello');

Mammouth du PHP | 985 Messages

01 avr. 2010, 20:52

Je veux juste dire que ton exemple, ne sert à rien :langue:
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

ViPHP
ViPHP | 5462 Messages

01 avr. 2010, 20:54

Je veux juste dire que ton exemple, ne sert à rien :langue:
non, c'est du typage fort, même si dans certain cas tu trouve ca débile