On Fri, 1 Aug 2003, Mark Spruiell wrote:

Mark, thanks for your reply. The situation is, is that I am writing a 
large piece of software with several hundred functions. At the beginning 
of each function I have som initialization code that allows me to do 
several thing. 

Parse through the variables in a non standard way, and define a few 
variables to be global within the function. 

The only way I was able to accomplish this in the past was to call an 
include from the beginning of each function (as there is no way to write a 
function that uses func_get_args()). Calling this include however is quite 
inneficient, and I have replaced most of what it does with my C extension. 

I have also tried using the zend_register_auto_global function, but this 
appears to cause a great deal of unpredictable behaviour. 

Cheers,

Ken



> Hi Ken,
> 
> I'm fairly new to PHP extension programming, so forgive me if I'm
> missing the obvious, but your code appears to be trying to copy a
> global variable to a local scope. Is that your intent?
> 
> If so, why can't the script do this itself by using a "global"
> declaration for the variable? For example:
> 
> <?
> $v = "foo";
> 
> function bar()
> {
>   global $v;
>   echo "v = $v\n";
> }
> ?>
> 
> As for why you're getting a segfault, I suspect it's a reference
> counting issue. Have a look at the definition of
> ZEND_SET_SYMBOL_WITH_LENGTH in zend_API.h and you'll see it is
> modifying the container you retrieved from EG(symbol_table).
> 
> Good luck,
> - Mark
> 
> > I am trying to make a function for my extension that makes a predefined
> > variable global
> >
> > I have tried something along the lines of:
> >
> >  if(zend_hash_find(&EG(symbol_table), var, strlen(var)+1,  (void **)
> >    &vars_data)!=FAILURE)
> > {
> >   ZEND_SET_SYMBOL(EG(active_symbol_table), var,   *vars_data);
> > }
> >
> > but it seg faults upon second execution.
> >
> > Can someone reccomend a more successful method of accomplishing this?
> >
> >
> > Chhers,
> >
> > Ken
> >
> >
> >
> > --
> > PHP Internals - PHP Runtime Development Mailing List
> > To unsubscribe, visit: http://www.php.net/unsub.php
> >
> >
> 
> 
> 


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to