Définition des attributs d'une méthode : certaine écriture

Shinji49 Messages postés 18 Date d'inscription mardi 17 août 2004 Statut Membre Dernière intervention 25 juin 2009 - 24 juin 2009 à 22:57
Shinji49 Messages postés 18 Date d'inscription mardi 17 août 2004 Statut Membre Dernière intervention 25 juin 2009 - 25 juin 2009 à 12:10
Bonjour,

Bon je vais tenté d'être clair ! J'ai remarqué ceci en Javascript :
$("#myform").ajaxForm({
    url: "mypage.php",
    type: "POST"
});


Vous remarquez une certaine forme d'écriture pour définir les attributs de la méthode. Donc moi, je me demande si il était possible de faire la même chose en PHP (ou du moins quelque chose de ressemblant !) ?

Car j'ai vu une méthode en PHP qui passait par les tableaux mais j'aime pas trop :
[CODE]
maFonction(Array('CLE1'=>'VALEUR1','CLE2'=>'VALEUR2'));
[CODE]

Comme vous avez pu le comprendre : je souhaite laisser au programmeur qui utilisera mes fonctions de définir dans l'ordre qu'il le souhaite les attributs de la méthodes et même d'en omettre certains.

Merci de m'éclairer.

4 réponses

kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
24 juin 2009 à 23:11
Slt... en fait...

$("#myform").ajaxForm({
url: "mypage.php",
type: "POST"
});

correspondrait en php si on imagine que $myForm est un objet, par exemple, d'une classe du même nom...

$myForm = new myForm();
$myForm->ajaxForm((object)array(
'url' => 'mypage.php',
'type' => 'POST'
));

Mais la comparaison s'arrête là car coté js tu as un objet ($('#myForm')) qui correspond à un element html ce qui n'existe pas vraiment coté php... .. .

@ tchaOo°
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
24 juin 2009 à 23:21
Après rien ne tempêche de définir comme tu veux les arguments de tes fonctions il y a différentes méthodes...

par exemple...

function test($vars) {
$opt = array(
'opt1' => 1,
'opt2' => 'plop',
'opt3' => false
);
foreach($vars as $k => $v) {
if(isset($opt[$k]) {
$opt[$k] = $v;
}
}
var_dump($opt);
}
test(array('opt3' => true));

ou encore...

function test($opt1 1, $opt2 'plop', $opt3 = false) {
$opt = array(
'opt1' => $opt1,
'opt2' => $opt2,
'opt3' => $opt3
);
var_dump($opt);
}
test(5,'bonjour');

ou encore...

function test() {
$opt = array();
$numargs = func_num_args();
if(!empty($numargs)) {
$opt = func_get_args();
}
var_dump($opt);
}
test(5,'test',true);

etc... etc... .. .

@ tchaOo°
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
24 juin 2009 à 23:23
if(isset($opt[$k]) {

à remplacer par

if(isset($opt[$k])) {

dans le premier exemple... .. .

@ tchaOo°
0
Shinji49 Messages postés 18 Date d'inscription mardi 17 août 2004 Statut Membre Dernière intervention 25 juin 2009
25 juin 2009 à 12:10
Salut,

Merci pour tes messages. Tu a cerné le problème dans le second ! Pile ce que je me demandais ! Mais les deux solutions présentés ne m'enchantait pas ! La première utilise un tableau et je n'avais pas envie de présenter sa sous cette forme. La second est la méthode de base mais sa oblige a renseigner les arguments dans l'ordre... bof bof.

Bref, j'ai trouvé une solution qui vaut ce qu'elle vaut... lol Mais elle répond à mes attentes : on définie les couples arguments=valeurs sous la forme que je souhaitait.

La voici, si ça peut intéresser quelqu'un :
<?php
// Compatibilité : PHP 4+
function convertir_args_vers_tab($args){
    // On extrait chaque couple : argument=valeur.
    preg_match_all('#([[:alnum:]_]{1,}):([[:alnum:]_]{1,});#',$args,$delimite_args,PREG_SET_ORDER);
    // On créé le nouveau tableau.
    $tab_args = Array();
    // On parcours les couples : argument=valeur.
    foreach($delimite_args AS $cle => $valeur){
        // On insère dans le nouveau tableau.
        // De la forme : $tab[CLE] = VALEUR;
        $tab_args[$delimite_args[$cle][1]] = $delimite_args[$cle][2];
    }
    // On affiche le résultat.
    print_r($tab_args);
}

// Play !
convertir_args_vers_tab('name1:id1; name2:id2; name3:id3;');
?>
0
Rejoignez-nous