Class privacy and variable identifiers

From: Date: Mon, 23 Oct 2006 20:07:29 +0000
Subject: Class privacy and variable identifiers
Groups: php.general 
Request: Send a blank email to php-general+get-243499@lists.php.net to get a copy of this message
I have two somewhat general questions about the PHP 5 language. These points remain unclear to me after reading the manual and working with the language for a few months: i) Does the language provide a way to generate a private or local class that is accessible only within another function or a parent class. In python, for example, if you declare a class or function within a function definition, I believe it is accessible only within the parent function. Does PHP 5 supply a good way to generate a little utility class without polluting the public namespace? Or are local variables in functions, class methods and class properties the only entities that can be hidden from public access? ii) Suppose I would like to be able generate any of several classes at runtime, for which constructor interfaces are the same. These might, for example, be specialized subclasses of a common parent. Based on the idea of a variable variable, I am tempted to try to replace the class name by a variable, as in
    $object = new $class_name_variable($param1,$param2,....)
Is this legal PHP 5? Put another way, are variable names the only identifiers that can be replaced by string values of other variables, or is the technique more general? For instance, how about accessing a property or method by a name that is specified by a variable, as in:
    $object_instance->$property_name_variable
or
    $object_instance->$method_name_variable()
The idea of a 'variable variable' name seems quite useful, but I'm not sure how general the concept is. Is there a well-defined rule for when the parser will accept a string value of a variable as a replacement for a literal identifier. If so, is the rule documented? Thanks in advance for any insight.
                    			-David Morse
-- 
!-------------------------------------------------------------------!	
!  David Morse				email: morse@cems.umn.edu   !
!  Dept of Chem Eng & Mat Sci		phone: (612)625-0167	    !
!  University of Minnesota					    !
!  Minneapolis, MN 55455					    !
!-------------------------------------------------------------------!


« previous php.general (#243499) next »