Types XML-RPC¶
Types supportés¶
XRL supporte l’ensemble des types définis dans la spécification officielle de XML-RPC, c’est-à-dire :
int
eti4
: entier signé sur 32 bitsboolean
: le type booléen habituelstring
: une simple chaîne de caractèresdouble
: nombre flottant signé à double précisiondateTime.iso8601
: date/heure (sans milli-secondes ni fuseau horaire)base64
: données binaires encodées en base64struct
: tableau associatifarray
: tableau indexé
XRL accepte également les types suivants, dont l’usage est plutôt répandu, bien qu’ils ne fassent pas partie de la spécification officielle :
nil
: valeur null (absence de valeur)i8
: entier signé sur 64 bits
Pour finir, les types suivants appartenant à l’espace de noms défini par la Fondation Apache sont aussi supportés. Veuillez noter que dans ce cas particulier, les types doivent appartenir à l’espace de nom ayant pour URI http://ws.apache.org/xmlrpc/namespaces/extensions pour être correctement interprétés.
nil
: valeur null (absence de valeur); identique au type sans espace de nomsi1
: entier signé sur 8 bitsi2
: entier signé sur 16 bitsi8
: entier signé sur 64 bits; identique au type sans espace de nomsbiginteger
: entier de taille arbitrairedom
: élément du DOM, transmis sous forme de fragment XMLdateTime
: date/heure avec milli-secondes et fuseau horaire
Lorsque des types non-standards doivent être envoyés, XRL utilise systématiquement les types appartenant à des espaces de noms. Lisez le chapitre qui suit pour plus d’information.
Conversion des types¶
Par défaut, XRL convertit automatiquement les valeurs entre les types de PHP et ceux de XML-RPC lorsque c’est nécessaire.
Le tableau qui suit montre comment XRL convertit les types PHP vers les types XML-RPC.
Type PHP |
Type XML-RPC |
---|---|
null |
|
boolean |
boolean |
integer |
|
double |
double |
string |
|
array |
|
ressource |
|
objet |
Type XML-RPC représenté par l’objet |
objet |
|
objet |
|
objet |
|
objet |
|
objet |
|
objet |
faute XML-RPC (dérivée de |
Le tableau qui suit montre comment XRL convertit les types XML-RPC vers les types PHP.
Type XML-RPC |
Type PHP |
---|---|
boolean |
boolean |
i4 |
integer |
int |
integer |
double |
double |
string |
string |
base64 |
string |
array |
tableau indexé |
struct |
objet |
dateTime.iso8601 |
|
nil |
null |
|
null |
|
integer |
|
integer |
i8 |
ressource |
|
ressource |
|
ressource |
|
objet |
|
objet |
[1] | (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) Avec l’espace de noms portant l’URI http://ws.apache.org/xmlrpc/namespaces/extensions pour la compatibilité avec les autres implémentations. |
[2] | Un |
Sous le capot¶
Les conversions de types sont gérées par les classes \fpoirotte\XRL\NativeEncoder
(pour les conversions depuis PHP vers XML-RPC) et \fpoirotte\XRL\NativeDecoder
(pour les conversions depuis XML-RPC vers PHP), en s’appuyant sur les classes de l’espace de noms \fpoirotte\XRL\Types\
.
Vous pouvez surcharger ou désactiver les conversions en passant un autre encodeur/décodeur au constructeur du client ou du serveur XML-RPC.
Note
Si vous changez l’encodeur/décodeur par défaut, vous devrez gérer vous-même les conversions depuis/vers les instances de \fpoirotte\XRL\Types\AbstractType
utilisées en interne par XRL.
Avertissement
Les fautes XML-RPC sont traitées à part et sont toujours transformées en objets \fpoirotte\XRL\Exception
avant d’être automatiquement levées. Ce comportement est indépendant du décodeur passé au constructeur du client/serveur.