そのような変数にアクセス/変更する必要性に遭遇しました:
$this->{$var}
コンテキストは、CI データマッパーの get ルールにあります。この構文が実際に何をするのかわかりません。{
はこのコンテキストで何をしますか?
なぜ使用できないのですか:
$this->var
そのような変数にアクセス/変更する必要性に遭遇しました:
$this->{$var}
コンテキストは、CI データマッパーの get ルールにあります。この構文が実際に何をするのかわかりません。{
はこのコンテキストで何をしますか?
なぜ使用できないのですか:
$this->var
これは可変変数であり、最終的には になり$this->{value-of-$val}
ます。
参照: http://php.net/manual/en/language.variables.variable.php
たとえば、次のようになります。
$this->a = "hello";
$this->b = "hi";
$this->val = "howdy";
$val = "a";
echo $this->{$val}; // outputs "hello"
$val = "b";
echo $this->{$val}; // outputs "hi"
echo $this->val; // outputs "howdy"
echo $this->{"val"}; // also outputs "howdy"
もちろん、これはクラスのコンテキスト内で機能します。次のように、変数変数をローカル コンテキストで簡単に使用できます。
$a = "hello";
$b = "hi";
$val = "a";
echo $$val; // outputs "hello"
$val = "b";
echo $$val; // outputs "hi"
まず、$this->{$var}
と$this->var
は 2 つの非常に異なるものです。後者はvar
クラス変数を要求し、もう一方は の文字列に含まれる変数の名前を要求します$var
。$var
が文字列の場合、'foo'
リクエスト$this->foo
などを行います。
これは、動的プログラミング(変数の名前が実行時にしか分からない場合) に役立ちます。しかし、{}
文字列コンテキストでの従来の表記法は、特に変な変数名がある場合に非常に強力です。
${'y - x'} = 'Ok';
$var = 'y - x';
echo ${$var};
Ok
スペースと文字のために変数名y - x
が有効でない場合でも出力され-
ます。