3

I have a class somewhere in some namespace. Say:

namespace space;
class MyClass(){}

What i want to do is to create an alias for this class without extending etc. Oherenly thing I have is a string which contains class name. What I would like to do is:

$className='MyClass';
use '\space\'.$className as 'space_'.$classname;

Is it possible somehow? Because "use" keyword expects class identifier's literal string token (expecting identifier (T_STRING)) and usual approach, like with variables (say, call function named in a variable by simply calling $functionName()), as described, for example, here, doesn't help.

UPD: Using eval doesn't work for that, of course.

1
  • 1
    Sometimes, just sometimes, a very good case exist for dependency injection =) Commented Aug 29, 2013 at 23:13

3 Answers 3

3

So it seems you are looking for class_alias

class_alias('space\MyClass', 'space_MyClass');
Sign up to request clarification or add additional context in comments.

Comments

2

You could use the class_alias function.

 class_alias('space\\' . $className, 'space_' . $classname);

Or if you don't want to use this, you could also use a var like

$classname = 'space\\' . $className;
$class = new $classname()

Comments

0
<?php

namespace animal;

class Cats
{

    static function Says()
    {
        echo "This is working";
    }

}
$className = "Cats";

$classname = 'animal\\' . $className;
$class = new $classname();

echo $class->Says();


?>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.