Takip et

Composer Nedir ve Neden Kullanmalıyız?

PHP geliştiricileri için bağımlılık yönetimi, modern yazılım geliştirmenin ayrılmaz bir parçasıdır.

PHP geliştiricileri için bağımlılık yönetimi, modern yazılım geliştirmenin ayrılmaz bir parçasıdır. Composer, PHP projelerinizdeki kütüphaneleri ve bağımlılıkları yönetmek için standart bir araç haline gelmiştir. Bu rehberde, Debian 11 işletim sistemi üzerinde Composer’ı nasıl kuracağınızı, temel kullanımını ve etkili bir şekilde kullanmak için pratik ipuçlarını ayrıntılı olarak ele alacağız.

Composer Nedir ve Neden Kullanmalıyız?

Composer, PHP için bir bağımlılık yöneticisidir. Projenizin ihtiyaç duyduğu tüm kütüphaneleri (bağımlılıkları) belirtmenize olanak tanır ve bunları sizin için yönetir. Başka bir deyişle, Composer, bir projenin hangi diğer kütüphanelere bağlı olduğunu ve bunların hangi versiyonlarının gerektiğini tanımlayan bir araçtır. Bu, aşağıdaki nedenlerle son derece önemlidir:

  • Kolay Bağımlılık Yönetimi: Projenizin ihtiyaç duyduğu kütüphaneleri manuel olarak indirmek, yönetmek ve güncellemek yerine, Composer bu süreci otomatikleştirir.
  • Tutarlı Geliştirme Ortamları: Projenizi farklı geliştiricilerle veya sunucularla paylaştığınızda, Composer herkesin aynı kütüphane versiyonlarına sahip olmasını sağlar, bu da “benim makinemde çalışıyordu” sorunlarını azaltır.
  • Otomatik Yükleme (Autoloading): Composer, projenizdeki ve bağımlılıklarınızdaki sınıfları otomatik olarak yüklemek için bir otoload mekanizması oluşturur, bu da require veya include ifadelerini manuel olarak yazma ihtiyacını ortadan kaldırır.
  • Geniş Kütüphane Ekosistemi: Packagist.org, Composer için ana paket deposudur ve binlerce açık kaynak PHP kütüphanesine erişim sağlar.

Composer Kurulumu

Composer’ı Debian 11 sisteminize kurmadan önce bazı ön koşulları yerine getirmeniz gerekmektedir.

Ön Koşullar

Composer’ın çalışabilmesi için PHP ve bazı PHP uzantılarının yüklü olması gerekir. Ayrıca, indirme işlemleri için wget ve arşivleri açmak için unzip gibi temel araçlara da ihtiyacınız olacaktır.

Aşağıdaki komut ile gerekli tüm paketleri kurabilirsiniz:

sudo apt update
sudo apt install php-cli php-mbstring php-xml php-zip php-json git wget unzip -y
  • php-cli: Komut satırından PHP çalıştırmak için gereklidir. Composer bir PHP uygulaması olduğu için buna ihtiyacı vardır.
  • php-mbstring: Çok baytlı dizelerle çalışmak için.
  • php-xml: XML verileriyle çalışmak için.
  • php-zip: Zip arşivleriyle çalışmak için.
  • php-json: JSON verileriyle çalışmak için.
  • git: Bazı paketler Git depolarından indirilebilir.
  • wget: Composer kurulum betiğini indirmek için.
  • unzip: İndirilen arşivleri açmak için.

PHP sürümünüzü kontrol etmek için:

php -v

Debian 11 genellikle PHP 7.4 veya daha yeni bir sürümle gelir, bu da Composer için yeterlidir.

Composer’ı İndirme ve Kurma (Global Kurulum)

