IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Affecter une valeur à une fonction comme en VB.Net


Sujet :

Langage PHP

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 464
    Points : 474
    Points
    474
    Par défaut Affecter une valeur à une fonction comme en VB.Net
    Bonjour,

    Je converti un bout de code VB.Net en php.
    Le code VB charge une dll et fait ceci (qui fonctionne bien) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Ligne.Adresse(1) = "ma valeur 1"
    Je voudrais traduire cela en php, sauf qu'en php, on ne peut pas affecter une valeur à une fonction, sous peine d'avoir ce message :
    Fatal error: Can't use method return value in write context

    Avez vous une solution pour contourner cela ?

    Merci.

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Tu te crées une classe qui utilise les surcharges magiques.

    L'exemple ci-dessous est trivial et ne sert qu'à montrer le mécanisme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <?php
    class toto
    {
     private $adresse = array();
     
     public function __construct()
     {
      $this->adresse[1] = "";
      $this->adresse[2] = "";
     }
     
     public function __set($name, $value)
     {
      if ($name == "Adresse1")
      {
       $this->adresse[1] = $value;
       return;
      }
      if ($name == "Adresse2")
      {
       $this->adresse[2] = $value;
       return;
      }  
      die("$name inconnu");
     }
     
     public function __get($name)
     {
      if ($name == "Adresse1")
      {
       return $this->adresse[1];
      }
      if ($name == "Adresse2")
      {
       return $this->adresse[2];
      } 
      die("$name inconnu");  
     }
     
    }$ligne = new toto;
    $ligne->Adresse1 = "mon adresse 1";
    $ligne->Adresse2 = "mon adresse 2";
    echo $ligne->Adresse1;
    echo "<br/>";
    echo $ligne->Adresse2;
    Mon 1000ème message !

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 464
    Points : 474
    Points
    474
    Par défaut
    Soit tu n'as pas compris ma question, soit je n'ai pas compris la réponse !

    J'utilise un objet COM, qui a ses propres méthodes, dont une particulière avec laquelle une syntaxe fonctionnellement efficace est celle de mon exemple (Ligne.Adresse(1) = "ma valeur 1").
    Je ne peux pas modifier ni l'objet "Ligne" ni sa méthode "Adresse" (dll fournie par un éditeur tiers).

    Je me demande donc si php permettrait d'écrire quelque chose comme on peut le faire en VB.

    Merci.

    (Joyeux 1000ème message )

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Tu veux dire surcharger une méthode d'une classe que tu ne peux pas modifier?
    Où tu veux qu'à chaque appel du méthode Adresse de la classe, ça va retourner "ma valeur 1" sans que tu ais modifié la classe puisque tu ne peux pas?
    C'est quoi ton objectif? parce que sans connaître VB, difficile de t'aider.

    A+.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je pense que Adresse est plutôt un tableau qu'une méthode de l'objet

    En PHP ça donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Ligne->Adresse[1] = "ma valeur 1"
    Ca servirait à quoi de donne une valeur à une méthode d'un objet ?

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 464
    Points : 474
    Points
    474
    Par défaut
    J'avais pensé au tableau, mais la syntaxe tableau ne fonctionne pas en php. Sans doute un bug hérité de l'objet COM ???

    Merci en tout cas.

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Pour les trucs de windows (COM, .Net), tu peux voir ici: http://php.net/manual/fr/refs.utilspec.windows.php

    A+.

Discussions similaires

  1. [XL-2016] Attribuer une valeur à une textbox en fonction de plusiseurs combobox
    Par Nherve dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/11/2017, 18h43
  2. [XL-2010] Attribuer une valeur à une variable en fonction d'une autre
    Par jkiii dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/11/2013, 19h17
  3. Réponses: 1
    Dernier message: 19/04/2007, 10h14
  4. Réponses: 6
    Dernier message: 20/02/2007, 14h43
  5. [VBA]Affectation d'une valeur à une cellule par une fonction
    Par lallougri dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/02/2006, 14h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo