Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > PHP > Объекты PHP-классов как COM-объекты


Автор: Хакер 23.06.09, 04:54
Везде, что я смотрел о PHP и COM, рассказывается о том, как из php-скрипта получить доступ к COM-объектам, и люди наивно тащутся от возможости из php-скрипта поуправлять вордом или IE.

Меня же интересует обратное: передать в COM приложение ссылку на PHP-объект и повызывать из COM-приложения методы PHP-объекта.

Мой сторонний объект имеет некий метод (пусть это будет «BindWithMe»), имеющий один Variant-параметр. Стороннее приложение создаёт objref-моникер и передаёт его имя php-скрипту.

php-скрипт получает ссылку на этот объект (из имени моникера, скармливая имя моникера конструктору класса COM) и вызывает у него метод BindWithMe, передавая ссылку на внутриPHPшный объект.

В стороннем приложении я эту ссылку принимаю, но что мне с ней дальше делать?
Приходит ссылка на COM-объект, поддерживающий IDispatch и не поддерживающий IProvideClassInfo.

При попытке вызвать у этого объекта какой-нибудь метод из тех, что есть у php-объекта получаем ошибку «Object doesn't support this property or method». Т.е. реализация IDispatch этого объекта не даёт нам прямого доступа к членам php-объекта.

Собственно, вопрос в том, можно ли что-то полезное извлечь из этого объекта? Если нет, то как иначе я могу из стороннего COM-приложения вызывать методы php-объекта?
У меня была идея сделать у внешнего COM-объекта события, совпадающие с методами php-объекта, и назначать php-объект обработчиком событий с помощью com_event_sink, но меня постиг облом со стороны этой функции.

Автор: gnumus 02.07.09, 08:35
Ого. Не знал, что так можно.
Есть что почитать на эту тему?

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)