2

また、これらの2行:

$subForm = $this->{$spec}
$subForm = $spec;

public function prepareSubForm($spec)

{
    if (is_string($spec)) {
        $subForm = $this->{$spec};
    } elseif ($spec instanceof Zend_Form_SubForm) {
        $subForm = $spec;
    } else {
        throw new Exception('Invalid argument passed to ' .
                __FUNCTION__ . '()');
    }
    $this->setSubFormDecorators($subForm)
    ->addSubmitButton($subForm)
    ->addSubFormActions($subForm);
    return $subForm;
}
4

1 に答える 1

1

ドキュメントのVariable Variablesの部分で次のように述べられています。

プロパティ名を明確に区切るために、中括弧を使用することもできます。プロパティ名が複数の部分で構成されている場合、配列を含むプロパティ内の値にアクセスするときに最も役立ちます

このコードでは、 の$this->{$spec}代わりに使用する構文関連の理由はありません$this->$spec

しかし:

  • 一部のチームにとっては、最初の形式の方が読みやすいかもしれません(= コード規則によって強制されます)。

  • おそらく過去には、$this->{'_' . $spec}たとえば、ここに (like のような) という表現がありました。また、式を「変数プロパティ名」として使用しようとする場合は、曲線ブレースを使用して区切る必要があります。

$specとの違いについては、$this->$specより明確です。このメソッドは、次の 2 種類の 1 つの引数を処理できます。

  • タイプの場合$specStringプロパティの名前として表示されます。このプロパティは、後で処理 (装飾) されるものです。

  • $specがオブジェクトの場合Zend_Form_SubForm、代わりにこのオブジェクトが装飾されます。

于 2012-09-29T14:08:03.623 に答える