malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 26 déc. 2007 à 14:16
J'ai pas dit le contraire ? J'ai dit que tu pouvais sans problème simuler le même comportement. je n'ai jamais dit que "function" était un type en php.
Il n'en reste pas moins que is_callable() sur $test renverra true.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 26 déc. 2007 à 13:47
et ton gettype te renvoie string, function c'est pas un type de base en php... si tu te promenes du cote de caml ou autre, tu verras c'est autre chose le fonctionnel
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 26 déc. 2007 à 13:38
@Coucou => c'est ce que je disais, tu réflêchis en mode javascript en faisant du php. Tu ne simules pas correctement ta fonction :
<?php
function add($a){
return create_function('$b', 'return '.$a.'+$b;');
}
$test=add(5);
echo $test(3);
?>
kylekatarnls
Messages postés35Date d'inscriptiondimanche 4 février 2007StatutMembreDernière intervention 1 juillet 2008 25 déc. 2007 à 21:00
Whua, on utilise donc jamais le bon vocabulaire mince. Je viens de voir que PHP se rangeait dans la programmation impérative et était absente de la liste des langages fonctionnels, c'est bluffant car pour moi cela signifiait seulement que le langage utilisait principalement les fonctions.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 24 déc. 2007 à 12:25
on peut faire de la recursivite en php, de l'objet, mais php n'est en rien fonctionnel, javascript si par contre.
function add($a){
return create_function ('$b', 'return $a+$b;');
}
en faisant ca, la fonction cree croit que $a n'existe pas...
appeller add(3)(5); provoque une erreur de syntaxe, et faire :
$a=add(5);
echo $a(3);
n'affiche que 3...
ensuite, create_function renvoie un string et non une fonction (normal le type fonction n'existe pas en php puisque c'est pas un langage fonctionnel)
kylekatarnls
Messages postés35Date d'inscriptiondimanche 4 février 2007StatutMembreDernière intervention 1 juillet 2008 24 déc. 2007 à 12:09
COUCOU747, es-tu martien ?
Parce que sur ma planète à moi, ce que tu as écrit c'est du javascript c'est marrant et chez moi le PHP peut être orienté objet ou fonctionnel, c'est fou comme les choses sont différentes d'un endroit à l'autre ... :)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 24 déc. 2007 à 08:01
Comme je te le disais : on ne peut pas le faire de la même manière, mais tu peux très bien simuler le même comportement.
Et c'est pareil pour le "fonctionnel" : si tu joues sur la sémantique exacte, ok, mais tu peux très bien le simuler aussi avec create_function par exemple.
Et là, on parlait de faire de son code une (ou plusieurs) fonctions avec des appels récursifs.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 23 déc. 2007 à 23:10
j'allais oublier :
question : qqn peut-il me dire ce qui caracterise le fonctionnel ?
reponse : les fonctions du fonctionnel, ce sont des valeurs banales du langage
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 23 déc. 2007 à 23:05
bah fait le en php, cree une fonction add puis une fonction increment en faisant un truc genre :
increment=add(1); comme on ferait en caml ou comme j'ai fais en javascript
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 23 déc. 2007 à 23:02
"je ne sais pas avec quoi tu edites..."
=> Zend ? Eclipse ? Dreamweaver?
Je ne vois pas ce que tu ne peux pas faire en php, là ? Pas de la même manière, certes, mais php n'est pas javascript.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 23 déc. 2007 à 18:17
"La plupart des éditeurs faisant de l'autocomplétion l'ajouteront, en plus."=> je ne sais pas avec quoi tu edites...
sinon, php ne peut pas faire de foncionnel, mais par contre tu peux faire du recursif...
(ouais, une fonction c'est jamais une variable comme une autre...)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 23 déc. 2007 à 15:47
@Xaran, quand même : tu as tout à fait raison pour le
. Ceci dit...il faudrait peut-être commencer à vivre avec son temps. Ajouter /> à la fin d'un tag ne prend pas des heures. La plupart des éditeurs faisant de l'autocomplétion l'ajouteront, en plus. Cette recommendation a une raison d'être, et cette raison n'est pas d'emmerder les développeurs. C'est utile. A plus d'un titre. Un exemple à la con auquel on ne pense pas forcément : il m'arrive souvent de traiter du html comme du xml. Avec un tag
au milieu, c'est impossible. Et il y a un tas d'autres raisons pour passer à du xhtml correctement formé.
A ce compte là, autant coder en php3 avec des pages en html 3.2, et surfer avec un Netscape 4.x. Et se priver, donc, du progès.
A ce niveau-là, ce n'est pas être un rebelle refusant les lois du w3c, c'est être rétrograde.
xaraan
Messages postés6Date d'inscriptiondimanche 23 décembre 2007StatutMembreDernière intervention14 janvier 2008 23 déc. 2007 à 13:58
Pour revenir sur le commentaire de Kylekatarnls,
n'est pas une erreur ... C'est juste pas du XHTML, il faut arrèter de croire que c'est le seul SGML pour le web ! Il y a aussi HTML 3.2, 4.01, etc...
Quant à la source, il est vrai, elle n'est pas bonne du tout. Je ne détaillerais pas mais je reproche les mêmes choses que Malalam. Sur ce, bonne continuation.
kylekatarnls
Messages postés35Date d'inscriptiondimanche 4 février 2007StatutMembreDernière intervention 1 juillet 2008 23 déc. 2007 à 12:34
C'est assez bourré de "fautes", à commencer par les économies de code que tu fais : 1 à la place de true,
à la place de
, tout ce qui ferait que ta source serait bien codée.
Ensuite il y a des choses qui peuvent être simplifiées et comme dit Malalam, ça pourrait être bien, le tout dans une fonction !
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 23 déc. 2007 à 12:17
Quand même, j'insiste (et j'explique ma note) : ce qui me met en rage, c'est que tu as eu une idée vraiment intéressante! Ce n'est pas si fréquent ici...C'est un code vraiment utile. Plus un snippet qu'un code source mais bon. Mais tu la gâches vraiment. C'est dommage.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 23 déc. 2007 à 12:13
Hello,
moi, je suis très mécontent de ton code. Pour plusieurs raisons : tu pars d'une idée intéressante. "Applatir" un tableau est intéressant, ça existe dans pas mal de langages.
Seulement, tu parles de fonction et propose du procédural. Du fonctionnel aurait été un minimum!
De plus, ton code est d'une lourdeur incroyable.
Enfin, je ne l'ai pas testé, mais je ne vois pas comment avec du procédural tu peux t'enorgueuillir d'applatir un tableau à X dimensions, où X est variable. Ca me parait impossible. Il faut du récursif pour ça, et tu ne peux pas faire du récursif en procédural. Donc à mon avis, ton code est faux (mais encore une fois, je ne l'ai pas testé, et pour être franc, je l'ai à peine regardé : il n'est pas nécessaire d'approfondir ton code pour voir qu'il est mal foutu).
Ok, je suis dur...mais je vais te montrer ce que tu aurais dû faire même en n'utilisant que php4. Parce qu'en php5 et avec la SPL, c'est encore plus simple.
<?php
$a = array ("a", "b", array ("zz", "yy", array ("aaa", "aab", array ("bbc1", "bbc2", "bbc3"))), "c", "d", array ("zza", "zzb", "zzc", "zzd", array ("yya", "yyb", "yyc", array ("xxa", "xxb", array ("wwa", "wwb", "wwc"))), "zze"), "e", "f");
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 22 déc. 2007 à 23:58
Salut,
Je me rends compte seulement maintenant que mon commentaire sur ton autre source (TRANSFORMER UN TABLEAU D'OBJETS EN TABLEAU UNIDIMENSIONNEL), ben je voulais le mettre sur cette source... (j'avais pas fait gaffe que tu avais posté une deuxième source, et comme les titres sont assez similaires...)
Bon, en même temps, la question est valable pour les deux... ^^
26 déc. 2007 à 14:38
26 déc. 2007 à 14:22
php ne remplie clairement pas les criteres...
26 déc. 2007 à 14:16
Il n'en reste pas moins que is_callable() sur $test renverra true.
26 déc. 2007 à 13:47
26 déc. 2007 à 13:38
<?php
function add($a){
return create_function('$b', 'return '.$a.'+$b;');
}
$test=add(5);
echo $test(3);
?>
25 déc. 2007 à 21:00
24 déc. 2007 à 12:25
function add($a){
return create_function ('$b', 'return $a+$b;');
}
en faisant ca, la fonction cree croit que $a n'existe pas...
appeller add(3)(5); provoque une erreur de syntaxe, et faire :
$a=add(5);
echo $a(3);
n'affiche que 3...
ensuite, create_function renvoie un string et non une fonction (normal le type fonction n'existe pas en php puisque c'est pas un langage fonctionnel)
24 déc. 2007 à 12:09
Parce que sur ma planète à moi, ce que tu as écrit c'est du javascript c'est marrant et chez moi le PHP peut être orienté objet ou fonctionnel, c'est fou comme les choses sont différentes d'un endroit à l'autre ... :)
24 déc. 2007 à 08:01
Et c'est pareil pour le "fonctionnel" : si tu joues sur la sémantique exacte, ok, mais tu peux très bien le simuler aussi avec create_function par exemple.
Et là, on parlait de faire de son code une (ou plusieurs) fonctions avec des appels récursifs.
23 déc. 2007 à 23:10
question : qqn peut-il me dire ce qui caracterise le fonctionnel ?
reponse : les fonctions du fonctionnel, ce sont des valeurs banales du langage
23 déc. 2007 à 23:05
increment=add(1); comme on ferait en caml ou comme j'ai fais en javascript
23 déc. 2007 à 23:02
=> Zend ? Eclipse ? Dreamweaver?
Je ne vois pas ce que tu ne peux pas faire en php, là ? Pas de la même manière, certes, mais php n'est pas javascript.
23 déc. 2007 à 18:17
sinon, php ne peut pas faire de foncionnel, mais par contre tu peux faire du recursif...
(ouais, une fonction c'est jamais une variable comme une autre...)
<script type="text/javascript">
function writeln(a){
document.write(a+"
");
}
add=function(a){
return function(b){return a+b};
}
increment=add(1);
writeln(increment(2));
writeln(add(2)(3));
</script>
ca t'iras jamais le refaire en php...
23 déc. 2007 à 15:47
. Ceci dit...il faudrait peut-être commencer à vivre avec son temps. Ajouter /> à la fin d'un tag ne prend pas des heures. La plupart des éditeurs faisant de l'autocomplétion l'ajouteront, en plus. Cette recommendation a une raison d'être, et cette raison n'est pas d'emmerder les développeurs. C'est utile. A plus d'un titre. Un exemple à la con auquel on ne pense pas forcément : il m'arrive souvent de traiter du html comme du xml. Avec un tag
au milieu, c'est impossible. Et il y a un tas d'autres raisons pour passer à du xhtml correctement formé.
A ce compte là, autant coder en php3 avec des pages en html 3.2, et surfer avec un Netscape 4.x. Et se priver, donc, du progès.
A ce niveau-là, ce n'est pas être un rebelle refusant les lois du w3c, c'est être rétrograde.
23 déc. 2007 à 13:58
n'est pas une erreur ... C'est juste pas du XHTML, il faut arrèter de croire que c'est le seul SGML pour le web ! Il y a aussi HTML 3.2, 4.01, etc...
Quant à la source, il est vrai, elle n'est pas bonne du tout. Je ne détaillerais pas mais je reproche les mêmes choses que Malalam. Sur ce, bonne continuation.
23 déc. 2007 à 12:34
à la place de
, tout ce qui ferait que ta source serait bien codée.
Ensuite il y a des choses qui peuvent être simplifiées et comme dit Malalam, ça pourrait être bien, le tout dans une fonction !
23 déc. 2007 à 12:17
23 déc. 2007 à 12:13
moi, je suis très mécontent de ton code. Pour plusieurs raisons : tu pars d'une idée intéressante. "Applatir" un tableau est intéressant, ça existe dans pas mal de langages.
Seulement, tu parles de fonction et propose du procédural. Du fonctionnel aurait été un minimum!
De plus, ton code est d'une lourdeur incroyable.
Enfin, je ne l'ai pas testé, mais je ne vois pas comment avec du procédural tu peux t'enorgueuillir d'applatir un tableau à X dimensions, où X est variable. Ca me parait impossible. Il faut du récursif pour ça, et tu ne peux pas faire du récursif en procédural. Donc à mon avis, ton code est faux (mais encore une fois, je ne l'ai pas testé, et pour être franc, je l'ai à peine regardé : il n'est pas nécessaire d'approfondir ton code pour voir qu'il est mal foutu).
Ok, je suis dur...mais je vais te montrer ce que tu aurais dû faire même en n'utilisant que php4. Parce qu'en php5 et avec la SPL, c'est encore plus simple.
<?php
$a = array ("a", "b", array ("zz", "yy", array ("aaa", "aab", array ("bbc1", "bbc2", "bbc3"))), "c", "d", array ("zza", "zzb", "zzc", "zzd", array ("yya", "yyb", "yyc", array ("xxa", "xxb", array ("wwa", "wwb", "wwc"))), "zze"), "e", "f");
function flatten($tab) {
static $flatten = array();
foreach($tab as $sub) {
if(is_array($sub)) {
flatten($sub);
} else {
$flatten[] = $sub;
}
}
return $flatten;
}
$b = flatten($a);
print_r($b);
?>
C'est évidemment valable pour ton autre code.
22 déc. 2007 à 23:58
Je me rends compte seulement maintenant que mon commentaire sur ton autre source (TRANSFORMER UN TABLEAU D'OBJETS EN TABLEAU UNIDIMENSIONNEL), ben je voulais le mettre sur cette source... (j'avais pas fait gaffe que tu avais posté une deuxième source, et comme les titres sont assez similaires...)
Bon, en même temps, la question est valable pour les deux... ^^