PHP ООП о справке - PullRequest
       1

PHP ООП о справке

2 голосов
/ 22 марта 2010

Можно ли объяснить на примере, что означает $ obj -> $ a () -> $ b? Я использовал PHP ООП довольно давно и видел в некоторых местах эту структуру, а не только эту $ obj -> $ a (); В каких случаях я должен использовать это?

Ответы [ 4 ]

2 голосов
/ 22 марта 2010
$a = 'someMethod';
$b = 'someProperty';
$obj->$a()->$b;

невероятно равно:

$obj->someMethod()->someProperty;

Подробнее о переменных переменных

1 голос
/ 24 марта 2010

Фактический термин Свободный интерфейс , как указано, возвращает оригинальный объект, вот полный пример класса

Class Fluent {
public $var1; 
public $var2;

function setVar1($value) {
    $this->var1 = $value;
    return $this;
}

function setVar2($value) {
    $this->var2 = $value;
    return $this;
}

function getVars() {
    echo $this->var1 . $this->var2;
}
}

$fluent = new Fluent();
$fluent->setVar1("Foo")->setVar2("Bar")->getVars();

Который, очевидно, вернет "FooBar".

НТН

1 голос
/ 22 марта 2010

Это означает, что $a() возвращает объект, а $b является членом объекта, $a() возвращает.

Это называется цепочкой методов , когда каждый метод возвращает исходный объект, поэтому можно вызывать различные методы одного и того же объекта без необходимости повторно указывать $obj-> перед каждым вызовом.

1 голос
/ 22 марта 2010

$ a - это имя метода. Следовательно, если $a = "myFunc", это эквивалентно:

$obj->myFunc()->$b;

$ b представляется ссылкой на свойство. Похоже, что метод возвращает объект, поэтому, если $b = "myProp", мы можем изменить это так:

$obj->myFunc()->myprop;

Это действительно плохая форма для понимания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...