I'm more in favour to use an interface like https://github.com/owncloud/3rdparty/blob/master/doctrine/common/lib/Doctrine/Common/EventManager.php
or the symfony defined interface