今のところPHPのソースに標準でついてるエクステンションでnamespaceを使っているものは無いようだったのでちょっと試してみました。
通常のnamespaceなしの場合との違いは一カ所だけです
zend_function_entry msgpack_functions[] = { // PHP_FE(hoge, NULL) /* 通常の場合 */ ZEND_NS_FE("myspace", hoge, NULL) {NULL, NULL, NULL} /* Must be the last line in msgpack_functions[] */ };
PHP_FEの代わりにZEND_NS_FEを使うだけです。
他はそのままでOKです。
ソースファイル
PHP_FUNCTION(hoge) { RETVAL_STRINGL("hoge", 5, 1); }
ヘッダファイル
PHP_FUNCTION(hoge);
サンプル
<?php print myspace\hoge();PHP_FUNCTION(hoge);
実行結果
$ php sample.php hoge
ざっと見たところ、今のところエクステンションでクラスをnamespaceに入れるインターフェースは用意されてないようです。(自分でマクロを書けばできなくはなさそう)
また、一つのエクステンション内でnamespaceは複数つかえますが、namespaceが別でも同名の関数を定義するのは普通の方法では難しそうです。
0 件のコメント:
コメントを投稿