代码之家  ›  专栏  ›  技术社区  ›  clarkk

在一行中从变量名和命名空间启动实例

php
  •  2
  • clarkk  · 技术社区  · 7 年前
    $map_class_name = __NAMESPACE__.'\\'.$map_class_name;
    $map = new $map_class_name;
    

    $map = new (__NAMESPACE__.'\\'.$map_class_name);
    

    以上给出

    语法错误,意外的“(”

    1 回复  |  直到 7 年前
        1
  •  3
  •   Community Mohan Dere    6 年前

    new 用字符串或表达式。

    但是你可以用

    $map = new $map_class_name;
    

    因为您使用来自当前命名空间的类( __NAMESPACE__

    $map = (new \ReflectionClass(__NAMESPACE__."\\$map_class_name"))->newInstance();
    

    另一种方法是不要越界,但我想这没有抓住重点。

    $map_class_name = __NAMESPACE__.'\\'.$map_class_name; $map = new $map_class_name;
    

    生命也是可能的

    $map = (function($n){return new $n;})(__NAMESPACE__."\\$map_class_name");
    
    推荐文章