Re: understanding resources
| From: | Alan Knowles | 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.ThenZEND_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 justaname 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 resourceshttp://www.php.net/manual/en/zend.variables.resource.php will be astartingpoint. 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 justaname 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 resourcescompleteHello all, I need to write a molecular visualization extension for PHP toacreatingproject I am working on. It will have to work somewhat like GD byaoutputresource, having other functions operate on that resource, and thenthean image. I have trouble finding a good explanation of resources in thePHPdocs. Perhaps I missed a section. Regardless, does anyone here know of a resource that explains resources in extensions? I think I will go overGD source code for now, and perhaps that is the best answer to myquestion.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