0

これら 2 つの機能には共通点があるようです。たとえば、文字列内の名前を使用してメソッドを呼び出すなどです。違いは何ですか?リフレクションでできることはありますが、変数変数ではできませんか?

さらに、これら 2 つの機能の PHP 実行エンジン (VM) での実装の違いは何ですか?

4

1 に答える 1

1

彼らはお互いに何の関係もありません。

可変変数を使用すると、文字列を含む変数を利用して、別の変数の内容にアクセスできます。それらは紛らわしく、私の経験ではめったに使用されません。

<?php
$first = 'Bob';
$last = 'Smith';

$t = 'first';
echo $t;
echo $$t;

$t = 'last';
echo $t;
echo $$t;

リフレクションは、クラスの構造を発見できる言語またはライブラリの機能を表すために使用される一般的な用語です。これは、フレームワークやコンポーネントの開発者が、ユーザー提供のクラスで動作するデザイン パターンや高度に汎用的な機能を持つデザイン パターンを実装しようとしている場合に役立ちます。また、php コードを生成している場合や、既存のコードを文書化するツールを提供している場合にも非常に役立ちます。

API ドキュメントからわかるように、http: //php.net/manual/en/book.reflection.phpは、実行時にクラスのプロパティとメソッドを決定する方法を提供します。

于 2013-01-14T23:59:35.827 に答える