【问题标题】:PHP OOP : Use string as identifier for an aliasPHP OOP:使用字符串作为别名的标识符
【发布时间】:2013-07-22 09:55:06
【问题描述】:

我在某个命名空间的某处有一个类。说:

namespace space;
class MyClass(){}

我想要做的是为这个类创建一个别名而不扩展等。我拥有的是一个包含类名的字符串。我想做的是:

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

有可能吗?因为“use”关键字需要类标识符的文字字符串标记(需要标识符 (T_STRING))和通常的方法,如使用变量(例如,通过简单地调用 $functionName() 来调用变量中命名的函数),如所述,例如,@ 987654321@,没用。

UPD:当然,使用 eval 不起作用。

【问题讨论】:

  • 有时,只是有时,存在依赖注入的一个很好的案例 =)

标签: php oop namespaces aliases


【解决方案1】:

看来您正在寻找class_alias

class_alias('space\MyClass', 'space_MyClass');

【讨论】:

    【解决方案2】:

    您可以使用class_alias 函数。

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

    或者如果你不想使用这个,你也可以使用类似的 var

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

    【讨论】:

      【解决方案3】:
      <?php
      
      namespace animal;
      
      class Cats
      {
      
          static function Says()
          {
              echo "This is working";
          }
      
      }
      $className = "Cats";
      
      $classname = 'animal\\' . $className;
      $class = new $classname();
      
      echo $class->Says();
      
      
      ?>
      

      【讨论】:

        猜你喜欢
        • 2021-09-24
        • 2023-01-23
        • 2014-01-24
        • 2013-01-13
        • 2015-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多