おぎろぐはてブロ

なんだかんだエンジニアになって10年以上

PHP JSON Parser

PHP5.2から、php-jsonJSON encoder/decoderが最初から組み込まれるようになった。あら、これは便利!という、ありきたりな話はしなくって、このphp-jsonのソースに含まれる、JSON_parser.hについて。
中身はこんなの。(PHP5組み込みもPECLも同じ)

/* JSON_checker.h */

#include "php.h"
#include "ext/standard/php_smart_str.h"

extern int JSON_parser(zval *z, unsigned short p[], int length, int assoc TSRMLS_DC);

なんで、コメントのファイル名違うんだろ。。というのはおいておいて、extern宣言されており、外部のExtensionモジュールから、C言語レベルで、この関数を呼び出すことができ、JSON文字列からzval配列への変換ができます。
ただ、なんでだろうと思うことは、その逆のPHP配列→JSON文字列への変換は、externされていないので呼び出せないこと。こちらだけ分けられてるのには何か意図があるのかなぁ。。

ほんとは、PHP配列→JSON変換がほしかったのですが、、別のアプローチで実装。。