Composer’ı sisteminizde global olarak kurmak, onu herhangi bir dizinden doğrudan composer komutuyla çalıştırmanıza olanak tanır. Bu, en yaygın ve önerilen yöntemdir.

  1. Composer Yükleyicisini İndirin:

    Composer’ın resmi web sitesinden yükleyici betiğini indirin. Bu betik, Composer’ın en son kararlı sürümünü indirecek ve kuracaktır.

    cd ~
    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    

    Bu komut, composer-setup.php adında bir dosyayı ev dizininize kopyalar.

  2. Yükleyici Betiğinin Bütünlüğünü Doğrulayın:

    İndirilen betiğin bütünlüğünü ve güvenliğini doğrulamak önemlidir. Composer web sitesinde yayınlanan SHA-384 karmasını kullanarak bunu yapabilirsiniz.

    HASH="$(wget -q -O - https://composer.github.io/installer.sig)"
    php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
    

    Eğer “Installer verified” çıktısını alırsanız, devam edebilirsiniz. Aksi takdirde, betiği silin ve tekrar indirin.

  3. Composer’ı Kurun:

    Şimdi indirdiğiniz betiği kullanarak Composer’ı kurabilirsiniz. Global kurulum için composer.phar dosyasını sistem genelinde erişilebilir bir konuma taşımamız gerekiyor, genellikle /usr/local/bin.

    sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
    
    • --install-dir=/usr/local/bin: Composer’ı /usr/local/bin dizinine kurar. Bu dizin, PATH ortam değişkeninde yer aldığı için komutu her yerden çalıştırabilirsiniz.
    • --filename=composer: Yürütülebilir dosyanın adını composer olarak ayarlar.
  4. Kurulum Dosyasını Temizleyin:

    Kurulum tamamlandıktan sonra, indirdiğiniz composer-setup.php dosyasını silebilirsiniz:

    rm composer-setup.php
    

Kurulumu Doğrulama

Composer’ın başarıyla kurulduğunu doğrulamak için aşağıdaki komutu çalıştırın:

composer -V

Bu komut, Composer’ın sürüm numarasını göstermelidir (örneğin, Composer version 2.x.x YYYY-MM-DD HH:MM:SS). Eğer bu çıktıyı alırsanız, Composer sisteminize başarıyla kurulmuştur.

Composer Kullanımı

Composer’ı kurduktan sonra, PHP projelerinizde bağımlılıkları yönetmek için kullanmaya başlayabilirsiniz.

Yeni Bir Proje Başlatma

Yeni bir PHP projesi başlattığınızda, projenizin bağımlılıklarını tanımlayacak bir composer.json dosyası oluşturmanız gerekir. Bunu composer init komutuyla etkileşimli olarak yapabilirsiniz:

mkdir my_php_project
cd my_php_project
composer init

Bu komut size proje adı, açıklaması, yazar, lisans ve başlangıç bağımlılıkları gibi sorular soracaktır. Varsayılan değerleri kabul edebilir veya kendi bilgilerinizi girebilirsiniz. İşlem tamamlandığında, projenizin kök dizininde bir composer.json dosyası oluşturulacaktır.

Örnek composer.json:

{
    "name": "my-vendor/my-php-project",
    "description": "My first Composer project",
    "type": "project",
    "license": "MIT",
    "authors": [
        {
            "name": "Your Name",
            "email": "your.email@example.com"
        }
    ],
    "require": {}
}

Bağımlılık Ekleme

Projenize yeni bir kütüphane eklemek için composer require komutunu kullanırsınız. Örneğin, popüler bir günlük kütüphanesi olan Monolog’u ekleyelim:

composer require monolog/monolog

Bu komut şunları yapar:

  • monolog/monolog paketini Packagist’ten bulur.
  • En son kararlı sürümünü composer.json dosyanızdaki require bölümüne ekler.
  • Paketi ve tüm bağımlılıklarını indirir ve projenizin kök dizininde vendor/ adında bir klasöre yerleştirir.
  • composer.lock adında bir dosya oluşturur veya günceller. Bu dosya, projenizin tam olarak hangi bağımlılık versiyonlarını kullandığını kilitler.

composer.json dosyanız şimdi şöyle görünecektir:

{
    "name": "my-vendor/my-php-project",
    "description": "My first Composer project",
    "type": "project",
    "license": "MIT",
    "authors": [
        {
            "name": "Your Name",
            "email": "your.email@example.com"
        }
    ],
    "require": {
        "monolog/monolog": "^2.0"
    }
}

^2.0 ifadesi, “2.0 veya daha yeni, ancak 3.0’dan küçük” anlamına gelir (caret versiyon kısıtlaması).

