1

PHP でこの興味深い構文について読んだことがあります。

$value = (new MyClass)->attribute1;
  1. 使用しても大丈夫ですか?私が分析したどのコードでも、このようなものは見たことがありません。長所と短所はありますか?
  2. この構文を使用して属性を設定できないのはなぜですか? このような構造:

    (新しい MyClass)->attribute1 = 'value1';

属性がクラスに既に存在するかどうかに関係なく、「=」記号でエラーをスローします。

4

2 に答える 2

2
  1. オブジェクトへの参照が失われ、もう使用できず、オブジェクト指向の概念が壊れているため、使用する意味がわかりません。

  2. (new MyClass)->attribute1 が先に解決されると思いますので、42 = 12 のように書くのと同じです。

于 2012-11-11T13:00:01.290 に答える
0

クラスMyClassが既存のすべてのインスタンスの内部静的リスト (またはハッシュマップ) をサポートしている場合、これは意味があるかもしれません。このようにして、新しいオブジェクトを作成し、将来の参照のためにリスト内の一意の ID またはインデックスを取得できます (たとえば、Cookie を介してクライアントに送信することによって)。

割り当てに関しては、この場合の正確なエラー メッセージを投稿します。エラーは、破棄されようとしている一時的な値に何かを割り当てることに関するものだと推測できます。

于 2012-11-11T13:31:19.290 に答える