如何在symfony中使用伪变量$ this?

时间:2016-02-05 19:36:39

标签: php symfony this

我理解有关 $ this http://php.net/manual/en/language.oop5.basic.php

的官方解释

但如果我试着理解symfony这个例子中的对象引用是什么,我不知道是谁,例如:

每当您需要返回主题时,请使用:

public function indexAction()
    {
        return $this->render('foo/bar.html.twig', array());
    }

或者当您生成某种形式时:

public function indexAction(Request $request)
    {

        // Create the form

        $form = $this->createFormBuilder()
                ->add('name', TextType::class)
                ->add('email', EmailType::class)
                ->add('subject', TextType::class)
                ->add('message', TextareaType::class)
                ->add('send', SubmitType::class)
                ->getForm();
}

但究竟谁是对象$ this?如果使用不是$ this的其他单词或值,只能尝试更好地理解。

3 个答案:

答案 0 :(得分:1)

如果您询问控制器中$this调用的方法的位置,请查看控制器的extends语句(在课程声明后)。

所有控制器都扩展(默认情况下)FrameworkBundle Controller,您也可以访问所有继承的方法,例如createFormrendergetDoctrine,{{ 1}}。

generateUrlController(依赖注入)延伸,它允许您访问和使用ContainerAware
我列出的大部分方法都只是服务方法的捷径。

即。 services等于$this->generateUrl(/*params*/)

答案 1 :(得分:0)

在这种情况下,$ this引用对象的实例,例如。你在一个控制器,然后$ this变量引用你所在的控制器的当前实例,你可以访问该类本身具有的所有方法和扩展类的所有方法,在这种情况下是基本控制器和等等在继承层次结构中。

您可以阅读此问题以获得更清晰的信息。

How does the "this" keyword work?

答案 2 :(得分:0)

$this是一个类的实例在PHP中引用自己的方式。

class Person
  private $name;

  public function __construct($name){
    $this->name = $name;
  }

  public function getName($name){
    $this->name = $name;
  }
end

使用$foo = new Person('Max');创建类的实例时。 $this引用您正在创建的新实例。在控制器中使用$this时 - 这指的是控制器本身。

用自然语言说my