March 9, 2012

How to use a variable in a namespace?

Question by Chris

I’m trying to dig up my long-lost PHP skills and have therefore stumbled on a problem. I have a function that initializes (not sure if it’s a correct word for it) a class in the following fashion:

$foo = new MasterSlave$bar();

$bar is a defined class, obviously. But the entire thing doesn’t work. This only seems to work when I do the following:

$foo = new $bar();

But with my first example, it outputs the following error:

unexpected T_VARIABLE, expecting T_STRING

Which means that I have to manually enter the class name, correct? But, what if I’m a stubborn nerd who doesn’t want to and doesn’t see the efficiency in it? Hence my question; how to pull this off without getting a bloody error?

UPDATE: Got the thing working with wrapping the MasterSlave$bar in a $variable. Not sure if it’s the correct way of doing this, but it works and props go to Visual Idiot

Answer by Peter Kiss

Variables never bound to any namespace they will be always in the global scope.

Answer by Starx

AFAIK, the namespacing does not work the way you are trying to.

This is how you should do it

namespace MasterSlave;
$bar = "theclassname";
class $bar() {
}

Docs

Author: Nabin Nepal (Starx)

Hello, I am Nabin Nepal and you can call me Starx. This is my blog where write about my life and my involvements. I am a Software Developer, A Cyclist and a Realist. I hope you will find my blog interesting. Follow me on Google+

...

Please fill the form - I will response as fast as I can!