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();) ?