PHP中面向对象的编程

时间:2013-06-08 17:31:16

标签: php syntax

我刚刚OOP开始PHP,我可以轻松理解::->的使用情况。

但是当我看到这个时,例如,

$this->view->result

使用两个 ->让我感到困惑。

任何人都可以帮助我吗?

我正在追踪其他人的源代码,并且非常想深究这一点。

6 个答案:

答案 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的变量