PHP: How To Call Standard Library Functions

c, call, function, php

Solution

Can you package your libraries into a DLL? If so, you can call them through PHP's COM api.

PHP COM Docs: https://www.php.net/manual/en/book.com.php

Example Code:

<?php  
$com = new COM("DynamicWrapper");
$com->Register("KERNEL32", "Beep", "i=ll", "f=s", "r=l");
$com->Beep(800, 10);

Otherwise you can write a extension that contains a custom wrapper function (ie, execute_through_wrapper('yourfunc')). Here is a doc on writing php functions in C.

http://php.net/manual/en/internals2.funcs.php

Edit: http://abhinavsingh.com/blog/2008/12/php-extensions-how-and-why/

Here is a quick tutorial on writing extensions in C. It shouldn't be too difficult to write a wrapper function. Once you created the extension, it can be loaded dynamically through `dl()` (very dangerous, and depreciated).

https://www.php.net/manual/en/function.dl.php

Those are the only options in your case. There isn't a linux equivalent (.so loader) of the dll loader (its a win32-related api call).

Problem

I'm starting with PHP for dynamic web pages. I have some libraries written in ANSI C for getting/setting parameters and other proprietary stuff. I wonder, is there a simple solution to use a wrapper inside PHP to call this functions? Is there a already existing class/library? What would be the best practice to do this on my own? I don't want do make calls to external applications and use stdin/stdout! Is there a simple example available? I don't want to dig through the Zend documentation for now, I only need a feeling for the complexity.

Original source

Related problems