Короче, херня все это. Не туда я заехал с этими агрегатами. Все проще, делаем службу с названием Shop. Нафиг ей идентификатор, агрегат наверняка штука не обязательная. Тогда все на своих местах. Из покупателя все выкидываем:
<?php
namespace App\Models\Catalogue;
use ABC\Core\ActiveRecord\Model;
class Buyer extends Model
{
}
Он чуть позже пригодится. А каталог пусть магазин генерирует, получается что то вроде билдера. По крайней мере это логично. Этот метод в любом случае нельзя помещать в Product, если следовать законам ООП.
И за свойство ни кто не факнет. :)
<?php
namespace App\Models\Catalogue;
use App\Models\Catalogue\Product;
class Shop
{
protected $pageMenu;
@return
public function getCatalogue()
{
$config = \ABC::getConfig('catalogue');
$pageNum = GET('num');
$paginator = \ABC::newService(\ABC::PAGINATOR);
$paginator->setNums($pageNum, $config['num_rows'], $config['num_collumns']);
$cnt = Product::countAll();
$lmt = $paginator->getLimit();
$ofs = $paginator->getOffset($cnt);
$this->pageMenu = $paginator->createMenu();
return Product::find()->asObject()
->limit($lmt)
->offset($ofs)
->all();
}
}
И как то оно роднее сразу стало, хотя логика осталась в модели. Больше на один файл, но в ООП не принято мелочиться. Гуляем!
Правильно это или нет, походу тут просто никто не знает. Ну чтож, бум рыть литературу. :) Пусть с девочками спорят, где какую кавычку поставить.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.