Utilisation d'un getter et setter.
Posté : 27 mai 2014, 10:27
Salut tout le monde.
C'est encore moi..
Alors je suis en train de vouloir utiliser Thrift pour sérialiser un fichier xml.
J'ai bien défini la structure mais je n'arrive pas utiliser les getters/setters. (Thrift génère un code php qui va gérer les objets Thrift)
Voici une partie du code :
Il y a une fonction read($input) et une autre write($output).
Pouvez-vous m'aider à les utiliser ?
J'ai fait:
Je sais que je peux utiliser
// Je continue de chercher et de tester des choses de mon coté..
Je vous remercie.
edit: et que signifie le "+=" ($xfer += $output->writeFieldEnd();) ?
C'est encore moi..
Alors je suis en train de vouloir utiliser Thrift pour sérialiser un fichier xml.
J'ai bien défini la structure mais je n'arrive pas utiliser les getters/setters. (Thrift génère un code php qui va gérer les objets Thrift)
Voici une partie du code :
class Creation {
static $_TSPEC;
public $a_iso = null;
public $date = null;
public function __construct($vals=null) {
if (!isset(self::$_TSPEC)) {
self::$_TSPEC = array(
1 => array(
'var' => 'a_iso',
'type' => TType::I32,
),
2 => array(
'var' => 'date',
'type' => TType::I32,
),
);
}
if (is_array($vals)) {
if (isset($vals['a_iso'])) {
$this->a_iso = $vals['a_iso'];
}
if (isset($vals['date'])) {
$this->date = $vals['date'];
}
}
}
public function read($input)
{
$xfer = 0;
$fname = null;
$ftype = 0;
$fid = 0;
$xfer += $input->readStructBegin($fname);
while (true)
{
$xfer += $input->readFieldBegin($fname, $ftype, $fid);
if ($ftype == TType::STOP) {
break;
}
switch ($fid)
{
case 1:
if ($ftype == TType::I32) {
$xfer += $input->readI32($this->a_iso);
} else {
$xfer += $input->skip($ftype);
}
break;
case 2:
if ($ftype == TType::I32) {
$xfer += $input->readI32($this->date);
} else {
$xfer += $input->skip($ftype);
}
break;
default:
$xfer += $input->skip($ftype);
break;
}
$xfer += $input->readFieldEnd();
}
$xfer += $input->readStructEnd();
return $xfer;
}
public function write($output) {
$xfer = 0;
$xfer += $output->writeStructBegin('Creation');
if ($this->a_iso !== null) {
$xfer += $output->writeFieldBegin('a_iso', TType::I32, 1);
$xfer += $output->writeI32($this->a_iso);
$xfer += $output->writeFieldEnd();
}
if ($this->date !== null) {
$xfer += $output->writeFieldBegin('date', TType::I32, 2);
$xfer += $output->writeI32($this->date);
$xfer += $output->writeFieldEnd();
}
$xfer += $output->writeFieldStop();
$xfer += $output->writeStructEnd();
return $xfer;
}
}
Voici la structure Thrift :
Code : Tout sélectionner
struct Creation {
1: int a_iso,
2: int date
}Pouvez-vous m'aider à les utiliser ?
J'ai fait:
$objetcree = new Creation();
$objetcree->a_iso = 45;
ça marche car a_iso est en public mais je ne veux pas faire comme ça...
$objetcree->sdfqsdfsdf= 27052014;
fonctionne aussi, mais pour quelle raison ?! car "sdfqsdfsdf" n'est pas définie.Je sais que je peux utiliser
$objetcree->read($input);
mais que mettre dans $input si je veux modifier uniquement a_iso ?// Je continue de chercher et de tester des choses de mon coté..
Je vous remercie.
edit: et que signifie le "+=" ($xfer += $output->writeFieldEnd();) ?