Wenn ich SWIG verwende, um diese C++-Funktion zu verpacken:
boost::shared_ptr<Client> Client::create() {
return boost::shared_ptr<Client>(new Client());
}
Und rufen Sie es dann in PHP auf:
$client = Client::create();
echo gettype($client);
Die Art der $client
ist resource
, nicht object
und kann daher nicht anrufen Client
Methoden.
Welche Möglichkeiten habe ich, diese Funktion zu verpacken? Ich erstelle einen PHP-Wrapper für die C++-Bibliothek eines anderen Anbieters, also muss ich den Code so überarbeiten, dass er keine boost::shared_ptr
ist nicht wirklich eine Option.
Das ist die einzige Lösung, die ich bisher gefunden habe:
MyClient Client::createObject() {
return *Client::create();
}
Und ruft es in PHP auf:
$client = Client::createObject();
echo gettype($client);
Jetzt ist die Art der $client
ist object
und ich kann anrufen Client
Methoden darauf. Ist dies eine sinnvolle Abhilfe? Wenn nicht, was sollte ich dann tun?