Обозначение двойной стрелки PHP для экземпляров класса (es)

Я был бы признателен, если бы кто-то объяснил мне использование двойной стрелки в PHP. Я предлагаю двойные классы и экземпляр этих классов, но я не уверен. Некоторые примеры будут хороши. Спасибо.

что-то вроде этого:

$obj->prop->methd();

5 ответов


Это просто указывает на то, что $obj имеет свойство, которое является своего рода классом, а не атомной переменной. Внутренний класс имеет метод method() который вызывается от второго оператора стрелки. Вы также можете получить доступ к свойствам внутреннего класса через вторую стрелку.

// Access the inner property
echo $obj->prop->inner_property
// 1234

// Call the inner method
$obj->prop->method();
// I'm the method!

определения классов могут быть чем-то вроде:

class obj
{
   // Will hold an instance of class Something
   public $prop;

   public function __construct() {
      $this->prop = new Something();
   }
}

class Something 
{
   public $inner_property = 1234;

   public function method() {
     echo "I'm the method!";
   }
}

в качестве примера возьмем, например, два класса:

<?php

class a {
    function test() {
        echo "test";
    }
}

class b {
    var $prop = null;
    function __construct() {
        $this->prop = new a();
    }
}

$obj = new b();
var_dump($obj);
$obj->prop->test();

?>

http://codepad.org/aEeRs45A

класс a дает $prop метод, когда b создается и вызывается конструктор. $prop на b является объектом класса b.


пока ваш метод возвращает объект, вы можете вызвать методы этого объекта, и так далее.

Итак, вот пример того, как вы можете связывать методы класса.

<?php
class MyTest {
    public function Hello() {
        echo "Hello ";
        return $this;
    }

    public function World() {
        echo "World!";
    }
}

$h = new MyTest();
$h->Hello()->World();
?>

prop является собственностью $obj который также является объектом. Поэтому для доступа propметод, вы должны использовать оператор стрелки снова.


$obj - >prop является переменной, определенной как

class class1{
    public $prop = new class2;
}

class2{
    function methd(){
        echo "methd function called";
    }
}


$obj->prop->methd();