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() );
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测