Re: understanding resources

From: Date: Fri, 14 Jun 2002 00:13:37 +0000
Subject: Re: understanding resources
References: 1 2 3  Groups: php.dev 
Request: Send a blank email to php-dev+get-85208@lists.php.net to get a copy of this message
http://www.php.net/manual/en/zend.variables.resource.php - Im sure thats improved alot since I first read it :) regards alan fabwash wrote:
Something went wrong in the format of my message! It should read:
ZEND_FETCH_RESOURCE(resource_ptr, resource_struct *, resource_id, -1, "resource", le_resource);
The first argument will be returned to the caller, that will be your resource identification. The second argument is a pointer to your resource (a zval, a struct, or whatever). The third argument is the resource destruction handler type.
Then
ZEND_FETCH_RESOURCE(resource_ptr, resource_struct *, resource_id, -1, "resource", le_resource); The first parameter will return your resource, the second is the type of your resource, the third is what was returned in "return_value" and passed back to the user, so that should be passed as an argument back to your extension, -1 to say that there is no default resource, "resource" is just
a
name that will be displayed if Zend cannot find your resource, and le_resource is the resource type you got back when you registered the resource destructor.
----- Original Message ----- From: "fabwash" <fabwash@hotmail.com> To: <php-dev@lists.php.net>; "Joel Dudley" <Joel.Dudley@asu.edu> Sent: Thursday, June 13, 2002 5:46 PM Subject: Re: [PHP-DEV] understanding resources
http://www.php.net/manual/en/zend.variables.resource.php will be a
starting
point. Basically you want to do this: 1) Create a destruction handler for your resource: void my_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC) { } 2) Register the destruction handler: le_resource = zend_register_resource_destructors_ex(my_destruction_handler, NULL, "resource"); 1) and 2) are done once in the code (usually at startup). 3) Register your resource ZEND_REGISTER_RESOURCE(return_value, resource_ptr, le_resource); Then when you need to get your resource, you will get the resource id as a parameter from the caller, then call : ZEND_FETCH_RESOURCE(resource_ptr, resource_struct *, resource_id, -1, "resource", le_resource); The first parameter will return your resource, the second is the type of your resource, the third is what was returned in "return_value" and passed back to the user, so that should be passed as an argument back to your extension, -1 to say that there is no default resource, "resource" is just
a
name that will be displayed if Zend cannot find your resource, and le_resource is the resource type you got back when you registered the resource destructor. If you don't want to return the resource to the caller but keep it as a property of your object, that's another story, and I can help on that one too if necessary. Fab. The first argument will be returned to the caller, that will be your resource identification. The second argument is a pointer to your resource (a zval, a struct, or whatever). The third argument is the resource destruction handler type. ----- Original Message ----- From: "Joel Dudley" <Joel.Dudley@asu.edu> To: <php-dev@lists.php.net> Sent: Thursday, June 13, 2002 12:37 PM Subject: [PHP-DEV] understanding resources
Hello all, I need to write a molecular visualization extension for PHP to
     
complete
a
project I am working on. It will have to work somewhat like GD by
     
creating
a
resource, having other functions operate on that resource, and then
     
output
an image. I have trouble finding a good explanation of resources in the
     
PHP
docs. Perhaps I missed a section. Regardless, does anyone here know of a resource that explains resources in extensions? I think I will go over
     
the
GD source code for now, and perhaps that is the best answer to my
     
question.
Thank you for reading my post. Joel Dudley Faculty Research Associate Arizona State University Kumar Laboratory of Evolutionary Functional Genomics http://lsweb.la.asu.edu/skumar/
     
-- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php


« previous php.dev (#85208) next »