Bağımlılıkları Yükleme

Bir projeyi klonladığınızda veya yeni bir geliştirme ortamı kurduğunuzda, projenin composer.json ve composer.lock dosyalarında belirtilen tüm bağımlılıkları yüklemeniz gerekir. Bunun için composer install komutunu kullanırsınız:

composer install

Bu komut, composer.lock dosyasını kontrol eder ve tam olarak orada belirtilen bağımlılık versiyonlarını indirir. Eğer composer.lock dosyası yoksa, composer.json dosyasına göre bağımlılıkları çözer, indirir ve bir composer.lock dosyası oluşturur.

Bağımlılıkları Güncelleme

Mevcut bağımlılıklarınızı daha yeni versiyonlara güncellemek için composer update komutunu kullanırsınız:

composer update

Bu komut, composer.json dosyanızdaki versiyon kısıtlamalarına uygun olarak bağımlılıkların en yeni versiyonlarını bulur, indirir ve composer.lock dosyasını günceller. Belirli bir paketi güncellemek için:

composer update monolog/monolog

Otomatik Yükleyici (Autoloader) Kullanımı

Composer’ın en güçlü özelliklerinden biri, bağımlılıklarınız ve kendi kodunuz için otomatik yükleyici sağlamasıdır. composer install veya composer update çalıştırdığınızda, vendor/autoload.php adında bir dosya oluşturulur. Bu dosyayı projenizin giriş noktasında (örneğin, index.php) bir kez dahil etmeniz yeterlidir:

pushHandler(new StreamHandler(__DIR__ . '/app.log', Logger::WARNING));

// Log mesajları
$log->warning('Bu bir uyarı mesajıdır.');
$log->error('Bu bir hata mesajıdır.');

echo "Loglar oluşturuldu. app.log dosyasını kontrol edin." . PHP_EOL;

?>

Bu kodu çalıştırdığınızda, Monolog sınıflarını doğrudan kullanabildiğinizi ve Composer’ın bunları sizin için otomatik olarak yüklediğini göreceksiniz.

Komut Dosyaları (Scripts)

Composer, composer.json dosyanızda özel komut dosyaları tanımlamanıza olanak tanır. Bu, sıkça kullandığınız komutları veya proje görevlerini otomatikleştirmek için kullanışlıdır.

{
    "name": "my-vendor/my-php-project",
    "description": "My first Composer project",
    "type": "project",
    "license": "MIT",
    "authors": [
        {
            "name": "Your Name",
            "email": "your.email@example.com"
        }
    ],
    "require": {
        "monolog/monolog": "^2.0"
    },
    "scripts": {
        "test": "phpunit",
        "post-install-cmd": [
            "php -r \"copy('.env.example', '.env');\"",
            "php artisan migrate"
        ]
    }
}

Yukarıdaki örnekte:

  • test komutunu composer test ile çalıştırabilirsiniz.
  • post-install-cmd, composer install komutundan sonra otomatik olarak çalışacak komutları tanımlar.

Composer ile İpuçları ve En İyi Uygulamalar

Composer’ı daha verimli kullanmak için bazı ipuçları ve en iyi uygulamalar:

composer.json ve composer.lock Dosyalarının Önemi

  • composer.json: Projenizin doğrudan bağımlılıklarını ve bu bağımlılıklar için kabul edilebilir versiyon kısıtlamalarını tanımlar. Bu dosya, projenizin temel gereksinimlerini belirtir.
  • composer.lock: Projenizin geliştirildiği veya dağıtıldığı anda tüm bağımlılıkların (doğrudan ve dolaylı) tam ve kesin versiyonlarını kilitler. Bu dosya, tüm geliştirme ve üretim ortamlarında aynı bağımlılık setinin kullanılmasını sağlar. composer.lock dosyasını sürüm kontrol sisteminize (Git gibi) dahil etmeyi unutmayın.

Geliştirme Bağımlılıkları (require-dev)

Test çerçeveleri (PHPUnit), kod analiz araçları (PHPStan) veya hata ayıklayıcılar gibi sadece geliştirme ortamında ihtiyaç duyulan paketleri require-dev bölümüne ekleyin:

