Если я использую SWIG, чтобы обернуть эту функцию C ++:
boost::shared_ptr<Client> Client::create() {
return boost::shared_ptr<Client>(new Client());
}
А затем вызвать его на PHP:
$client = Client::create();
echo gettype($client);
Тип $client
- resource
, а не object
, поэтому я не могу вызывать Client
методы.
Какие у меня есть варианты для переноса этой функции? Я создаю оболочку PHP для чужой библиотеки C ++, поэтому переделка кода без boost::shared_ptr
на самом деле не вариант.
Это единственное решение, которое я придумала до сих пор:
MyClient Client::createObject() {
return *Client::create();
}
И вызывая его в PHP:
$client = Client::createObject();
echo gettype($client);
Теперь тип $client
равен object
, и я могу вызывать Client
методы для него. Это разумный обходной путь? Если нет, что мне делать?