dongshan1959 2014-11-28 19:23
浏览 327
已采纳

用于从方法创建新对象的Nice Syntaxe

There is a shortcut method to create an object from a method that return a string?

For the moment, I used that :

class MyClass {

    /**
     * @return string
     */
    public function getEntityName() {
        return 'myEntityName';
    }
}

$myClassInstance = new MyClass();

// Need to get string
$entityName = $myclassInstance->getEntityName();

// And after I can instantiate it
$entity = new $entityName();
  • 写回答

1条回答 默认 最新

  • dongxiao1591 2014-11-29 05:58
    关注

    There is short-cut syntax for getting the string but not for creating the object from the string to date in PHP. See the following code in which I also include a 'myEntityName' class:

    <?php
    
    class myEntityName {
        public function __construct(){
            echo "Greetings from " . __CLASS__,"
    ";
        }
    }
    class MyClass {
    
        /**
         * @return string
         */
        public function getEntityName() {
            return 'myEntityName';
        }
    }
    
    $entityName = ( new MyClass() )->getEntityName();
    $entity = new $entityName();
    

    With one line the code instantiates a MyClass object and executes its getEntityName method which returns the string $entityName. Interestingly, if I replace my one-liner with the following it fails in all versions of PHP except for the HipHop Virtual Machine (hhvm-3.0.1 - 3.4.0):

    $entityName = new ( ( new MyClass() )->getEntityName() );
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化