- error_reporting: documentation ( source)
<?php
error_reporting(-1);
/**
* @author Abel de Beer <abel@thispagecannotbefound.com>
*/
class Slot {
/**
* @var mixed
*/
public $listener;
/**
* @var boolean
*/
public $once;
function __construct($listener, $once) {
$this->listener = $listener;
$this->once = $once;
}
}
/**
* @author Abel de Beer <abel@thispagecannotbefound.com>
*/
class OnceSignal implements OnceSignalInterface {
/**
* @var Slot[]
*/
protected $slots;
function __construct() {
$this->slots = array();
}
public function addOnce($listener) {
$this->slots[] = new Slot($listener, true);
}
public function dispatch() {
foreach ($this->slots as $index => $slot) {
if ($slot->once) {
unset($this->slots[$index]);
}
$callback = $slot->listener;
call_user_func($callback);
}
}
}
function myListener() {
echo __FILE__.' : '.__LINE__."\n";
}
$signal = new OnceSignal();
$signal->addOnce('myListener');
$signal->dispatch();