仓库初始化
This commit is contained in:
79
extend/fast/Version.php
Normal file
79
extend/fast/Version.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace fast;
|
||||
|
||||
/**
|
||||
* 版本检测和对比
|
||||
*/
|
||||
class Version
|
||||
{
|
||||
|
||||
/**
|
||||
* 检测版本是否的版本要求的数据中
|
||||
*
|
||||
* @param string $version
|
||||
* @param array $data
|
||||
* @return bool
|
||||
*/
|
||||
public static function check($version, $data = [])
|
||||
{
|
||||
//版本号以.分隔
|
||||
$data = is_array($data) ? $data : [$data];
|
||||
if ($data) {
|
||||
if (in_array("*", $data) || in_array($version, $data)) {
|
||||
return true;
|
||||
}
|
||||
$ver = explode('.', $version);
|
||||
if ($ver) {
|
||||
$versize = count($ver);
|
||||
//验证允许的版本
|
||||
foreach ($data as $m) {
|
||||
$c = explode('.', $m);
|
||||
if (!$c || $versize != count($c)) {
|
||||
continue;
|
||||
}
|
||||
$i = 0;
|
||||
foreach ($c as $a => $k) {
|
||||
if (!self::compare($ver[$a], $k)) {
|
||||
continue 2;
|
||||
} else {
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
if ($i == $versize) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 比较两个版本号
|
||||
*
|
||||
* @param string $v1
|
||||
* @param string $v2
|
||||
* @return boolean
|
||||
*/
|
||||
public static function compare($v1, $v2)
|
||||
{
|
||||
if ($v2 == "*" || $v1 == $v2) {
|
||||
return true;
|
||||
} else {
|
||||
$values = [];
|
||||
$k = explode(',', $v2);
|
||||
foreach ($k as $v) {
|
||||
if (strpos($v, '-') !== false) {
|
||||
list($start, $stop) = explode('-', $v);
|
||||
for ($i = $start; $i <= $stop; $i++) {
|
||||
$values[] = $i;
|
||||
}
|
||||
} else {
|
||||
$values[] = $v;
|
||||
}
|
||||
}
|
||||
return in_array($v1, $values) ? true : false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user