infrajs / mark
此包的最新版本(v1.0.6)没有可用的许可证信息。
v1.0.6
2020-08-18 08:03 UTC
Requires
- infrajs/each: ~1
- infrajs/load: ~1
- infrajs/path: ~1
- infrajs/sequence: ~1
README
通过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(); //Получить текущую метку. В этот момент метка будет сгенерирована и сохранена в папке автоматически.
更改数据
标签名称可以包含更改数据的指示,这些数据将根据该标签恢复。
更改以冒号后跟键和值的形式指定,键和值之间用等号分隔。可以有多个更改,用冒号分隔。
mark = 'xxx:keya=vala:keyb=valb:keyc=valc'
更改是否应用取决于为参数设置的check函数,因此可以允许用户设置值并保证它们在需要使用时是正确的。
让我们分析以下示例。假设通过标签 xxx
恢复了数据
{ "keya":123, "keyd":"opa", }
应用标签中指定的更改后,将得到以下数据
{ "keya":"vala", "keyb":"valb", "keyc":"valc", "keyd":"opa", }
但是参数keyc没有通过add函数注册,将被删除。而新值keya无法通过检查,将被重置为默认值0。最终结果是
{ "keya":"0", "keyb":"valb", "keyd":"opa" }
在代码中将按以下方式记录
$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(); //Будет сгенерировано новая метка для данных и сохранена в папке.