Skip to content
/ commando Public

Command patten implementation, Makes your application more flexible and expandable.

License

Notifications You must be signed in to change notification settings

mkgor/commando

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Commando

Commando is a simple implementation of `Command` pattern. It gives you simple to make your application more flexible and expandable.

Contents

Requirments

The only requirement for now is a PHP 7.1+

Installation

The easiest way of installation is an installtion via composer:

composer require pixaye/commando

Usage

First of all, you should initialize and store CommandBus object

<?php

$bus = new \Commando\Bus\StandardCommandBus([
    Commands\SomeCommand::class => new Handlers\SomeCommandHandler(),
    Commands\SomeAnotherCommand::class => new Handlers\SomeAnotherCommandHandler()
]);

Then, to dispatch command, you should create command object and call dispatch method of bus

<?php

$bus = new \Commando\Bus\StandardCommandBus([
    Commands\RegisterNewUserCommand::class => new Handlers\RegisterNewUserCommandHandler(),
]);

//For example, we want to register new user
$registeredUser = $bus->dispatch(new Commands\RegisterNewUserCommand('John Doe', '1234567890'));

Command is a simple PHP class, which can contain some properties which handler should use to do some action.

<?php

namespace YourProject\Commands;

use Commando\Command\CommandInterface;

class RegisterNewUserCommand implements CommandInterface
{
    private $fullName;
    
    private $password;

    /**
     * @return mixed
     */
    public function getFullName()
    {
        return $this->fullName;
    }

    /**
     * @param mixed $fullName
     */
    public function setFullName($fullName)
    {
        $this->fullName = $fullName;
    }

    /**
     * @return mixed
     */
    public function getPassword()
    {
        return $this->password;
    }

    /**
     * @param mixed $password
     */
    public function setPassword($password)
    {
        $this->password = $password;
    }
}

It will call RegisterNewUserCommandHandler's handle method and return it

Important! - All handlers should implement Commando\Handler\HandlerInterface and every command should implement Commando\Command\CommandInterface

<?php

namespace YourProject\Handlers;

use Commando\Handler\HandlerInterface;

class RegisterNewUserCommandHandler implements HandlerInterface
{
    /**
     * @param RegisterNewUserCommand $command
     * @return string
     */
    public function handle($command)
    {
        return 'User with name  ' . $command->getFullName() . ' and password = ' . $command->getPassword() . ' has been created';
    }
}

About

Command patten implementation, Makes your application more flexible and expandable.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages