Re: Newbie writing a PHP extension

From: Date: Sun, 15 Jul 2001 14:38:13 +0000
Subject: Re: Newbie writing a PHP extension
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-60053@lists.php.net to get a copy of this message
Hi, >> id3lib is a C++ library. I would like to create PHP objects to directly >> interface to the C++ classes within the library. I found the PHP docs about >> developing extensions to be very sparse, and directed mainly for PHP 3. Is >> there anywhere which has proper docs dealing with PHP 4? I've found the API >> docs at Zend, but there doesn't seem to be a way of downloading them (this >> is a requirement for me). > > I currently have a .zip with the Zend docs at my site, you can get it from > there: > > http://docs.2good.nu/tmp/zend.zip I'd love to get them, but the URL required a user name & password. Maybe you should move the file somewhere else? >> This library being C++, does its own memory allocation. Should I worry and >> try to write operator new() and operator delete() replacements and >> static-link the library, or just not bother and use the library as is? > > I believe you just use the existing new and delete operators, just make > sure you don't leak memory. Let's hear what others say on php-dev. That's good to hear. >> Another thing is garbage collection. How can I get PHP to tell me to free >> the memory dealing with my objects when they get cleaned up? Do I need to >> record all allocations and free things in my PHP_RSHUTDOWN function? > > This is a good question. :-) > > I think I have solved this by having a pointer to the C++ class instance > stored as a resource connected to the PHP object and then deleting the C++ > class instance on resource destruction. > > I looked at the COM extension to find out this. Hopefully you'll get more > info on php-dev. I found out about resources, and am using those at the moment. I haven't thought about attaching those to objects yet. Thanks for the idea. How exactly do I go about that though? I guess I'll peek at the COM extension as well. >> Not only is this my first PHP extension, but it is also my first proper >> Linux project. I've been programming C/C++ on Mac for a good few years, and >> programming PHP for over a year now. I know roughly how the build process >> works, but I'm sure there are more things I should know. Does anyone have >> suggestions on books to buy that would cover programming non-GUI programs >> and libraries, and the build process (building configure scripts and >> Makefiles)? > > For learning automake/autoconf I suggest you download this too from my > site: > > http://docs.2good.nu/tmp/autobook-1.0.tar.gz Same as above, password. > And of course you should get the make/automake/autoconf references from > gnu.org. Got those. I need some time to read them now. ;-) > About your question about undefined symbols I know I have had the same > problem, but I cannot recall the solution at the moment, sorry. I found out from the MySQL extension how to do that. You need to do some stuff with the [extname]_SHARED_LIBADD variable. I'm not quite sure if that's just dynamically linking the library, of if it gets statically linked. > I could also try to answer any other questions you might have about PHP > extension development in C++. > > Currently I am writing an extension called Universe. This extension is a > PHP interface to MICO (a C++ CORBA ORB). It will replace my earlier > Satellite extension which uses ORBit (a C ORB). Sounds interesting. I haven't taken the time to learn CORBA, and I don't even know what it's used for. Maybe you could clear me up? > Universe includes a "framework" for easy creation of PHP classes in C++ > but it's quite specialized for my needs. I'm hoping to make my ID3 extension simple enough not to require such a framework, but I might supply a few classes as examples and to simplify the mid-level interface to a much higher level. > By the way, have you thought about thread safety...? That's not easy > either... Supposedly id3lib is thread-safe. I haven't tested this though. All I'm doing is calling id3lib and doing a few basic conversions. One things that worries me is the resources. Does the Zend engine do its own locking when you add things to resources? Thanks for the help, PS: I took this back onto PHP-DEV, I hope you don't mind. -- .-. Chris Boot /v\ bootc@worldnet.fr // \\ /( )\ L I N U X ^^-^^ >Phear the Penguin<

« previous php.dev (#60053) next »