Definire proprietati din clasa cu valori din variabile externe

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
andras
Mesaje: 430

Definire proprietati din clasa cu valori din variabile externe

Salut,
Am o clasa in care definesc un array asociativ si vreau ca in cheile acelui array sa am valoarea variabelor externe clasei. Cam asa (pseudocod):

Cod: Selectaţi tot

<?php
$nume = 'Nume';
$prenume = 'Prenume';

class Persoana {
    public $v1=$nume;
    public $v2=$prenume;
    public $v = array($v1=>"Ion",$v2=>"Vasile");
}
?>
Cum pot rezolva, ca am incercat in felurite feluri dar n-am reusit?
Imi trebuie pentru ca $nume si $prenume depind de limba aleasa pentru a lucra pe site (in engleza vor deveni $nume = 'Lastname'; $prenume = 'Firstname';).

MarPlo Mesaje: 4343
Salut,
1. Se poate rezolva prelund acele variabile externe in __construct(), cu GLOBAL; si apoi le atribui la proprietati.

Cod: Selectaţi tot

$nume ='Nume';
$prenume ='Prenume';

class Persoana {
  public $v1='';
  public $v2='';
  public $v = ['n'=>'Ion', 'p'=>'Vasile'];

  function __construct(){
    GLOBAL $nume, $prenume;
    $this->v1 = $nume;
    $this->v2 = $prenume;

    //redefine $v
    $this->v = [$nume=>$this->v['n'], $prenume=>$this->v['p']];
  }
}

//Test
$obj = new Persoana;
var_export($obj->v);  // array('Nume'=>'Ion', 'Prenume'=>'Vasile') 
2. Sau le transmiti prin parametru la __construct(), care va fi necesar la crearea obiectului clasei.

Cod: Selectaţi tot

$nume ='Nume';
$prenume ='Prenume';

class Persoana {
  public $v1='';
  public $v2='';
  public $v = ['n'=>'Ion', 'p'=>'Vasile'];

  //$n_p =['n'=>'Nume', 'p'=>'Prenume']
  function __construct($n_p){
    $this->v1 = $n_p['n'];
    $this->v2 = $n_p['p'];

    //redefine $v
    $this->v = [$n_p['n']=>$this->v['n'], $n_p['p']=>$this->v['p']];
  }
}

//Test
$obj = new Persoana(['n'=>$nume, 'p'=>$prenume]);
var_export($obj->v);  // array('Nume'=>'Ion', 'Prenume'=>'Vasile') 

andras Mesaje: 430
Functioneaza foarte bine, multumesc. Am adoptat prima varianta, toate variabilele sint definite in fisierul de clase.

Subiecte similare