Source of file EventFeature.php
Size: 7,314 Bytes - Last Modified: 2014-03-12T23:21:18+01:00
/home/theseer/Downloads/ZendFramework-2.3.0/library/Zend/Db/TableGateway/Feature/EventFeature.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 | <?php /** * Zend Framework (http://framework.zend.com/) * * @link http://github.com/zendframework/zf2 for the canonical source repository * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ namespace Zend\Db\TableGateway\Feature; use Zend\Db\Adapter\Driver\ResultInterface; use Zend\Db\Adapter\Driver\StatementInterface; use Zend\Db\ResultSet\ResultSetInterface; use Zend\Db\Sql\Delete; use Zend\Db\Sql\Insert; use Zend\Db\Sql\Select; use Zend\Db\Sql\Update; use Zend\EventManager\EventManager; use Zend\EventManager\EventManagerInterface; use Zend\EventManager\EventsCapableInterface; class EventFeature extends AbstractFeature implements EventsCapableInterface { /** * @var EventManagerInterface */ protected $eventManager = null; /** * @var null */ protected $event = null; /** * @param EventManagerInterface $eventManager * @param EventFeature\TableGatewayEvent $tableGatewayEvent */ public function __construct( EventManagerInterface $eventManager = null, EventFeature\TableGatewayEvent $tableGatewayEvent = null ) { $this->eventManager = ($eventManager instanceof EventManagerInterface) ? $eventManager : new EventManager; $this->eventManager->addIdentifiers(array( 'Zend\Db\TableGateway\TableGateway', )); $this->event = ($tableGatewayEvent) ?: new EventFeature\TableGatewayEvent(); } /** * Retrieve composed event manager instance * * @return EventManagerInterface */ public function getEventManager() { return $this->eventManager; } /** * Retrieve composed event instance * * @return EventFeature\TableGatewayEvent */ public function getEvent() { return $this->event; } /** * Initialize feature and trigger "preInitialize" event * * Ensures that the composed TableGateway has identifiers based on the * class name, and that the event target is set to the TableGateway * instance. It then triggers the "preInitialize" event. * * @return void */ public function preInitialize() { if (get_class($this->tableGateway) != 'Zend\Db\TableGateway\TableGateway') { $this->eventManager->addIdentifiers(get_class($this->tableGateway)); } $this->event->setTarget($this->tableGateway); $this->event->setName(__FUNCTION__); $this->eventManager->trigger($this->event); } /** * Trigger the "postInitialize" event * * @return void */ public function postInitialize() { $this->event->setName(__FUNCTION__); $this->eventManager->trigger($this->event); } /** * Trigger the "preSelect" event * * Triggers the "preSelect" event mapping the following parameters: * - $select as "select" * * @param Select $select * @return void */ public function preSelect(Select $select) { $this->event->setName(__FUNCTION__); $this->event->setParams(array('select' => $select)); $this->eventManager->trigger($this->event); } /** * Trigger the "postSelect" event * * Triggers the "postSelect" event mapping the following parameters: * - $statement as "statement" * - $result as "result" * - $resultSet as "result_set" * * @param StatementInterface $statement * @param ResultInterface $result * @param ResultSetInterface $resultSet * @return void */ public function postSelect(StatementInterface $statement, ResultInterface $result, ResultSetInterface $resultSet) { $this->event->setName(__FUNCTION__); $this->event->setParams(array( 'statement' => $statement, 'result' => $result, 'result_set' => $resultSet )); $this->eventManager->trigger($this->event); } /** * Trigger the "preInsert" event * * Triggers the "preInsert" event mapping the following parameters: * - $insert as "insert" * * @param Insert $insert * @return void */ public function preInsert(Insert $insert) { $this->event->setName(__FUNCTION__); $this->event->setParams(array('insert' => $insert)); $this->eventManager->trigger($this->event); } /** * Trigger the "postInsert" event * * Triggers the "postInsert" event mapping the following parameters: * - $statement as "statement" * - $result as "result" * * @param StatementInterface $statement * @param ResultInterface $result * @return void */ public function postInsert(StatementInterface $statement, ResultInterface $result) { $this->event->setName(__FUNCTION__); $this->event->setParams(array( 'statement' => $statement, 'result' => $result, )); $this->eventManager->trigger($this->event); } /** * Trigger the "preUpdate" event * * Triggers the "preUpdate" event mapping the following parameters: * - $update as "update" * * @param Update $update * @return void */ public function preUpdate(Update $update) { $this->event->setName(__FUNCTION__); $this->event->setParams(array('update' => $update)); $this->eventManager->trigger($this->event); } /** * Trigger the "postUpdate" event * * Triggers the "postUpdate" event mapping the following parameters: * - $statement as "statement" * - $result as "result" * * @param StatementInterface $statement * @param ResultInterface $result * @return void */ public function postUpdate(StatementInterface $statement, ResultInterface $result) { $this->event->setName(__FUNCTION__); $this->event->setParams(array( 'statement' => $statement, 'result' => $result, )); $this->eventManager->trigger($this->event); } /** * Trigger the "preDelete" event * * Triggers the "preDelete" event mapping the following parameters: * - $delete as "delete" * * @param Delete $delete * @return void */ public function preDelete(Delete $delete) { $this->event->setName(__FUNCTION__); $this->event->setParams(array('delete' => $delete)); $this->eventManager->trigger($this->event); } /** * Trigger the "postDelete" event * * Triggers the "postDelete" event mapping the following parameters: * - $statement as "statement" * - $result as "result" * * @param StatementInterface $statement * @param ResultInterface $result * @return void */ public function postDelete(StatementInterface $statement, ResultInterface $result) { $this->event->setName(__FUNCTION__); $this->event->setParams(array( 'statement' => $statement, 'result' => $result, )); $this->eventManager->trigger($this->event); } } |