[svn:PHP-Sandwich] rev 1036 - PHP-Sandwich/trunk
[email protected] 2 May 2005 04:45:40 -0000
| Newsgroups | perl.php.sandwich.dev |
|---|---|
| Message-ID | <[email protected]> |
Author: shughes
Date: Sun May 1 21:45:39 2005
New Revision: 1036
Modified:
PHP-Sandwich/trunk/phpfuncs.c
Log:
add a "getVariable" method to the perl object to get a
perl variable and return the value back to php.
will add oo overloading for this next.
Modified: PHP-Sandwich/trunk/phpfuncs.c
==============================================================================
--- PHP-Sandwich/trunk/phpfuncs.c (original)
+++ PHP-Sandwich/trunk/phpfuncs.c Sun May 1 21:45:39 2005
@@ -27,6 +27,49 @@
memset(&swg->ps_stats, 0, sizeof(swg->ps_stats));
}
+PHP_METHOD(perl, getvariable)
+{
+ struct plobj *pl;
+ SV *var;
+ zval *retval;
+ char *name;
+ int namelen;
+ pTHX;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &namelen) == FAILURE) {
+ return;
+ }
+
+ if (namelen < 1) {
+ RETURN_NULL();
+ }
+
+ pl = zend_object_store_get_object(getThis() TSRMLS_CC);
+ aTHX = pl->perl;
+ var = NULL;
+
+ switch (name[0]) {
+ case '$':
+ var = get_sv(name + 1, FALSE);
+ break;
+ case '@':
+ var = (SV *) get_av(name + 1, FALSE);
+ break;
+ case '%':
+ var = (SV *) get_hv(name + 1, FALSE);
+ break;
+ default:
+ RETURN_NULL();
+ }
+
+ if (var != NULL) {
+ retval = SvZval(var);
+ RETURN_ZVAL(retval, 1, 0);
+ } else {
+ RETURN_NULL();
+ }
+}
+
PHP_METHOD(perl, getinstance)
{
struct plobj *pl;
@@ -102,6 +145,7 @@
static function_entry plobj_functions[] = {
PHP_ME(perl, eval, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(perl, getvariable, NULL, ZEND_ACC_PUBLIC)
{NULL, NULL, NULL}
};
@@ -187,6 +231,7 @@
}
INIT_CLASS_ENTRY(plobj, "PerlObject", plobj_functions);
+
plobj.create_object = plobj_create_object;
plobj_ce = zend_register_internal_class(&plobj TSRMLS_CC);
if (!plobj_ce) {