valorin/debver

用于比较 Debian/Ubuntu 包版本字符串的简单 PHP 辅助类。

1.2 2012-11-05 03:39 UTC

This package is auto-updated.

Last update: 2024-09-08 21:14:21 UTC


README

版本 1.2 Build Status

用于处理 Debian/Ubuntu 包版本字符串的简单 PHP 辅助类。

安装

安装 Debver 最简单的方法是使用 PHP 的出色依赖管理器 Composer。一旦安装了 Composer,运行 composer.phar require valorin/debver:1.*,Composer 会为您完成所有艰苦的工作。

使用方法

如果您使用的是 Composer 中的自动加载器(或您的框架已集成到其中),那么您只需在每个希望使用 Debver 的文件顶部添加一个 use Debver\Version; 语句,并像使用普通类一样使用它。

<?php
namespace YourApplication;
use Debver\Version;

$version1 = "5.1.2-1ubuntu3.9";
$version2 = "3.9.4-4ubuntu0.2";

$compare = Version::compare($version1, $version2);

比较两个版本字符串

$result = Version::compare($version1, $version2);

if ($result == -1) {
    echo "{$version1} < {$version2}";
} elseif ($result == 0) {
    echo "{$version1} == {$version2}";
} elseif ($result == 1) {
    echo "{$version1} > {$version2}";
}

提取版本字符串组件

版本字符串的三个组件可以轻松提取:纪元上游版本Debian 修订版

$version = new Version($version1);

$epoch    = $version->getEpoch();
$upstream = $version->getUpstream();
$revision = $version->getRevision();

Ubuntu 手册:deb-version

使用 dpkg 比较两个版本字符串

如果您正在运行的 Ubuntu/Debian 系统上,您可以直接使用 dpkg 来比较两个包(对于所有非常奇怪的版本字符串,准确性达到 100%)。此选项是为了测试自定义函数而添加的,我决定保留它以备不时之需。内部使用 dpkg --compare-versions {$version1} lt {$version2} 通过 system() 调用。

$result = Version::compareWithDpkg($version1, $version2);

if ($result == -1) {
    echo "{$version1} < {$version2}";
} elseif ($result == 0) {
    echo "{$version1} == {$version2}";
} elseif ($result == 1) {
    echo "{$version1} > {$version2}";
}

获取用于存储在数据库中的 “比较字符串”

有时您需要将大量版本号存储在数据库中,然后使用数据库本身批量比较它们,而不是提取数据并在代码中进行操作。一个 “比较字符串” 是版本字符串的详细版本,可以使用基本字符串比较函数(> < ==)进行比较,非常适合在数据库中使用。

$string = Version::getCompareString($version);