Как я могу вызвать функцию из DLL из PHP на Windows? - PullRequest
4 голосов
/ 24 декабря 2009

Я использую xampp.

Я ищу, и похоже, что для php 4.x было расширение php_w32api.dll, которое, похоже, исчезло для php 5.x. Тем не менее, он все еще находится в документации на php.net, но помечен как экспериментальный.

Некоторые предлагали вместо этого использовать win32std в pecl, но это просто оборачивает некоторую функцию из win32 API, но не позволяет мне вызывать мои собственные функции dll. : /

Есть ffi, но ссылка на сайт pecl устарела, и похоже, что разработка прекратилась в 2004 году.

Есть идеи, как это сделать без написания собственного расширения php?

С наилучшими пожеланиями Marc

1 Ответ

4 голосов
/ 24 декабря 2009

COM-функции доступны только для версии PHP для Windows. Для поддержки .Net требуется PHP 5 и среда выполнения .Net. Для использования этих функций не требуется установка; они являются частью ядра PHP.

Сначала создайте свою DLL ActiveX (Visual Basic): Назовите ваш проект как "foo" и класс как "bar".

'---start VB code---
Public Function hello() As String
   hello = "Hello World!"
End Function
'---end VB code---

Затем сделайте dll и зарегистрируйте его с помощью regsvr32.exe Теперь создайте свой PHP-скрипт:

 <?php
    $obj = new COM("foo.bar");
    $output=$obj->hello(); // Call the "hello()" method
    // once we created the COM object this can be used like any other php classes.
    echo $output; // Displays Hello World! (so this comes from the dll!)
    ?>
...