はチュートリアルを通して行く、symfonyで速度まで取得しようとすると、このページ(symfony.com/doc/current/forms.html)に次のサンプルである:Iすぐ前にこの構文を見たことがないたPHP構文は
$form = $this->createFormBuilder($task)
->add('task', TextType::class)
->add('dueDate', DateType::class)
->add('save', SubmitType::class, array('label' => 'Create Post'))
->getForm();
return $this->render('default/new.html.twig', array(
'form' => $form->createView(),
));
表面的に見えるコールチェーンを排除し、次に「裸の」矢印のそれぞれを$form
の方法を指すように解釈することが大抵正しいことを見出した。それはこのバージョンで正常に動作しました。
$formBuilder = $this->createFormBuilder($task);
$formBuilder->add('task', TextType::class);
$formBuilder->add('dueDate', DateType::class);
$formBuilder->add('save', SubmitType::class, array('label' => 'Create Post'));
$form = $formBuilder->getForm();
return $this->render('default/new.html.twig', array(
'form' => $form->createView(),
));
私は元のサンプルを理解しようとしています。外見上断線している矢印の正しい解釈が「最初の行に指定されたオブジェクトのメソッドを呼び出す」場合は、行「->getForm();
」以外のすべてについて説明します。しかし同じルールがその行に適用された場合、その行は "$formBuilder->getForm();
"になります。もちろん、$ formへの割り当てがないためにrender()行に失敗します。ビルダーの名前は$形式になっていました)。
このチュートリアルでは間違いがありますか、どのような構文の微妙な部分がありますか?
( "php"、 "arrow"、 "syntax"、...)の組み合わせで広範囲に検索しましたが、一連のメソッド呼び出しでオブジェクト名を省略することについては何も見つかりませんでした。
'FormBuilder :: add'の定義を参照して連鎖していることを確認し、変更された' FormBuilder'オブジェクトを返します。戻り値の型は異なりますが、最後の行ですが、同じ名前を使用すると '$ form'がすべて定義されていることを意味するので、そのセットの最後の行は巧妙なトリックです。私はコード内の読みやすさのためにそれを変更しているので、読者はメソッド定義を調べる必要はなく、チュートリアルは素早く説明できます(彼らは質問に頼っています)。 –