RE: [PHP] Detecting Multi-Scope Variables

From: Date: Tue, 01 Feb 2011 08:12:29 +0000
Subject: RE: [PHP] Detecting Multi-Scope Variables
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-311108@lists.php.net to get a copy of this message
> -----Original Message----- > From: Brad Lorge [mailto:brad@lorge.com.au] > Sent: Monday, January 31, 2011 9:53 PM > To: php-general@lists.php.net > Subject: [PHP] Detecting Multi-Scope Variables > > Hello All, > > I am new to the list so please be gentle :) > > I am working on a PHP framework and have run up against a functionality > hurdle which I keep falling at. Basically, I have three mechanisms which all > function in a similar way and require this functionality: templating, event > handling and "action handling". Within the core code of the application, as > is common with many applications with plugin architecture, I pass a number > of parameters to functions which have hooked into a particular "event". Part > of the mechanism is that parameters can be passed by reference to allow > for the listeners to make modifications. > > $username="bob";$account_type="ISV";$password="fishbum"; > > register_action_listener('process_user', function($username, > $account_type, $password){$username.="." . $account_type;} // Or > whatever > > call_action('process_user', &$username, &$account_type, &$password); > //Result: $username == "bob.ISV" I think you meant to use [1]. > > Now, what I am trying to do is establish a method to prevent the "hook" > functions from making changes by reference without reference explicitly > being passed to them by the calling code. > Perhaps you should review [2] and see if your logic works with your 'call_action'. > I have thought of a method which simply makes a copy of all the parameters > for each listener within call_action(), however what I would really love is a > function which returns whether or not the supplied variable is available in > multiple scopes or is in the original scope which it was initialized in. > Does anyone know of a way to achieve this? > > Regards, > Brad Happy coding, Tommy [1] http://php.net/call_user_func [2] http://php.net/references

« previous php.general (#311108) next »