[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/
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 [EMAIL PROTECTED] To: [EMAIL PROTECTED] 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
Re: [PHP-DEV] understanding resources
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 [EMAIL PROTECTED] To: [EMAIL PROTECTED]; Joel Dudley [EMAIL PROTECTED] 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 [EMAIL PROTECTED] To: [EMAIL PROTECTED] 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 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DEV] understanding resources
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 [EMAIL PROTECTED] To: [EMAIL PROTECTED]; Joel Dudley [EMAIL PROTECTED] 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 [EMAIL PROTECTED] To: [EMAIL PROTECTED] 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 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, visit: http://www.php.net/unsub.php