1. Go to this page and download the library: Download flyingfoxx/commandcenter 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/ */
namespace Foxx\Users;
class RegisterUserCommand
{
public $username;
public $password;
public function __construct($username, $password)
{
$this->username = $username;
$this->password = $password;
}
}
use Flyingfoxx\CommandCenter\CommandBus;
class RegistrationController
{
protected $commandBus;
public function __construct(CommandBus $commandBus)
{
$this->commandBus = $commandBus;
}
}
use Flyingfoxx\CommandCenter\CommandBus;
use Foxx\Users\RegisterUserCommand;
class RegistrationController
{
protected $commandBus;
public function __construct(CommandBus $commandBus)
{
$this->commandBus = $commandBus;
}
public function store()
{
// Grab the input (using Laravel in this example)
$input = Input::only('username', 'password');
// Create command
$command = new RegisterUserCommand($input['username'], $input['password']);
// Pass command to command bus
$this->commandBus->execute($command);
}
}
namespace Foxx\Users;
use Flyingfoxx\CommandCenter\CommandHandler;
class RegisterUserHandler implements CommandHandler
{
protected $user;
public function __construct(User $user)
{
$this->user = $user;
}
public function handle($command)
{
$user = $this->user->register($command->username, $command->password);
return $user;
}
}
namespace Foxx\Events;
use Foxx\Users\User;
class UserWasRegistered
{
public $user;
public function __construct(User $user)
{
$this->user = $user;
}
}
namespace Foxx\Users\User;
use Flyingfoxx\CommandCenter\Eventing\EventGenerator;
use Foxx\Events\UserWasRegistered;
class User
{
use EventGenerator;
protected $username;
protected $password;
public function register($username, $password)
{
$this->username = $username;
$this->password = $password;
$this->raise(new UserWasRegistered($this));
return $this;
}
}
namespace Foxx\Users;
use Flyingfoxx\CommandCenter\CommandHandler;
use Flyingfoxx\CommandCenter\Eventing\EventDispatcher;
class RegisterUserHandler implements CommandHandler
{
protected $user;
protected $dispatcher;
public function __construct(User $user, EventDispatcher $dispatcher)
{
$this->user = $user;
$this->dispatcher = $dispatcher;
}
public function handle($command)
{
$user = $this->user->register($command->username, $command->password);
$this->dispatcher->dispatch($user->releaseEvents());
return $user;
}
}
namespace Foxx\Listeners;
use Flyingfoxx\CommandCenter\Eventing\EventListener;
use Flyingfoxx\Events\UserWasRegistered;
class EmailNotifier extends EventListener
{
public function whenUserWasRegistered(UserWasRegistered $event)
{
// send an email to the user
}
}
namespace Foxx\Users;
use Flyingfoxx\CommandCenter\CommandValidator;
class RegisterUserValidator implements CommandValidator
{
public function validate($command)
{
var_dump('validating register user command');
}
}
use Flyingfoxx\CommandCenter\Laravel\Commander;
use Foxx\Users\RegisterUserCommand;
class RegistrationController
{
use Commander;
public function store()
{
// Grab the input (using Laravel in this example)
$input = Input::only('username', 'password');
// Create command
$command = new RegisterUserCommand($input['username'], $input['password']);
// Pass command to command bus
$this->execute($command);
}
}
namespace Foxx\Users;
use Flyingfoxx\CommandCenter\CommandHandler;
use Flyingfoxx\CommandCenter\Laravel\Dispatcher;
class RegisterUserHandler implements CommandHandler
{
use Dispatcher;
protected $user;
public function __construct(User $user)
{
$this->user = $user;
}
public function handle($command)
{
$user = $this->user->register($command->username, $command->password);
$this->dispatchEventsFor($user);
return $user;
}
}
namespace Foxx\Http\Controllers;
use Flyingfoxx\CommandCenter\Laravel\Commander;
use Foxx\Users\RegisterUserRequest;
class RegistrationController
{
use Commander;
public function store(RegisterUserRequest $request)
{
// Pass command to command bus
$this->execute($request);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.