2017 © Pedro Peláez
 

library mark

image

infrajs/mark

  • Thursday, March 15, 2018
  • by akiyatkin
  • Repository
  • 1 Watchers
  • 0 Stars
  • 348 Installations
  • PHP
  • 2 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 3 Versions
  • 3 % Grown

The README.md

Короткая идентификация массива данных

Установка через composer

{
    "require":{
        "infrajs/mark":"~1"
    }
}

Использование

$mark = new Mark('~auto/.mymarks/');

$mark->add('name',$fndef, $fncheck)

$mark->setVal('ds'); //Попытка восстановить данные по метке. в папке mymarks будет искатсья файл ds.json

$mark->getData(); //Если файл указанной метки не найден, то вернутся данные по умолчанию определённые с помощью $fndef;

$mark->setData($data); //Данные можно установить вручную. Для ключи будут проверены с помощью $fncheck и если проверка не пройдена будет установлено значение от функции $fndef;

$mark->getVal(); //Получить текущую метку. В этот момент метка будет сгенерирована и сохранена в папке автоматически.

Изменение данных

Имя метки может содержать и указания по изменению данных, которые по этой метки будут восстановлены., (*1)

Изменения указываются после двоеточия ключ и значения разделяются знаком =. Изменения может быть несколько, отделённые друг от друга двоеточием., (*2)

mark = 'xxx:keya=vala:keyb=valb:keyc=valc'

Применятся или нет изменения зависит от установленного для параметров check-функций, таким образом можно дать возможность пользователю устанавливать значения и гарантировать их корректность к моменту, где их нужно использовать., (*3)

Разберём указанный пример. Допустим по метке xxx были восстановлены данные, (*4)

{
    "keya":123,
    "keyd":"opa",
}

После применения указанных в метке изменнеий получатся данные, (*5)

{
    "keya":"vala",
    "keyb":"valb",
    "keyc":"valc",
    "keyd":"opa",
}

Но параметр keyc никак не зарегистрирован черзе функцию add и будет удалён. А новое значение параметра keya не пройдёт проверку и будет сброшено на значение по умолчанию 0. В итоге получится:, (*6)

{
    "keya":"0",
    "keyb":"valb",
    "keyd":"opa"
}

В коде это будет записано следующем образом:, (*7)


$mark = new Mark('~auto/.test/'); $mark->add('keya', function(){ return '0'; }, function($newval){ if (!preg_match("/^\d+$")) return false; return true; }); $mark->add('keyb', function(){ return 'bla'; }, function($newval){ return true; }); $mark->add('keyd', function(){ return 'bla'; }, function($newval){ return true; }); $mark->setVal('xxx:keya=vala:keyb=valb'); //Метка ~auto/.test/xxx.json уже должна существовать $data = $mark->getData(); //Новые данные с изменениям и удовлетворяющие проверкам $str = $mark->getVal(); //Будет сгенерировано новая метка для данных и сохранена в папке.

The Versions