1. Go to this page and download the library: Download grazulex/php-semver-sieve library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
grazulex / php-semver-sieve example snippets
use Grazulex\SemverSieve\Sieve;
use Grazulex\SemverSieve\Dialects\GenericSemverDialect;
// Create a sieve instance
$sieve = new Sieve(new GenericSemverDialect());
// Simple boolean check
$matches = $sieve-> 'normalized_ranges' => ['>=2.0.0-0 <3.0.0-0', '>=1.9.0-0 <2.0.0-rc.1']
// ]
use Grazulex\SemverSieve\Dialects\ComposerDialect;
$sieve = new Sieve(new ComposerDialect());
// Composer-specific syntax
$sieve->raints
'1.2.*' // Wildcard
]);
use Grazulex\SemverSieve\Dialects\NpmDialect;
$sieve = new Sieve(new NpmDialect());
// npm-specific features
$sieve->pace protocol
'workspace:^1.0', // Workspace with range
'1.2.x', // X-ranges
'1.x.x', // Multi-segment X-ranges
]);
// Special npm tags supported:
// latest, next, alpha, beta, rc, canary, experimental, dev, nightly
use Grazulex\SemverSieve\Dialects\PypiDialect;
$sieve = new Sieve(new PypiDialect());
// PEP 440 compliant syntax
$sieve->constraints
'!=1.2.4', // Exclusion
]);
// Supports: dev releases, post releases, epochs, local versions
use Grazulex\SemverSieve\Dialects\RubyGemsDialect;
$sieve = new Sieve(new RubyGemsDialect());
// Ruby-specific pessimistic constraints
$sieve->
]);
use Grazulex\SemverSieve\Dialects\MavenDialect;
$sieve = new Sieve(new MavenDialect());
// Maven version ranges and qualifiers
$sieve->includes('1.2.3-SNAPSHOT', [
'[1.0,2.0)', // Range: >= 1.0, < 2.0
'[1.0,2.0]', // Range: >= 1.0, <= 2.0
'(1.0,2.0)', // Range: > 1.0, < 2.0
'1.0+', // Soft
use Grazulex\SemverSieve\Dialects\NugetDialect;
$sieve = new Sieve(new NugetDialect());
// NuGet 4-segment versions and interval notation
$sieve-> // Any version
]);
use Grazulex\SemverSieve\Dialects\GoModDialect;
$sieve = new Sieve(new GoModDialect());
// Go module versions ( // Incompatible version
]);
// Supports pseudo-versions: v0.0.0-20191109021931-daa7c04131f5
use Grazulex\SemverSieve\Dialects\GenericSemverDialect;
$sieve = new Sieve(new GenericSemverDialect());
// Standards-compliant SemVer 2.0.0
$sieve->// Prerelease versions
]);
use Grazulex\SemverSieve\Configuration\SieveConfiguration;
$config = new SieveConfiguration(
/ Accept "v1.2.3" format
caseInsensitive: true, // "RC" vs "rc"
allowLeadingZeros: false, // "01.02.03" format
maxVersionLength: 256 // Security limit
);
$sieve = new Sieve(new GenericSemverDialect(), $config);
// Default: Balanced settings for most use cases
$config = SieveConfiguration::default();
// Strict: Enforce strict SemVer compliance
$config = SieveConfiguration::strict();
// - strictSegments: true
// - allowVPrefix: false
// - allowLeadingZeros: false
// Lenient: Accept more version formats
$config = SieveConfiguration::lenient();
// -
use Grazulex\SemverSieve\Contracts\DialectInterface;
use Grazulex\SemverSieve\ValueObjects\ParsedVersion;
use Grazulex\SemverSieve\ValueObjects\ParsedRange;
final class CustomDialect implements DialectInterface
{
public function parseVersion(string $version, array $options): ParsedVersion
{
// Custom version parsing logic
// Handle your specific version format
}
public function parseRange(string $range, array $options): ParsedRange
{
// Custom range parsing logic
// Handle your specific constraint syntax
}
public function getName(): string
{
return 'custom';
}
public function getSupportedOperators(): array
{
return ['=', '>', '<', '>=', '<=', '~', '^'];
}
}
$sieve = new Sieve(new CustomDialect());
// Example: Custom calendar versioning dialect
final class CalVerDialect implements DialectInterface
{
public function parseVersion(string $version, array $options): ParsedVersion
{
// Parse versions like: 2023.12, 2024.01.15
if (preg_match('/^(\d{4})\.(\d{1,2})(?:\.(\d{1,2}))?$/', $version, $matches)) {
$year = (int) $matches[1];
$month = (int) $matches[2];
$day = isset($matches[3]) ? (int) $matches[3] : 1;
return new ParsedVersion($year, $month, $day, [], [], $version);
}
throw new InvalidArgumentException("Invalid CalVer format: {$version}");
}
// ... rest of implementation
}