Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Loading c libraries from php

in a recent project I've come really need the lib tre matching library.

However the project is in php, and there are no php bindings for the library.

I've tried to google how to create an interface for c libs, but all I found was the dl function which seams to load only php extensions.

What am I missing?

like image 858
Thomas Ahle Avatar asked Apr 04 '10 11:04

Thomas Ahle


2 Answers

If no "php bindings" exist, it looks like you'll have to develop them ;-)

This is done via a PHP extension -- such as, for example :

  • the mysql extension, that's used to communicate with MySQL, binding the libmysql library (with PHP <= 5.2)
  • The curl extension, that's a wrapper arround the curl library
  • and so many others...


If you want to learn more about writing PHP extensions, those links will probably interest you :
(Note that it's not quite an easy task -- but if you are required to... well ^^ ; and some would say it's not that hard )

  • Extension Writing Part I: Introduction to PHP and Zend
  • Extension Writing Part II: Parameters, Arrays, and ZVALs
  • Extension Writing Part II: Parameters, Arrays, and ZVALs [continued]
  • Extension Writing Part III: Resources
  • And, just for reference, as i'ts about C++ and not C : Wrapping C++ Classes in a PHP Extension

And, if you are really interested by the subject, and ready to spend some money on it, you could buy the book Extending and Embedding PHP (some pages are available as preview on Google Books too) ; It's considered as the book to read when interested on this subject (In fact, I've bought it some time ago, and, in my opinion, it is indeed an interesting read)

BTW, the author of that book is also the author of the first four articles I linked to ;-)

like image 131
Pascal MARTIN Avatar answered Oct 05 '22 09:10

Pascal MARTIN


Write an extension that exposes tre to PHP (or find one that already does). A good starting point is here.

Be warned that you won't be able to load your extension on most hosting services.

like image 23
Marcelo Cantos Avatar answered Oct 05 '22 09:10

Marcelo Cantos