Takip et

Composer Nedir ve Neden Önemlidir?

Composer, PHP projeleri için bağımlılık yönetimini kökten değiştiren güçlü bir araçtır. Projelerinizin ihtiyaç duyduğu kütüphanele

Composer, PHP projeleri için bağımlılık yönetimini kökten değiştiren güçlü bir araçtır. Projelerinizin ihtiyaç duyduğu kütüphaneleri ve paketleri kolayca bildirmenize, kurmanıza ve güncellemenize olanak tanır. Bu rehberde, Ubuntu 20.04 işletim sisteminde Composer’ı nasıl kuracağınızı ve temel kullanımını öğreneceksiniz.

Composer Nedir ve Neden Önemlidir?

Composer, PHP için bir bağımlılık yöneticisidir. Projenizin çalışması için gerekli olan tüm kütüphaneleri (bağımlılıkları) belirtmenizi ve bu kütüphanelerin yönetilmesini sağlar. Bir projenin bağımlılıklarını manuel olarak yönetmek karmaşık ve hata yapmaya açık bir süreç olabilir. Composer bu süreci otomatikleştirerek geliştiricilerin işini büyük ölçüde kolaylaştırır.

Composer’ın sağladığı temel faydalar şunlardır:

  • Bağımlılık Yönetimi: Projenizin ihtiyaç duyduğu tüm kütüphaneleri (örneğin, bir veritabanı soyutlama katmanı, bir test çerçevesi veya bir tarih kütüphanesi) tek bir yerden tanımlamanızı ve yönetmenizi sağlar.
  • Kolay Kurulum: Belirtilen tüm bağımlılıkları ve bunların kendi bağımlılıklarını otomatik olarak indirip kurar.
  • Otomatik Yükleme (Autoloading): Bağımlılık olarak eklediğiniz sınıfları projenizde kullanmak için manuel require veya include ifadeleri yazmanıza gerek kalmaz. Composer, PSR-4 gibi standartlara uygun otomatik yükleme mekanizmaları oluşturur.
  • Sürüm Kontrolü: Kütüphanelerin belirli sürümlerini veya sürüm aralıklarını kullanmanıza olanak tanır, böylece projenizin beklenmeyen değişikliklerden etkilenmesini önler.
  • Geliştirme Sürecini Hızlandırma: Hazır kütüphaneler kullanarak tekerleği yeniden icat etmek yerine, uygulamanızın temel mantığına odaklanmanızı sağlar.

Ubuntu 20.04, PHP geliştirme için yaygın olarak kullanılan bir platformdur ve Composer, bu ortamda PHP projeleri geliştiren herkes için vazgeçilmez bir araçtır.

Composer Kurulumu Öncesi Hazırlıklar

Composer’ı sisteminize kurmadan önce, bazı temel yazılımların kurulu olduğundan emin olmanız gerekir. Bu adımlar, Composer’ın doğru şekilde çalışması için gerekli ortamı hazırlar.

PHP ve Gerekli Uzantıların Kurulumu

Composer bir PHP uygulaması olduğu için, sisteminizde PHP’nin kurulu olması ve Composer’ın ihtiyaç duyduğu bazı PHP uzantılarına sahip olması gerekir. Ubuntu 20.04’te PHP varsayılan olarak yüklü gelmeyebilir veya gerekli uzantılar eksik olabilir.

İlk olarak, sisteminizin paket listesini güncelleyelim:

sudo apt update

Şimdi PHP CLI (Komut Satırı Arayüzü) ve Composer’ın genellikle ihtiyaç duyduğu temel uzantıları kuralım. Ubuntu 20.04 için PHP 7.4 varsayılan olarak mevcuttur. Composer genellikle PHP 7.2 veya daha yüksek bir sürüm gerektirir.

sudo apt install php-cli php-zip php-json php-mbstring php-curl php-xml php-dom -y
  • php-cli: PHP komut satırı arayüzünü sağlar.
  • php-zip: Zip dosyalarını işlemek için gereklidir.
  • php-json: JSON verilerini işlemek için gereklidir.
  • php-mbstring: Çok baytlı dizeleri işlemek için gereklidir.
  • php-curl: HTTP istekleri yapmak için kullanılır (Composer, paketleri indirmek için bunu kullanır).
  • php-xml ve php-dom: XML ve DOM manipülasyonları için bazı paketler tarafından gerekebilir.

