PHP code example of icehawk / pubsub

1. Go to this page and download the library: Download icehawk/pubsub 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/ */

    

icehawk / pubsub example snippets




namespace MyVendor\MyNamespace;

use IceHawk\PubSub\Interfaces\CarriesInformation;
use IceHawk\PubSub\Interfaces\IdentifiesMessage;
use IceHawk\PubSub\Interfaces\NamesMessage;

final class MyMessage implements CarriesInformation
{
	/** @var IdentifiesMessage */
	private $messageId;
	
	/** @var NamesMessage */
	private $messageName;
	
	/** @var string */
	private $content;
	
	public function __construct( IdentifiesMessage $messageId, NamesMessage $messageName, string $content ) 
	{
		$this->messageId    = $messageId;
		$this->messageName  = $messageName;
		$this->content      = $content;
	}
	
	public function getMessageId() : IdentifiesMessage 
	{
		return $this->messageId;
	}
	
	public function getMessageName() : NamesMessage 
	{
        return $this->messageName;
	}
	
	public function getContent() : string
	{
		return $this->content;
	}
}



namespace MyVendor\MyNamespace;

use IceHawk\PubSub\Types\MessageId;
use IceHawk\PubSub\Types\MessageName;

$myMessage = new MyMessage( 
    new MessageId( '123456-ABC-789' ),
    new MessageName( 'Something had happened' ),
    'Hello World!' 
);



namespace MyVendor\MyNamespace;

use IceHawk\PubSub\AbstractMessageSubscriber;
use IceHawk\PubSub\Types\Channel;

final class MySubscriber extends AbstractMessageSubscriber
{
	protected function whenSomethingHadHappened( MyMessage $myMessage, Channel $channel )
	{
		printf(
		    'Message named "%s" with ID "%s" was published on channel "%" with content: "%s"',
		    $myMessage->getMessageName(),
		    $myMessage->getMessageId(),
		    $channel,
		    $myMessage->getContent()
		);
	}
}



namespace MyVendor\MyNamespace;

use IceHawk\PubSub\MessageBus;
use IceHawk\PubSub\Types\Channel;

// ...

$messageBus = new MessageBus();
$messageBus->subscribe( new Channel( 'ListenToMe' ), new MySubscriber() );




namespace MyVendor\MyNamespace;

use IceHawk\PubSub\Types\Channel;

// ...

$messageBus->publish( new Channel('ListenToMe'), $message );