1. Go to this page and download the library: Download hiraeth/signal library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
hiraeth / signal example snippets
$emitter->on('user.created', function (User $user) use ($logger) {
$logger->log(sprintf("User '%s' was created.", $user->getLogin()));
});
foreach ($config['events'] as $event => $handler) {
$emitter->on($event, $container->get($handler))
}
foreach ($config['events'] as $event => $handler) {
$emitter->on($event, function(...$params) use ($container, $handler) {
$handler = $container->get($handler);
return $handler(...$params);
}
}
$signal = new Hiraeth\Utils\Signal(function($signal) use ($container) {
if (is_string($signal)) {
if (function_exists($signal)) {
return $signal;
}
if (strpos($signal, '::') !== FALSE) {
list($class, $method) = explode('::', $signal);
return [$container->get($class), $method];
}
if (class_exists($signal)) {
return [$container->get($signal), '__invoke'];
}
}
return NULL;
});
foreach ($config['events'] as $event => $handler) {
$emitter->on($event, $signal->create($handler))
}
$resolver = new Resolver($container);
$signal = new Hiraeth\Utils\Signal($resolver);
$signal = str_replace('@', '::', $signal);
if (preg_match('#^https?://#', $signal)) {
$client = $container->get('APIClient');
$client->setUrl($signal);
return function() use ($client) {
$client->setData(func_get_args());
$client->send();
};
}
class SignalTest extends PHPUnit\Framework\TestCase
{
public function testProxy()
{
//
// Create a new instance of signal with a totally useless
// resolver that always returns the same callback.
//
$signal = new Hiraeth\Utils\Signal(function($signal) use (&$target) {
$this->assertSame($signal, 'fake_signal');
return $target = new class {
public function __invoke($foo, $bar)
{
return $foo . ' ' . $bar;
}
};
});
//
// Create a new proxy for the signal as $foobar
// this does not yet call the resolver, rather $foobar
// contains a callback that will call the resolver when
// it gets called.
//
$foobar = $signal->create('fake_signal');
$this->assertNotSame($target, $foobar);
//
// Calling foobar resolves the signal to a target handler
// our anonymous class above, and calls it to get the result.
//
$result = $foobar('foo', 'bar');
$this->assertSame($result, 'foo bar');
//
// Once resolved, calling $signal->create() will return the
// resolved handler directly without a proxy.
//
$newbar = $signal->create('fake_signal');
$this->assertSame($target, $newbar);
}
}