PHP sürümünüzü kontrol ederek kurulumun başarılı olduğunu doğrulayabilirsiniz:

php -v

Çıktı olarak PHP sürümünüzü görmelisiniz, örneğin:

PHP 7.4.3 (cli) (built: May 26 2020 12:24:22) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c) Zend Technologies

Gerekli Yardımcı Araçların Kurulumu

Composer kurulumu için wget ve unzip gibi bazı temel araçlara ihtiyacımız olacak. Çoğu Ubuntu sisteminde bunlar zaten yüklü olabilir, ancak emin olmak için kurabiliriz:

sudo apt install wget unzip -y
  • wget: İnternetten dosya indirmek için kullanılır.
  • unzip: Sıkıştırılmış dosyaları açmak için kullanılır.

Composer’ı Yükleme

Tüm ön hazırlıkları tamamladığımıza göre, şimdi Composer’ı sistemimize yüklemeye başlayabiliriz. Resmi ve güvenli yöntem, Composer’ın kendi kurulum betiğini kullanmaktır.

1. Composer Kurulum Dosyasını İndirme

Composer’ın resmi web sitesinden kurulum betiğini indireceğiz. Bu betik, Composer’ın kendisini (composer.phar) indirecektir.

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

Bu komut, composer-setup.php adında küçük bir PHP dosyasını mevcut dizininize indirir.

2. Kurulum Dosyasını Doğrulama (Güvenlik İçin Önemli!)

İndirdiğiniz kurulum dosyasının bütünlüğünü ve güvenliğini doğrulamak çok önemlidir. Composer, bunu SHA-384 karma değeri ile yapmanızı önerir. Bu, indirilen dosyanın yolculuk sırasında değiştirilmediğinden veya bozulmadığından emin olmanızı sağlar.

