我刚刚OOP
开始PHP
,我可以轻松理解::
和->
的使用情况。
但是当我看到这个时,例如,
$this->view->result
使用两个 ->
让我感到困惑。
任何人都可以帮助我吗?
我正在追踪其他人的源代码,并且非常想深究这一点。
答案 0 :(得分:2)
它是对象中的对象。 $ this-> view是一个对象,该类有一个名为result的属性。
答案 1 :(得分:2)
使用时
$this->view
你得到的视图对象是当前实例的属性。
否则
$this->view->result
与
相同$viewObject = $this->view;
$viewObject->result;
答案 2 :(得分:1)
如您所知,->
可让您访问属性或方法。显然,属性或方法也可以包含另一个对象。第二个->
将访问内部对象的属性或方法。
举个例子:
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) {
// }
答案 3 :(得分:1)
我们来看看一些代码:
$result = $this->view->result
// works exactly the same as
$view = $this->view;
$result = $view->result;
换句话说,$this->view
是一个对象。因此,您仍然可以从中检索对象属性。
答案 4 :(得分: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'。您看,您甚至可以使用堆叠并合并->
和::
。
答案 5 :(得分:0)
$this->view->result
view是类X中的变量,此变量是另一个类Y的对象,其中result是此类Y的变量