Skip to content
This repository has been archived by the owner on Jan 29, 2020. It is now read-only.

Commit

Permalink
Merge branch 'develop' of git://github.com/zendframework/zf2 into dev…
Browse files Browse the repository at this point in the history
…elop
  • Loading branch information
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 14 deletions.
20 changes: 6 additions & 14 deletions src/EventManager.php
Expand Up @@ -447,19 +447,15 @@ protected function triggerListeners($event, EventInterface $e, $callback = null)
$wildcardListeners = $this->getListeners('*');
if (count($sharedListeners) || count($sharedWildcardListeners) || count($wildcardListeners)) {
$listeners = clone $listeners;
}

// Shared listeners on this specific event
$this->insertListeners($listeners, $sharedListeners);

// Shared wildcard listeners
$this->insertListeners($listeners, $sharedWildcardListeners);
// Shared listeners on this specific event
$this->insertListeners($listeners, $sharedListeners);

// Add wildcard listeners
$this->insertListeners($listeners, $wildcardListeners);
// Shared wildcard listeners
$this->insertListeners($listeners, $sharedWildcardListeners);

if ($listeners->isEmpty()) {
return $responses;
// Add wildcard listeners
$this->insertListeners($listeners, $wildcardListeners);
}

foreach ($listeners as $listener) {
Expand Down Expand Up @@ -535,10 +531,6 @@ protected function getSharedListeners($event)
*/
protected function insertListeners($masterListeners, $listeners)
{
if (!count($listeners)) {
return;
}

foreach ($listeners as $listener) {
$priority = $listener->getMetadatum('priority');
if (null === $priority) {
Expand Down
22 changes: 22 additions & 0 deletions src/EventManagerAwareTrait.php
@@ -0,0 +1,22 @@
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @package Zend_EventManager
*/

namespace Zend\EventManager;

use \Zend\EventManager\ProvidesEvents;

/**
* @category Zend
* @package Zend_EventManager
*/
trait EventManagerAwareTrait
{
use ProvidesEvents;
}
46 changes: 46 additions & 0 deletions test/EventManagerAwareTraitTest.php
@@ -0,0 +1,46 @@
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @package Zend_EventManager
*/

namespace ZendTest\EventManager;

use \PHPUnit_Framework_TestCase as TestCase;
use \Zend\EventManager\EventManager;

/**
* @requires PHP 5.4
*/
class EventManagerAwareTraitTest extends TestCase
{
public function testSetEventManager()
{
$object = $this->getObjectForTrait('\Zend\EventManager\EventManagerAwareTrait');

$this->assertAttributeEquals(null, 'events', $object);

$eventManager = new EventManager;

$object->setEventManager($eventManager);

$this->assertAttributeEquals($eventManager, 'events', $object);
}

public function testGetEventManager()
{
$object = $this->getObjectForTrait('\Zend\EventManager\EventManagerAwareTrait');

$this->assertInstanceOf('\Zend\EventManager\EventManagerInterface', $object->getEventManager());

$eventManager = new EventManager;

$object->setEventManager($eventManager);

$this->assertSame($eventManager, $object->getEventManager());
}
}

0 comments on commit fc3991f

Please sign in to comment.