Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Può un metodo assegnare valori a variabili esterne?

    Mi spiego meglio con un esempio:

    Codice PHP:
    class MiaClasse {

      public function 
    mioMetodo() {
        
    // COME LO IMPLEMENTO??
      
    }

    }

    $a "a";
    $b "b";
    $c "c";

    $miaClasse = new MiaClasse();
    $miaClasse->mioMetodo($a$b$c);

    echo 
    $a// deve valere 1
    echo $b// deve valere 2
    echo $c// deve valere 3

    // vorrei come output: '123' 
    Come posso implementare mioMetodo() in modo che assegni valori alle variabili che gli sono passate come argomento (ad esempio 1, 2, 3 ecc...)?

    Ci vorrebbe qualcosa che facesse come i puntatori in C.
    Il cinghiale è un animale raffinato

  2. #2
    Beh, non é molto chiaro.

    Come prima cosa, all'inizio, mioMetodo non passa argomenti. Poi quando la classe viene istanziata, magicamente ne passa 3.

    Per fare STRETTAMENTE QUELLO CHE CHIEDI

    Codice PHP:
    class MiaClasse {

      public function 
    mioMetodo($val1$val2$val3) {
        echo 
    $val1 $val2 $val3;
      }



    $miaClasse = new MiaClasse();
    $miaClasse->mioMetodo(123); 
    Ma non credo che sia quello che intendevi
    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  3. #3
    il modo più diretto è questo

    Codice PHP:

    class MiaClasse {

      public 
    $a;
      public 
    $b;
      public 
    $c;

      public function 
    __construct($a$b$c)
      {
        
    $this->$a;
        
    $this->$b;
        
    $this->$c;
      }  

      public function 
    getValues()
      {
        print 
    $this->.' '$this->.' '$this->c;
      }



    $a 1;
    $b 2;
    $c 3;

    $obj = new MiaClasse($a$b$c); 

  4. #4
    Non era proprio quello che intendevo, mi sono espresso male.

    Avevo ipotizzato un'implementazione del genere:
    Codice PHP:

    class MiaClasse {

      
    // accetta un numero variabile di parametri
      
    public function mioMetodo() {
        
    $i 1;
        foreach(
    func_get_args() as $argomento) {
          
    $argomento $i;  // ****
          
    $i++;
        }
      }

    }

    $a "a";
    $b "b";
    $c "c";

    $miaClasse = new MiaClasse();
    $miaClasse->mioMetodo($a$b$c);

    echo 
    $a// deve valere 1
    echo $b// deve valere 2
    echo $c// deve valere 3

    // vorrei come output: '123' 
    Ma l'istruzione che ho commentato con **** non ha effetto!
    Dovrei passare a mioMetodo() dei puntatori a variabile, nel C/C++ si farebbe così:
    codice:
    mioMetodo(&a, &b, &c);
    Spero di essere stato più chiaro.

    Grazie comunque per aver provato a rispondermi.
    Il cinghiale è un animale raffinato

  5. #5
    Dopo 50.000 ricerche su google sono riuscito a scoprire che ESISTE IL PASSAGGIO PER REFERENCE.

    Esattamente come nel C/C++ si dichiara con una '&' di fronte alla variabile

    Esempio funzionante:
    Codice PHP:
    $a "A";
    $b "B";
    $c "C";

    function 
    prova(&$a, &$b, &$c) {
      
    $a 1;
      
    $b 2;
      
    $c 3;
    }

    echo 
    $a.$b.$c;

    // output => '123' 


    Ora devo solo trovare un sistema per fare in modo che al metodo gli si possano passare un NUMERO VARIABILE DI PARAMETRI.
    Il cinghiale è un animale raffinato

  6. #6
    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  7. #7
    No....

    func_get_arg non passa gli argomenti by reference, ma ne fa una copia!

    Vorrei una funzione simile:
    Codice PHP:
    function parametriPerReference() {
      
    $i 1;
      foreach(
    func_get_args() as &$arg) {
        
    $arg $i;  // NON FUNZIONA
        
    $i++;
      }
    }

    $a "a";
    $b "b";
    $c "c";

    parametriPerReference($a$b$c);

    echo 
    $a.$b.$c;

    // output che vorrei => '123' 

    La cosa è possibile perché ci sono funzioni della libreria PHP che modificano un numero variabile di argomenti.
    Un esempio è la funzione mysqli_stmt_bind_param() ! Guardate la sua definizione:
    http://www.php.net/manual/en/mysqli-stmt.bind-param.php
    codice:
    bool mysqli_stmt_bind_param  ( mysqli_stmt $stmt  , string $types  , mixed &$var1  [, mixed &$...  ] )
    MA COME SI IMPLEMENTA!?!
    Il cinghiale è un animale raffinato

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.