mirror of
https://github.com/Chouchen/Shikiryu_Backup.git
synced 2021-06-30 16:02:14 +02:00
Going namespaced, going scenario style
This commit is contained in:
44
app/code/Scenario.php
Normal file
44
app/code/Scenario.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace Shikiryu\Backup;
|
||||
|
||||
use Shikiryu\Backup\Backup\Factory as BackupFactory;
|
||||
use Shikiryu\Backup\Transport\Factory as TransportFactory;
|
||||
|
||||
class Scenario {
|
||||
|
||||
private $backup;
|
||||
private $to;
|
||||
|
||||
/**
|
||||
* @param array $scenario
|
||||
*/
|
||||
private function __construct(array $scenario)
|
||||
{
|
||||
$this->backup = BackupFactory::build($scenario['backup']);
|
||||
$this->to = TransportFactory::build($scenario['to']);
|
||||
}
|
||||
|
||||
|
||||
public static function launch($scenario)
|
||||
{
|
||||
if (is_readable($scenario)) {
|
||||
$scenario = json_decode(file_get_contents($scenario), true);
|
||||
if (static::isValid($scenario)) {
|
||||
$scenario = new self($scenario);
|
||||
}
|
||||
throw new \Exception('invalid scenario.');
|
||||
}
|
||||
throw new \Exception('scenario not found.');
|
||||
}
|
||||
|
||||
public static function isValid(\StdClass $scenario)
|
||||
{
|
||||
return
|
||||
isset($scenario->backup) &&
|
||||
count($scenario->backup) === 1 &&
|
||||
isset($scenario->to) &&
|
||||
count($scenario->to) === 1;
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user