for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace DeGraciaMathieu\Clike;
class Terminal {
/**
* @param array $availableCommands
*/
public function __construct(array $availableCommands)
{
$this->availableCommands = $availableCommands;
availableCommands
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:
class MyClass { } $x = new MyClass(); $x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:
class MyClass { public $foo; } $x = new MyClass(); $x->foo = true;
}
* try to launch a command class from a command line
* @param string $commandLine
* @throws \DeGraciaMathieu\Clike\Exceptions\UnknowCommand
* @return array
public function execute(string $commandLine) :array
$command = $this->retrieveCommand($commandLine);
return (new Command)->execute($command);
* Make Command class from binding
* @param string $binding
* @return \DeGraciaMathieu\Clike\Contracts\Command
protected function retrieveCommand(string $binding) :Contracts\Command
$command = array_filter($this->availableCommands, function($availableCommand) use($binding) {
return (new $availableCommand)->binding() === $binding;
});
if (! $command[0]) {
throw new Exceptions\UnknowCommand();
return new $command[0];
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: