Re: Class privacy and variable identifiers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



# morse@xxxxxxxxxxxx / 2006-10-23 15:07:29 -0500:
> 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.

    no

> Does PHP 5 supply a good way to generate a little utility class
> without polluting the public namespace?

    no

> Or are local variables in functions, class methods and class
> properties the only entities that can be hidden from public access?

    yes
 
> 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,....)

    that's even an idiom, although I'd urge you to use

    try {
        $rc = new ReflectionClass($class_name_variable);
        $object = $rc->newInstance($param1, $param2);
        // ...
    } catch (ReflectionException $e) {
        // handle it
    }

    since $o = new $cls may result in fatal error.

> Is this legal PHP 5?

    hard to tell, the only thing that defines "legal" PHP is the grammar
    implementation (there's no spec). other than that... it's worked
    for years, probably will.

>     $object_instance->$property_name_variable
>     $object_instance->$method_name_variable()
 
    both work

> 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?

    if it's not in http://php.net/manual/en/langref.php, then no.

-- 
How many Vietnam vets does it take to screw in a light bulb?
You don't know, man.  You don't KNOW.
Cause you weren't THERE.             http://bash.org/?255991

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux