json — переопределить / обновить переменную / массив в php файле

В моем недавнем проекте я работал над консольной командой, в которой мне нужно выполнить / запустить различные действия, упомянутые в json, на основе стандартного соглашения linux:

what:mv(Move),type:file,dir
what:mkdir(Make Directory)
what:touch(Make File)
what:cp(Copy), type:file,dir
what:echo (Write into File), type:override,append
what:sed (Find and Replace in file)

и схема param будет почти такой же, как и в Linux.

Текущая настройка (Mkdir, touch)

Json Schema (Array)

          "actions" => [
[
'what'  => "mkdir",
'param' => [
'name' => "cache",
'in'   => "bootstrap",
],
],
[
'what'  => "touch",
'param' => [
'name' => ".gitignore",
'in'   => "bootstrap/cache",
],
]
],

и его перебрать все действия и решить класс действий в соответствии с what тип (mkdir, touch) как MkdirOperation для функций mkdir и handle вызова соответственно.

<?php
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Filesystem\Exception\IOExceptionInterface;

class MkdirOperation extends Operation
{
const ATTR_IN = "in";
const ATTR_NAME = "name";

public function handle()
{
$path = $this->_path();
$this->oIO->comment($path);
if ($this->oFileSystem->isAbsolutePath($path)) {
try {
$this->oFileSystem->mkdir($path);
} catch (IOExceptionInterface $e) {
echo "An error occurred while creating your directory at ".$e->getPath();
}
$this->oIO->info("Directory created at:".$path);
}
}

private function _path()
{
return $this->oConfig->getBaseDir()
.$this->aParam[self::ATTR_IN].DIRECTORY_SEPARATOR
.$this->aParam[self::ATTR_NAME]
.DIRECTORY_SEPARATOR;
}
}

Требование:

//somefile.php
$path = "/var/www/ins/"
//someotherfile.php
return [
'files' = [
'Path\\To\\NameSpace',
'Path\\To\\NameSpace'
]
];

Итак, в основном я хочу обновить / переопределить мою упомянутую переменную / массив в соответствии с конкретными правилами, для этого я попытался подготовить правила в схеме json:

"actions": [
{
"what": "sed",
"in": "path/to/somefile.php",
"find": {
"type": "variable",
"value": "path"},
"replace": {
"type": "variable",
"value": "__DIR__.'/../vendor/compiled.php';"}
},{
"what": "put",
"value": "Path\\To\\NameSpace",
"in": "path/to/someotherfile.php",
"find": {
"type": "array",
"at": "files"}
}
]

Компонент, который я использую

  • Symfony / консоли
  • Symfony / Искатель
  • Symfony / файловая система

Находясь в поиске:

  • Предложение организовать схему набора правил таким образом, чтобы перебирать все действия для переменной update / override или push / pull элемента из массива и выполнять действие.
  • Механизм для обновления значения определенной переменной, а также элемента push / pull из массива / подмассива с использованием php.

Если что-то неясно с моей стороны, дайте мне знать.
Заранее спасибо.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]