& avant get_role? (Créer un compte)

  • Statut : non résolu
6 sujets de 1 à 6 (sur un total de 6)
  • Auteur
    Messages
  • #507445
    Soraze
    Membre
    Padawan WordPress
    90 contributions

    Salut,

    pourquoi mettre  » &  » avant get_role ?

    $role =& get_role( ‘administrator’ );

    j’ai trouvé cet exemple, mais rien dans la doc ?

    Merci

    #823982
    seebz
    Participant
    Padawan WordPress
    80 contributions
    #823983
    Guy
    Participant
    Maître WordPress
    14817 contributions

    C’est du PHP, il faut voir la doc du langage, c’est une assignation par référence, cela veut dire que les deux pointent vers la même chose, le retour de la fonction et la variable sont identiques, ce n’est pas une copie de l’un vers l’autre comme une affectation simple.

    Edit: voila seebz avait mis le lien 🙂

    #823984
    Soraze
    Membre
    Padawan WordPress
    90 contributions

    merci, alors quel intérêt d’utiliser les références dans ce code? on aurait pu mettre le résultat de get_role dans $role tout simplement?

    /* Plugin activation method. */
    function activation() {

    /* Get the default administrator role. */
    $role =& get_role( ‘administrator’ );

    /* Add forum capabilities to the administrator role. */
    if ( !empty( $role ) ) {
    $role->add_cap( ‘publish_forum_topics’ );
    $role->add_cap( ‘edit_others_forum_topics’ );
    $role->add_cap( ‘delete_forum_topics’ );
    $role->add_cap( ‘read_forum_topics’ );
    }

    autre chose : est-ce que cela signifie aussi « référence » dans cette ligne (à this) ? : (je comprends qu’on l’utilise pour aller chercher dans la classe qu’on a créé, mais je ne vois pas pourquoi on l’utilise dans un array de cette façon?)

    register_activation_hook( __FILE__, array( &$this, ‘activation’ ) );

    Merci 😉

    #823985
    Guy
    Participant
    Maître WordPress
    14817 contributions

    c’est du PHP tout ça, pas spécifiquement WordPress 🙂

    mais, tu devrais regarder les différences entre assignations par référence et l’assignation simple qui est une copie vers l’opérande de gauche de ce qu’il y a à droite.
    Dans l’assignation par référence , il n’y a pas de copie comme je te l’ai déja dit, les deux sont identiques « physiquement ».

    Pour ton premier exemple, il faudrait regarder dans les sources, mais on peut supposer que cela permet de mettre à jour une variable de classe globale sans avoir à la redéfinir ni même la connaitre.

    Pour la seconde question, je pense que c’est une survivance de PHP4 qui demandait que les fonctions callback soient passées explicitement par référence, depuis ce n’est plus nécessaire.

    #823986
    Soraze
    Membre
    Padawan WordPress
    90 contributions

    on peut supposer que cela permet de mettre à jour une variable de classe globale sans avoir à la redéfinir ni même la connaitre.

    est-ce que tu veux dire que « get_role » est liée d’un façon ou d’une autre à une variable globale, et que lier la fonction par référence à ma variable « role » permet de mettre cette variable globale à jour en modifiant « role » ?

6 sujets de 1 à 6 (sur un total de 6)
  • Vous devez être connecté pour répondre à ce sujet.