SWIG を使用してこの C++ 関数をラップすると、次のようになります。
boost::shared_ptr<Client> Client::create() {
return boost::shared_ptr<Client>(new Client());
}
そして、それを PHP で呼び出します。
$client = Client::create();
echo gettype($client);
の型は$client
isでありresource
、notであるため、メソッドobject
を呼び出すことができません。Client
この関数をラップするためのオプションは何ですか? 私は他の誰かの C++ ライブラリ用の PHP ラッパーを作成しているので、使用しないようにコードを作り直すことboost::shared_ptr
は実際にはオプションではありません。
これは私がこれまでに思いついた唯一の解決策です:
MyClient Client::createObject() {
return *Client::create();
}
そしてそれをPHPで呼び出します:
$client = Client::createObject();
echo gettype($client);
これで の型が$client
変わり、メソッドをobject
呼び出すことができます。Client
これは合理的な回避策ですか?そうでない場合、私は何をすべきですか?