

コードリーディングをしていたところ  
↓のようなソースコードを発見しました。  
（プライベートリポジトリのため具体なソースコードの掲載は控えます）

[code]

    $ins = new Hoge();
    ・・・・・・
    $ins2 = new $ins();
    
[/code]

これはどのような意味ですか？  
今まで見たことがない書き方だった為、気になっております。  
検索にも出てこないので具体的な影響が理解できておれずにいます。

ご回答の程よろしくお願い申し上げます。


CC BY-SA 4.0
2019-07-23T03:41:13.347
56826
2019-07-23T04:13:45.850
2019-07-23T03:48:43.907
3060
35191
question
php
new (new Hoge())はどんな効果をもたらしますか？


タイトルに記載の`new (new Hoge())`は正確ではありません。  
[こちら](https://php.net/manual/ja/language.oop5.basic.php#language.oop5.basic.new)の`new`の項目にも記載されていますが、インスタンスの元になったオブジェクト（例の場合は`Hoge`オブジェクト）の
**別の**
インスタンスを作成します。下記を実行すると分かると思いますが、新しいインスタンスと元になったインスタンスには依存関係はありません。PHP5.3.0以上で使える命令となります。

[code]

    <?php
    class Hoge {
        public $val = 0;
        public function sample(){ echo 'sample'.nl2br(PHP_EOL); }
    }
    
    $obj1 = new Hoge();
    $obj1->val = 1;
    $obj2 = new $obj1();
    echo $obj1->val.nl2br(PHP_EOL);// 1
    echo $obj2->val.nl2br(PHP_EOL);// 0
    $obj2->sample();
    
    var_dump($obj1!==$obj2);// True
    
[/code]


CC BY-SA 4.0
2019-07-23T04:13:45.850
56828
2019-07-23T04:13:45.850
7676
56826
answer