En écrivant une extension PHP en C, je veux convertir un objet userland (IS_OBJECT
) en une chaîne via __toString()
s'il en a un, et échouer sinon. Que devrais-je utiliser? Je n'ai pas besoin d'un autre zval
en sortie, juste un char *
.Extension PHP: convertir un objet en chaîne avec __toString()
zval *zo;
switch (Z_TYPE_P(zo)) {
case IS_STRING:
... Z_STRVAL_P(zo) ...
break;
case IS_OBJECT:
... ???(zo) ...
break;
...
}
Merci pour la réponse. A la fin je me suis contenté de 'zend_make_printable_zval' (défini dans Zend/zend.c): l'extrait SPL est moche, et' zend_std_cast_object_tostring' inclut un comportement qui casse les exigences que je n'ai pas mentionnées dans ma question (désolé). –