{
    "require": {
        "monolog/monolog": "^2.0"
    },
    "require-dev": {
        "phpunit/phpunit": "^9.5"
    }
}

Üretim ortamında bu bağımlılıkları yüklemekten kaçınmak için composer install --no-dev komutunu kullanabilirsiniz. Bu, üretim ortamında daha küçük bir vendor/ dizini ve daha hızlı yüklemeler sağlar.

Composer Cache Yönetimi

Composer, indirilen paketleri önbelleğe alır. Bu, aynı paketi farklı projelerde veya aynı projeyi tekrar tekrar yüklerken indirme süresini kısaltır. Önbelleği temizlemek için:

composer clear-cache

Composer’ı Güncel Tutma

Composer kendisi de sürekli gelişmektedir. En son özelliklere ve güvenlik yamalarına sahip olmak için Composer’ı düzenli olarak güncellemeniz önerilir:

composer self-update

Güvenlik Konuları

Composer kullanırken, sadece güvenilir kaynaklardan (Packagist.org gibi) paketleri indirdiğinizden emin olun. Herhangi bir paketi projenize eklemeden önce, paketin popülaritesini, bakım durumunu ve topluluk yorumlarını kontrol etmek iyi bir uygulamadır.

Sonuç ve Sıkça Sorulan Sorular (SSS)

Bu rehberde, Debian 11 üzerinde Composer’ı kurmayı ve temel kullanımını öğrendiniz. Composer, modern PHP geliştirmenin temel taşıdır ve bağımlılık yönetimi, otomatik yükleme ve tutarlı geliştirme ortamları sağlayarak iş akışınızı büyük ölçüde iyileştirir.

Sıkça Sorulan Sorular (SSS)

1. Composer komutu bulunamıyor hatası alıyorum. Ne yapmalıyım?

Bu hata genellikle Composer’ın PATH ortam değişkeninizde olmayan bir yere kurulduğu veya hiç kurulmadığı anlamına gelir. Kurulum adımlarını tekrar kontrol edin ve sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer komutuyla global olarak kurduğunuzdan emin olun. Ayrıca, terminalinizi yeniden başlatmak da PATH değişikliklerinin etkili olmasını sağlayabilir.

2. Composer kurulumu sırasında “memory limit” hatası alıyorum. Nasıl çözebilirim?

Bazı durumlarda, PHP’nin varsayılan bellek sınırı Composer’ın büyük projeleri veya çok sayıda bağımlılığı işlemesi için yeterli olmayabilir. Bu hatayı aşmak için PHP’nin bellek sınırını geçici olarak artırabilirsiniz:

php -d memory_limit=-1 composer-setup.php

Veya kalıcı olarak php.ini dosyanızı düzenleyerek memory_limit değerini artırabilirsiniz (örneğin, memory_limit = 512M).

3. Composer’ı sadece belirli bir proje için kurabilir miyim?

Evet, Composer’ı projenizin kök dizinine yerel olarak kurabilirsiniz. Bunun için composer-setup.php betiğini çalıştırırken --install-dir parametresini kullanmadan veya hedef dizini projenizin kök dizini olarak belirterek sadece composer.phar dosyasını indirmeniz yeterlidir. Ancak, bu durumda Composer’ı çalıştırmak için her zaman php composer.phar kullanmanız gerekir.

4. Composer ile bir paketin belirli bir sürümünü nasıl yüklerim?

composer require komutunu kullanırken paket adından sonra sürüm kısıtlamasını belirtebilirsiniz:

composer require vendor/package:1.2.3  # Tam sürüm
composer require vendor/package:^1.2   # 1.2.x serisindeki en son sürüm
composer require vendor/package:~1.2.3 # 1.2.3'ten 1.3.0'a kadar olan sürüm

5. composer.lock dosyasını Git’e dahil etmeli miyim?

Evet, composer.lock dosyasını sürüm kontrol sisteminize (Git gibi) kesinlikle dahil etmelisiniz. Bu dosya, projenizin tüm bağımlılıklarının tam sürümlerini kilitler ve böylece tüm geliştirme ve üretim ortamlarında aynı bağımlılık setinin kullanılmasını sağlar. Bu, “benim makinemde çalışıyordu” gibi sorunları önler.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.