Обозначение двойной стрелки 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();
?>
класс 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();