Importing variable namespaces

后端 未结 2 1865
时光取名叫无心
时光取名叫无心 2021-01-06 17:28

Would it be possible to import namespaces using a variable like this:

$namespace = \'User\\Authorization\\Certificate\';
use $namespace;

Ob

相关标签:
2条回答
  • 2021-01-06 17:48

    No, PHP expects the use to follow a namespace, not an expression (which includes not a constant). See Using namespaces: Aliasing/Importing.

    However if you change the PHP code on the fly before executing it in some kind of aggregation or compilation phase within your system, you could replace the text with some variable data which looks static enough for PHP then.

    But I have no idea if your system is capable of doing so. I could imagine some stream wrapper or stream filter doing this on the fly. It could transparently take care of inserting the variable namespace name.

    0 讨论(0)
  • 2021-01-06 17:59

    While it isn't possible to pass a namespace in a variable to use, you can place the namespace and the expected "short" class name in a variable and use that in most places where you'd need it, like invoking new.

    $namespace = '\foo\bar';
    $class = 'baz';
    $fully_qualified = $namespace . '\\'. $class; // \foo\bar\baz
    $a_foo_bar_baz = new $fully_qualified(...);
    var_dump( $a_foo_bar_baz instanceof $fully_qualified ); // true
    
    0 讨论(0)
提交回复
热议问题