CodeBlanks Logo Icon CodeBlanks

require ile paket ekleme

PHP kursu · İleri seviye · Ders 36/92

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

  1. ^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.

  2. 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";
    
  3. 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

İleri seviye bölümündeki tüm dersler