У меня AbstractTableGateway такой:
class FundsTable extends AbstractTableGateway
{
protected $table = 'tb_funds';
public function __construct(AdapterInterface $adapter)
{
$this->adapter = $adapter;
$this->resultSetPrototype = new HydratingResultSet(new FundsHydrator(), new Fund());
$this->initialize();
}
public function fetchAll($year)
{
$select = new Select(array("f" => $this->table));
$resultSet = $this->selectWith($select);
$resultSet->initialize($resultSet->toArray());
return $resultSet;
}
}
И я хотел бы что-то проверить, прежде чем возвращать $resultSet в методе fetchAll, но у меня много этих методов, и я не хочу помещать if или where в каждый из них, хотел бы сделать функцию, не связанную с классом, i пытался использовать EventFeature или TableGateway, но у zend нет документации по этому поводу.
Ребята, у вас есть какие-нибудь предложения?
Спасибо






Я нашел способ сделать это,
В модели просто добавьте функцию EventFeature в конструкцию:
$this->featureSet = new FeatureSet();
$this->featureSet->addFeature(new EventFeature());
А затем в вашем Module.php вам нужно будет создать SharedEventManager. Это потому, что когда модель создает экземпляр EventFeature, внутри него создается новыйEventManager, отличный от EventManager, который Zend создает в начальной загрузке, поэтому вам просто нужно создать его и прикрепить следующее событие:
public function onBootstrap(MvcEvent $event)
{
$eventManager = $event->getApplication()->getEventManager();
$sharedEventManager = $eventManager->getSharedManager();
$sharedEventManager->attach(
'Zend\Db\TableGateway\TableGateway',
EventFeature::EVENT_PRE_SELECT,
function (EventFeature\TableGatewayEvent $e) {
//Do stuff here or call some method
});
}