如何实现这一点:object-> object-> property

Dan*_*iel 4 php oop

我看到很多代码都是这样的调用.

一个例子:

$person->head->eyes->color = "brown";
$person->head->size = 10;
$person->name = "Daniel";
Run Code Online (Sandbox Code Playgroud)

我如何实现上面所写的内容?

eli*_*ide 7

这仅仅意味着$person,$person->head$person->eyes每一个有其他对象的属性.head是属于$person,eyes属于$person->head,等等的财产.

因此,$person->head->size例如,当您设置size属性时$person->head,意味着$person->head必须是对象.换句话说,声明$person->head->size = 10;意味着set the size property of the head property of $person to 10.

示例代码:

<?php

class Eyes
{
    var $color = null;
}

class Head
{
    var $eyes = null;
    var $size = null;


    function __construct()
    {
        $this->eyes = new Eyes();
    }
}

class Person
{
    var $head = null;
    var $name = null;

    function __construct()
    {
        $this->head = new Head();
    }
}

$person = new Person();
$person->head->eyes->color = "brown";
$person->head->size = 10;
$person->name = "Daniel";

var_dump($person);
Run Code Online (Sandbox Code Playgroud)

这输出:

class Person#1 (2) {
  public $head =>
  class Head#2 (2) {
    public $eyes =>
    class Eyes#3 (1) {
      public $color =>
      string(5) "brown"
    }
    public $size =>
    int(10)
  }
  public $name =>
  string(6) "Daniel"
}
Run Code Online (Sandbox Code Playgroud)