Возврат товаров и метод цепочки в php - PullRequest
0 голосов
/ 31 августа 2018

Одна вещь, которую я заметил из laravel, - это то, что вы можете получать предметы и связывать функции. Как это реализовано в Laravel? Давайте рассмотрим пример здесь

При получении данных от модели вы часто можете сделать что-то подобное Model::get($id)->toArray();

Но если вы введете только Model::get($id), данные также будут возвращены. Как это реализовано? Я хочу создать такой метод, но проблема, с которой я столкнулся, заключается в том, что если я return $this, то я могу выполнять другие действия, но я не получаю никаких данных. Где я возвращаю данные, я не могу выполнить сцепление.

Если бы кто-нибудь мог дать мне пример и некоторое объяснение того, как это делается, было бы здорово.

1 Ответ

0 голосов
/ 31 августа 2018

Вы можете использовать предложения как свойства объекта, а также иметь связанные с ними магические методы преобразования. внутри класса свойства объекта вы предоставляете методы, которые вы связываете, и магический метод вызывается автоматически php, когда вы пытаетесь использовать только одно значение. Например:

Допустим, у вас есть класс Foo

class Foo {
    var $value;

    public function __construct($value) {
        $this->value = $value;
    }
    //the magic method __toString is used when you attempt to use the strval of
    // an object instance of this class
    public function __toString() {
        return strval($this->value);
    }
    function toArray(){
        return [
            'value' => $this->value
        ];
    }
}

и тест класса

class Test{
    static $foo;
}

если вы инициализируете Test::$foo = new Foo('var');, вы можете использовать цепочку методов, как показано в примере:

echo Test::$foo; //will echo "var"
print_r(Test::$foo->toArray()); //will echo "Array ( [value] => var )"

ссылки здесь: http://php.net/manual/en/language.oop5.magic.php#object.tostring

...