require ile paket ekleme
composer require ile yeni paket eklemeyi ve sürüm kısıtlarını öğrenirsin.
composer require ve sürüm kısıtları
composer require monolog/monolog komutu yeni bir paketi projene ekler. Paket adından sonra sürüm kısıtı yazılır; örneğin composer require monolog/monolog:^3.5 komutu 3.5 ve üzeri 3.x sürümlerini kurar.
^ işaretine caret, ~ işaretine tilde denir. Bu iki işaret en sık kullanılan sürüm kısıtlarıdır ve paketin hangi alt sürümlerinin kabul edileceğini belirler.
Tilde ~ kısıtı
Tilde ~ işareti caret'e benzer ama daha dar bir aralık verir. ~1.2 kısıtı 1.2 ve üzeri 1.x sürümlerini kabul eder; tıpkı ^1.2 gibi. Fark, yama sürümü seviyesinde ortaya çıkar.
~1.2.3 yalnızca 1.2.x sürümlerini kabul eder; ^1.2.3 ise tüm 1.x.x sürümlerini kabul eder. Yani tilde yama sürümünü sabitler, caret ana sürümü sabit tutar.
Uygulama Sürüm kısıdı çözümleyici
Bir parseConstraint(string $c): string fonksiyonu yaz. Kısıt ^ ile başlıyorsa "caret", ~ ile başlıyorsa "tilde", * ise "any", aksi halde "exact" döndürsün. Dört kısıtı (^3.5, ~7.8, *, 3.0.0) sırayla çağırıp monolog/monolog: ^3.5 -> caret biçiminde yazdır.
Örnek çözümü göster
string { if (strpos($c, "^") === 0) { return "caret"; } if (strpos($c, "~") === 0) { return "tilde"; } if ($c === "*") { return "any"; } return "exact"; } yaz. $deps = ["monolog/monolog" => "^3.5", "guzzlehttp/guzzle" => "~7.8", "symfony/console" => "*", "psr/log" => "3.0.0"]; tanımla. foreach ($deps as $pkg => $ver) { echo $pkg . ": " . $ver . " -> " . parseConstraint($ver) . "\n"; } ile yazdır.
Örnek çözüm:
<?php
function parseConstraint(string $c): string {
if (strpos($c, "^") === 0) { return "caret"; }
if (strpos($c, "~") === 0) { return "tilde"; }
if ($c === "*") { return "any"; }
return "exact";
}
$deps = ["monolog/monolog" => "^3.5", "guzzlehttp/guzzle" => "~7.8", "symfony/console" => "*", "psr/log" => "3.0.0"];
foreach ($deps as $pkg => $ver) {
echo $pkg . ": " . $ver . " -> " . parseConstraint($ver) . "\n";
}
Kendini test et
-
^3.5 sürüm kısıtı neyi kabul eder?
- Yalnızca 3.5.0
- 3.5 ve üzeri 3.x
- 4.x ve üzeri
- 3.5'ten eski tüm sürümler
Cevabı göster
3.5 ve üzeri 3.x — Doğru. ^3.5 caret; 3.5 ve üzeri 3.x sürümlerini kabul eder.
-
Caret kısıtını tamamla
<?php // Sürüm kısıtı: 7.8 ve üzeri 7.x $cfg = ["ver" => "____7.8"]; echo $cfg["ver"] . "\n";Cevabı göster
<?php // Sürüm kısıtı: 7.8 ve üzeri 7.x $cfg = ["ver" => "^7.8"]; echo $cfg["ver"] . "\n"; -
Sürüm kısıtlarını eşleştir
- ^1.2.3
- 1.x.x kabul eder
- ~1.2.3
- 1.2.x kabul eder
- 1.2.3
- Yalnızca 1.2.3
- *
- Her sürüm