symfony 中的伪变量 $this 是如何工作的?
How works the pseudo-variable $this in symfony?
我明白官方关于$this的解释:http://php.net/manual/en/language.oop5.basic.php
但是如果我试图理解在这个symfony的例子中对象引用是什么,我不知道它是谁,例如:
每次需要return主题时,使用这个:
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 的其他词或值,只是为了尝试更好地理解。
在这种情况下 $this 引用对象的实例,例如。你在一个控制器中,然后 $this 变量引用你所在的控制器的当前实例,你可以访问 class 本身具有的所有方法以及扩展 [=17= 的所有方法] 在这种情况下,继承层次结构中的基本控制器等。
您可以阅读此问题以更加清楚。
How does the "this" keyword work?
$this
是 class 中的实例在 PHP 中引用自身的方式。
class Person
private $name;
public function __construct($name){
$this->name = $name;
}
public function getName($name){
$this->name = $name;
}
end
当您使用 $foo = new Person('Max');
创建 class 的实例时。 $this
指向您正在创建的新实例。当您在控制器中使用 $this
时 - 这是指控制器本身。
在自然语言中,它就像在说 my
。
如果您询问控制器中 $this
调用的方法位于何处,请查看控制器的 extends
语句(就在 class 声明之后)。
您所有的控制器(默认情况下)扩展了 FrameworkBundle Controller,您还可以访问所有继承的方法,例如 createForm
、render
、getDoctrine
、 generateUrl
.
父 Controller
扩展自 ContainerAware
(依赖注入),它允许您访问和使用 services
.
我列出的大部分方法只是服务方法的快捷方式。
即$this->generateUrl(/*params*/)
等于 $this->container->get('router')->generate(/*params/*)
我明白官方关于$this的解释:http://php.net/manual/en/language.oop5.basic.php
但是如果我试图理解在这个symfony的例子中对象引用是什么,我不知道它是谁,例如:
每次需要return主题时,使用这个:
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 的其他词或值,只是为了尝试更好地理解。
在这种情况下 $this 引用对象的实例,例如。你在一个控制器中,然后 $this 变量引用你所在的控制器的当前实例,你可以访问 class 本身具有的所有方法以及扩展 [=17= 的所有方法] 在这种情况下,继承层次结构中的基本控制器等。
您可以阅读此问题以更加清楚。
How does the "this" keyword work?
$this
是 class 中的实例在 PHP 中引用自身的方式。
class Person
private $name;
public function __construct($name){
$this->name = $name;
}
public function getName($name){
$this->name = $name;
}
end
当您使用 $foo = new Person('Max');
创建 class 的实例时。 $this
指向您正在创建的新实例。当您在控制器中使用 $this
时 - 这是指控制器本身。
在自然语言中,它就像在说 my
。
如果您询问控制器中 $this
调用的方法位于何处,请查看控制器的 extends
语句(就在 class 声明之后)。
您所有的控制器(默认情况下)扩展了 FrameworkBundle Controller,您还可以访问所有继承的方法,例如 createForm
、render
、getDoctrine
、 generateUrl
.
父 Controller
扩展自 ContainerAware
(依赖注入),它允许您访问和使用 services
.
我列出的大部分方法只是服务方法的快捷方式。
即$this->generateUrl(/*params*/)
等于 $this->container->get('router')->generate(/*params/*)