Не могу понять вот это: Product:find()->asArray->all(); Я понимаю какой результат будет после этого выражения но, как реализованы вот эти стрелочки. Да я знаю когда мы создаем объект $obj = new Test(); мы можем обратиться к свойству или методу вот так $obj->method(); или так $obj->properte;. Можно ли сделать так $obj->method()->propery; Помогите разобраться с этой реализацией. Заранее спасибо!
Рассматривайте выражение Products::find()->asArray()->all();
как последовательное выполнение следующих операций:
$p = Products::find();
$p = $p->asArray();
$p = $p->all();
Поскольку нам неизвестно, что делает каждый из ваших методов, рассмотрим общую идею кода в примере: Products::find()->asArray()->all();
.
Реализовать это можно двумя следующими классами:
class Products{
private function __construct() {}
public static function find() { return new Product(); }
}
class Product{
private $data; //объект stdClass, хранящий данные
private $asArray;
public $somePublicField;
public function __construct() {}
public function asArray() {
$this->asArray = true;
return $this;
}
public function all() {
return json_decode(json_encode($this->data), $this->asArray); //конвертация объекта в массив, если $asArray = true
}
}
Чтобы реализовать $obj->method()->propery
используя код выше можно сделать так:
$p = Product::find()->asArray()->somePublicField;
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я создал кастомный тип поста и привязал к нему таксономию, делал все по сайту камы, почти все урлы работают правильно кроме одного момента,...
Как вот на этой странице используя PhpQuery спарсить информацию о заказчике (то что выделено жирным шрифтом)?
Где найти анализатор кода на совместимость с php 52