我刚开始OOP
,PHP
我很容易理解::
and的用法->
。
但是,例如,当我看到这个时,
$this->view->result
两者 的使用让->
我感到困惑。
有谁可以帮我离开这里吗 ?
我正在追踪其他人的源代码,并且真的很想深入了解这一点。
它是对象中的对象。$this->view 是一个对象,该类有一个名为 result 的属性。
当你使用
$this->view
您将获得视图对象,它是当前实例的属性。
正在做
$this->view->result
是相同的
$viewObject = $this->view;
$viewObject->result;
让我们看一些代码:
$result = $this->view->result
// works exactly the same as
$view = $this->view;
$result = $view->result;
换句话说$this->view
,是一个对象。因此,您仍然可以从中检索对象属性。
如您所知->
,您可以访问属性或方法。显然,属性或方法也可以包含另一个对象。第二个->
将访问内部对象的属性或方法。
举个例子:
class A {
public $b = null;
public function __construct() {
$this->b = new B();
}
public function returnCinB() {
return $this->b->c;
}
}
class B {
public $c = null;
public function __construct() {
$this->c = new C();
}
}
class C { }
$a = new A();
var_dump($a->returnCinB()); // class C#3 (0) {
// }
想象一下以下课程:
class shop {
...
public static function get_address() {
return new address(123);
}
class address {
....
public function get country() {
return new country(456);
}
}
class country {
...
get_continent() {
return 'abc';
}
}
你打电话时
shop::get_address()->get_country()->get_continent()
你会得到'abc'。你看,你可以使用 even stack 和 combine ->
and::
。
$this->view->result
view 是 X 类中的一个变量,这个变量是另一个 Y 类的对象,其中 result 是这个 Y 类的一个变量