Composer’ın resmi web sitesinden (https://getcomposer.org/download/) güncel SHA-384 karma değerini almanız gerekmektedir. Aşağıdaki komutta yer alan karma değeri güncel olmayabilir, bu nedenle lütfen resmi siteden en son değeri kontrol edin.

php -r "if (hash_file('sha384', 'composer-setup.php') === 'HASH_DEĞERİNİ_BURAYA_YAPIŞTIRIN') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Önemli Not: Yukarıdaki HASH_DEĞERİNİ_BURAYA_YAPIŞTIRIN kısmını, Composer İndirme Sayfası‘ndan alacağınız güncel SHA-384 karma değeri ile değiştirmeniz gerekmektedir.

Eğer doğrulama başarılı olursa, “Installer verified” mesajını görmelisiniz. Aksi takdirde, dosya bozuk demektir ve silinir. Bu durumda indirme işlemini tekrarlamanız gerekebilir.

3. Composer’ı Kurma

Doğrulama başarılı olduktan sonra, kurulum betiğini çalıştırarak Composer’ı kurabiliriz:

php composer-setup.php

Bu komut, geçerli dizininize composer.phar adında bir dosya indirir. Bu dosya, Composer’ın kendisidir.

4. Kurulum Dosyasını Temizleme

Composer’ın kendisi indirildikten sonra, kurulum betiğine artık ihtiyacımız kalmaz:

php -r "unlink('composer-setup.php');"

5. Composer’ı Global Olarak Erişilebilir Hale Getirme

Şu anda composer.phar yalnızca mevcut dizininizde çalışır. Her yerden erişebilmek için, onu sistem PATH’inizdeki bir dizine taşımamız gerekir. Genellikle /usr/local/bin tercih edilir.

sudo mv composer.phar /usr/local/bin/composer

Bu komut, composer.phar dosyasını /usr/local/bin/composer olarak yeniden adlandırır ve taşır. Artık sadece composer yazarak çalıştırabileceksiniz.

6. Çalıştırma İzinlerini Ayarlama

Taşıdığınız dosyaya çalıştırma izni vermeniz gerekir:

sudo chmod +x /usr/local/bin/composer

7. Kurulumu Doğrulama

Her şeyin yolunda gidip gitmediğini kontrol etmek için Composer sürümünü sorgulayabilirsiniz:

composer --version

Başarılı bir kurulumun ardından, Composer sürüm numarasını görmelisiniz:

Composer version 2.x.x 202x-xx-xx xx:xx:xx

Composer’ı Kullanma

Composer başarıyla kurulduktan sonra, PHP projelerinizde bağımlılıkları yönetmeye başlayabilirsiniz. İşte bazı temel Composer komutları ve kullanım senaryoları:

Yeni Bir Proje Başlatma (composer init)

Yeni bir PHP projesi başlattığınızda, Composer’ı projenize entegre etmek için composer init komutunu kullanabilirsiniz. Bu komut, projenizin bağımlılıklarını tanımlayan composer.json dosyasını etkileşimli olarak oluşturmanıza yardımcı olur.

mkdir my_php_project
cd my_php_project
composer init

Komutu çalıştırdıktan sonra size proje adı, açıklaması, yazar, kararlı sürüm minimumu gibi sorular sorulacaktır. Çoğu soruyu varsayılan değerlerle geçebilir veya kendi bilgilerinizi girebilirsiniz. Bu işlem sonucunda, projenizin kök dizininde bir composer.json dosyası oluşacaktır.

{
    "name": "vendor/my_php_project",
    "description": "My first PHP project with Composer",
    "type": "project",
    "license": "MIT",
    "authors": [
        {
            "name": "Your Name",
            "email": "your@email.com"
        }
    ],
    "require": {}
}

Bağımlılık Ekleme (composer require)

Projenize yeni bir kütüphane eklemek istediğinizde composer require komutunu kullanırsınız. Örneğin, popüler Monolog loglama kütüphanesini ekleyelim:

composer require monolog/monolog

Bu komut şunları yapar:

  • monolog/monolog paketini ve onun tüm bağımlılıklarını indirir.
  • Projenizin kök dizininde vendor/ adında bir dizin oluşturur ve indirilen tüm kütüphaneleri buraya yerleştirir.
  • composer.json dosyasını günceller, böylece Monolog bağımlılıklar listesine eklenir.
  • composer.lock dosyasını oluşturur veya günceller. Bu dosya, indirilen her paketin tam sürümünü ve karma değerini kilitler, böylece diğer geliştiriciler veya dağıtım ortamları da tam olarak aynı paket sürümlerini kurar.

Bağımlılıkları Yükleme (composer install)

Bir projeyi (örneğin Git’ten klonladıktan sonra) ilk kez kurduğunuzda veya composer.json dosyasında tanımlı bağımlılıkları yüklemek istediğinizde composer install komutunu kullanırsınız.

composer install

Bu komut, composer.lock dosyasını kontrol eder ve bu dosyada belirtilen tam sürümleri indirip kurar. 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 (composer update)

composer.json dosyasında belirtilen sürüm kısıtlamalarına uygun olarak bağımlılıkları en son kararlı sürümlerine güncellemek için composer update komutunu kullanırsınız.

composer update

Belirli bir paketi güncellemek isterseniz:

composer update monolog/monolog

Bu komut, composer.json dosyasını dikkate alarak paketlerin yeni sürümlerini indirir ve composer.lock dosyasını günceller.

Otomatik Yükleme (Autoloading)

Composer’ın en güçlü özelliklerinden biri otomatik yükleme yeteneğidir. composer install veya composer update komutlarını çalıştırdığınızda, Composer otomatik olarak vendor/autoload.php adında bir dosya oluşturur. Bu dosyayı projenizin başlangıç noktasında dahil ederek, Composer tarafından yönetilen tüm kütüphanelerdeki sınıfları manuel olarak require etmeden kullanabilirsiniz.

// index.php veya uygulamanızın ana giriş noktası
require __DIR__ . '/vendor/autoload.php';

// Artık Monolog gibi Composer ile yüklenen kütüphaneleri kullanabilirsiniz
use Monolog\Logger;
use Monolog\Handler\StreamHandler;

$log = new Logger('my_app');
$log->pushHandler(new StreamHandler('app.log', Logger::WARNING));

$log->warning('Bu bir uyarı mesajıdır!');
$log->error('Bu bir hata mesajıdır!');

Kendi sınıflarınızı da otomatik yüklemeye dahil etmek için composer.json dosyanızın autoload bölümünü düzenleyebilirsiniz. Örneğin, src/ dizinindeki tüm sınıflarınızı PSR-4 standardına göre yüklemek için:

{
    "name": "vendor/my_php_project",
    "description": "My first PHP project with Composer",
    "type": "project",
    "license": "MIT",
    "authors": [
        {
            "name": "Your Name",
            "email": "your@email.com"
        }
    ],
    "require": {
        "monolog/monolog": "^2.0"
    },
    "autoload": {
        "psr-4": {
            "MyApp\\": "src/"
        }
    }
}

Bu değişikliği yaptıktan sonra, otomatik yükleme yapılandırmasını yeniden oluşturmak için aşağıdaki komutu çalıştırmanız gerekir:

composer dump-autoload

Artık src/ dizininde MyApp namespace’i altındaki sınıflarınızı kullanabilirsiniz.

Diğer Faydalı Komutlar

  • composer self-update: Composer’ın kendisini en son sürüme günceller.
  • composer remove vendor/package: Bir paketi bağımlılıklarınızdan kaldırır ve composer.json ile composer.lock dosyalarını günceller.
  • composer validate: composer.json dosyanızın sözdizimi ve yapısal olarak doğru olup olmadığını kontrol eder.
  • composer clear-cache: Composer’ın indirdiği paketlerin önbelleğini temizler.

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

Composer, modern PHP geliştirme dünyasının vazgeçilmez bir parçasıdır. Bu rehberde, Ubuntu 20.04 üzerinde Composer’ı adım adım nasıl kuracağınızı ve temel komutlarını kullanarak projelerinizde bağımlılıkları nasıl yöneteceğinizi öğrendiniz. Composer sayesinde, PHP projelerinizde kütüphane yönetimini kolaylaştırabilir, geliştirme süreçlerinizi hızlandırabilir ve daha düzenli, sürdürülebilir uygulamalar oluşturabilirsiniz.

Sıkça Sorulan Sorular (SSS)

1. Composer’ı neden global olarak kurmalıyım?

Composer’ı global olarak kurmak (yani /usr/local/bin/composer konumuna taşımak), onu sisteminizdeki herhangi bir dizinden doğrudan composer komutuyla çalıştırmanıza olanak tanır. Aksi takdirde, her projede php composer.phar şeklinde çalıştırmanız gerekirdi, bu da daha az pratik olurdu.

2. composer.json ve composer.lock arasındaki fark nedir?

  • composer.json: Projenizin bağımlılıklarını ve diğer meta verilerini tanımlayan ana dosyadır. Hangi paketlere ihtiyaç duyduğunuzu ve hangi sürüm kısıtlamalarını (örneğin, ^1.0) istediğinizi belirtir. Bu dosya, bir projenin “istek listesi” gibidir.
  • composer.lock: composer install veya composer update çalıştırıldığında otomatik olarak oluşturulur. Bu dosya, bağımlılıkların tam olarak hangi sürümlerinin (ve bunların karma değerlerinin) yüklendiğini kaydeder. Bu, farklı geliştiricilerin veya dağıtım ortamlarının tam olarak aynı bağımlılık setini kurmasını garanti eder. Bu dosya, bir projenin “gerçekleşen bağımlılık durumu” gibidir ve Git gibi sürüm kontrol sistemlerine dahil edilmelidir.

3. Composer’ı nasıl güncellerim?

Composer’ın kendisini en son sürüme güncellemek için aşağıdaki komutu kullanabilirsiniz:

composer self-update

4. Bir Composer paketini nasıl kaldırırım?

Bir paketi projenizden kaldırmak için composer remove komutunu kullanabilirsiniz:

composer remove vendor/package-name

Örneğin, Monolog’u kaldırmak için: composer remove monolog/monolog.

5. PHP sürümüm eski, Composer çalışmıyor. Ne yapmalıyım?

Composer’ın çoğu modern sürümü en az PHP 7.2 veya daha yüksek bir sürüm gerektirir. Eğer PHP sürümünüz eskiyse, Composer’ı kullanamayabilirsiniz. Çözüm, PHP sürümünüzü yükseltmektir. Ubuntu 20.04 için PHP 7.4 varsayılan olarak gelir. Eğer daha yeni bir PHP sürümüne (örneğin PHP 8.x) ihtiyacınız varsa, PPA (Personal Package Archive) gibi üçüncü taraf depoları kullanmanız gerekebilir.

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.