Takip et

Giriş: PHP Bağımlılık Yönetiminde Composer’ın Önemi

Giriş: PHP Bağımlılık Yönetiminde Composer’ın Önemi PHP geliştirme dünyasında modern projelerin vazgeçilmez bir aracı olan Composer, b

Giriş: PHP Bağımlılık Yönetiminde Composer’ın Önemi

PHP geliştirme dünyasında modern projelerin vazgeçilmez bir aracı olan Composer, bağımlılık yönetimini kökten değiştiren bir paket yöneticisidir. Bir PHP projesi geliştirirken, genellikle üçüncü taraf kütüphanelere ve framework’lere ihtiyaç duyarız. Bu kütüphanelerin manuel olarak indirilmesi, projenize entegre edilmesi ve güncel tutulması zaman alıcı ve hataya açık bir süreç olabilir. İşte bu noktada Composer devreye girerek, projenizin ihtiyaç duyduğu tüm bağımlılıkları tanımlamanıza, otomatik olarak indirmenize ve yönetmenize olanak tanır.

Bu rehberde, özellikle Debian 8 (JESSIE) işletim sistemi üzerinde Composer’ı nasıl kuracağınızı ve temel düzeyde nasıl kullanacağınızı adım adım anlatacağız. Debian 8 her ne kadar eski bir sürüm olsa da, hala bazı sistemlerde aktif olarak kullanılabilmektedir ve bu rehber sayesinde Composer’ı bu ortamda başarıyla çalıştırabileceksiniz. Composer sayesinde, projenizin bağımlılıklarını kolayca yönetebilir, kodunuzu daha modüler hale getirebilir ve geliştirme sürecinizi önemli ölçüde hızlandırabilirsiniz.

Composer Kurulumu Ön Gereksinimleri ve Sistemi Hazırlama

Composer’ı Debian 8 sisteminize kurmadan önce, bazı temel gereksinimleri karşılamanız ve sisteminizi hazırlamanız gerekmektedir. Composer, bir PHP uygulaması olduğu için, sunucunuzda PHP CLI (Command Line Interface) sürümünün kurulu olması zorunludur. Ayrıca, bağımlılıkları indirmek ve yönetmek için bazı ek araçlara da ihtiyacımız olacak.

Sistem Güncelleme ve Temel Paketlerin Kurulumu

Öncelikle, sisteminizin paket listesini güncelleyelim ve kurulu paketleri en son sürümlerine yükseltelim. Bu işlem, olası uyumluluk sorunlarını gidermeye yardımcı olacaktır:

sudo apt-get update
sudo apt-get upgrade

Ardından, Composer’ın düzgün çalışması için gerekli olan php-cli, unzip ve git gibi paketleri kuralım. Debian 8’de varsayılan PHP sürümü genellikle 5.6’dır ki bu Composer için yeterlidir.

sudo apt-get install php-cli unzip git -y

Bu komut, PHP’nin komut satırı arayüzünü, sıkıştırılmış dosyaları açmak için unzip aracını ve versiyon kontrol sistemi olan git‘i kuracaktır. Git, Composer’ın bazı bağımlılıkları doğrudan Git depolarından indirmesi gerektiğinde kullanılır.

PHP Ayarları (Opsiyonel ama Önemli)

Composer’ın bazen büyük projelerde veya çok sayıda bağımlılıkla çalışırken belleğe ihtiyacı olabilir. Varsayılan PHP bellek limitleri bazen yetersiz kalabilir. Bu durumu önlemek için php.ini dosyasında memory_limit değerini artırmanız faydalı olabilir.

PHP CLI için php.ini dosyasının konumu genellikle /etc/php/5.6/cli/php.ini şeklindedir (Debian 8’de varsayılan PHP sürümü 5.6 olduğu için). Bu dosyayı bir metin düzenleyici ile açın:

sudo nano /etc/php/5.6/cli/php.ini

Dosya içinde memory_limit satırını bulun ve değerini örneğin 512M veya 1G gibi daha yüksek bir değere ayarlayın:

memory_limit = 512M

Değişikliği kaydedip dosyadan çıkın.

Composer’ı Yükleme ve Global Olarak Kullanıma Hazırlama

Sistemimiz hazır olduğuna göre, Composer’ı indirip kurma işlemine geçebiliriz. Composer, kendi kurulum script’ini kullanarak kolayca kurulabilir.

Composer Kurulum Scriptini İndirme

Composer’ın resmi web sitesinden kurulum script’ini indirmek için aşağıdaki PHP komutunu kullanacağız:

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

Bu komut, composer-setup.php adında bir dosyayı bulunduğunuz dizine indirecektir.

Kurulum Scriptini Doğrulama (Güvenlik İçin Önemli)

İndirdiğiniz kurulum script’inin bütünlüğünü ve güvenliğini doğrulamak her zaman iyi bir uygulamadır. Composer’ın web sitesinde güncel SHA-384 doğrulama kodu bulunur. Bu kodu kullanarak indirdiğiniz dosyanın değiştirilmediğinden emin olabilirsiniz. Güncel doğrulama kodunu https://composer.org/download adresinden alabilirsiniz. Aşağıdaki komutta AKTÜEL_SHA384_KODU kısmını güncel kod ile değiştirmeniz gerekmektedir:

php -r "if (hash_file('SHA384', 'composer-setup.php') === 'AKTÜEL_SHA384_KODU') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Eğer “Installer verified” mesajını alırsanız, dosya güvenlidir. Aksi takdirde, scripti silip tekrar indirmeniz gerekebilir.

Composer’ı Kurma

Doğrulama işleminden sonra, kurulum script’ini çalıştırarak Composer’ı kurabiliriz:

php composer-setup.php

Bu komut, bulunduğunuz dizine composer.phar adında bir dosya oluşturacaktır. Bu dosya, Composer’ın çalıştırılabilir “PHAR” (PHP Archive) formatındaki halidir. Kurulum tamamlandıktan sonra, kurulum script’ini silebiliriz:

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

Composer’ı Global Olarak Erişilebilir Hale Getirme

Her seferinde php composer.phar yazmak yerine, sadece composer komutunu kullanarak Composer’ı çalıştırmak çok daha pratiktir. Bunun için composer.phar dosyasını sistemin PATH’inde yer alan bir dizine taşıyacağız. Genellikle /usr/local/bin dizini bu amaç için kullanılır:

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

Artık Composer, sisteminizde global olarak erişilebilir durumdadır.

Kurulumu Doğrulama

Composer’ın doğru şekilde kurulup kurulmadığını kontrol etmek için sürümünü sorgulayabiliriz:

composer --version

Eğer kurulum başarılıysa, Composer’ın sürüm numarasını gösteren bir çıktı alacaksınız:

Composer version 1.x.x 20xx-xx-xx xx:xx:xx

Bu çıktı, Composer’ın Debian 8 sisteminizde başarıyla çalıştığı anlamına gelir.

Composer Kullanımı Temelleri: Proje Oluşturma ve Bağımlılık Yönetimi

Composer başarıyla kurulduktan sonra, onu projelerinizde kullanmaya başlayabiliriz. Bir PHP projesinde Composer’ı kullanmanın temel adımları, yeni bir proje başlatmak, bağımlılık eklemek ve bu bağımlılıkları yönetmektir.

Yeni Bir Composer Projesi Başlatma

Yeni bir PHP projesi için Composer’ı kullanmaya başlamanın en yaygın yolu, projenin kök dizininde composer init komutunu çalıştırmaktır. Bu komut, size birkaç soru sorarak projenizin temel bilgilerini ve bağımlılıklarını tanımlayan composer.json dosyasını oluşturmanıza yardımcı olur.

Öncelikle, yeni bir proje dizini oluşturalım ve içine girelim:

mkdir my_php_project
cd my_php_project

Şimdi composer init komutunu çalıştıralım:

composer init

Composer size aşağıdaki gibi sorular soracaktır:

* Package name (/) [my_php_project/my_php_project]: (Örn: my-vendor/my-project)
* Description []: (Projenizin kısa açıklaması)
* Author [Your Name ]: (Yazar bilgileri)
* Minimum Stability []: (Bağımlılıkların minimum kararlılık seviyesi, örn: dev, beta, RC, stable. Varsayılanı boş bırakmak stable anlamına gelir.)
* License []: (Projenizin lisansı, örn: MIT)
* Define your dependencies.: (Bu aşamada bağımlılık eklemeyi atlayabiliriz, daha sonra manuel olarak ekleyeceğiz.)

Soruları yanıtladıktan sonra, Composer size oluşturacağı composer.json dosyasının bir önizlemesini gösterecek ve onayınızı isteyecektir. Onayladığınızda, projenizin kök dizininde composer.json dosyası oluşacaktır. Örnek bir composer.json içeriği şöyle görünebilir:

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

Bağımlılık Ekleme

composer.json dosyasını oluşturduktan sonra, projenize bağımlılıklar ekleyebilirsiniz. Bağımlılık eklemenin en kolay yolu composer require komutunu kullanmaktır. Örneğin, popüler bir günlükleme kütüphanesi olan Monolog’u projemize ekleyelim:

composer require monolog/monolog

Bu komut, Monolog’un en son kararlı sürümünü (veya belirtilen bir sürümü) composer.json dosyanızdaki require bölümüne ekleyecek, ardından kütüphaneyi ve bağımlılıklarını indirip vendor dizinine yerleştirecektir. Ayrıca, bağımlılıkların tam sürümlerini kilitleyen composer.lock dosyasını da oluşturacaktır.

Komutun çıktısı aşağıdaki gibi olacaktır:

Using version ^2.x for monolog/monolog
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 2 installs, 0 updates, 0 removals
  - Installing psr/log (1.1.4): Loading from cache
  - Installing monolog/monolog (2.2.0): Loading from cache
Writing lock file
Generating autoload files

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

{
    "name": "my-vendor/my-project",
    "description": "My first Composer project on Debian 8.",
    "type": "project",
    "license": "MIT",
    "authors": [
        {
            "name": "Your Name",
            "email": "you@example.com"
        }
    ],
    "require": {
        "monolog/monolog": "^2.2"
    }
}

Ve projenizin kök dizininde vendor adında yeni bir klasör ile composer.lock dosyası oluşmuş olacaktır.

Bağımlılıkları Yükleme ve Güncelleme

* composer install: Bir projeyi Git gibi bir versiyon kontrol sisteminden klonladığınızda veya başka bir geliştiriciden aldığınızda, composer.json ve composer.lock dosyaları zaten var olacaktır. Bu durumda, composer install komutunu kullanarak projenin ihtiyaç duyduğu tüm bağımlılıkları composer.lock dosyasında belirtilen kesin sürümlerle yükleyebilirsiniz. Bu, tüm geliştiricilerin aynı bağımlılık sürümlerini kullanmasını sağlar.

composer install

* composer update: Eğer composer.json dosyanızdaki bağımlılık tanımlarını değiştirdiyseniz (örneğin, bir paketin sürüm kısıtlamasını güncellediyseniz) veya bağımlılıkların yeni kararlı sürümlerini almak istiyorsanız, composer update komutunu kullanırsınız. Bu komut, composer.json dosyasındaki kısıtlamalara uygun en yeni sürümleri indirir ve composer.lock dosyasını buna göre günceller.

composer update

Otomatik Yükleme (Autoloading)

Composer’ın en güçlü özelliklerinden biri, bağımlılıklarınızı ve hatta kendi proje sınıflarınızı otomatik olarak yükleyebilmesidir. composer install veya composer update çalıştırdığınızda, Composer otomatik olarak vendor/autoload.php adında bir dosya oluşturur. Bu dosyayı projenizin giriş noktasında (index.php gibi) dahil ederek, require veya include ifadeleri kullanmadan tüm Composer bağımlılıklarını ve kendi PSR-4 uyumlu sınıflarınızı kullanabilirsiniz.

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

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

echo "Log dosyasına mesajlar yazıldı: app.log\n";

?>

Bu index.php dosyasını çalıştırdığınızda (php index.php), Monolog kütüphanesini sorunsuz bir şekilde kullanabildiğinizi göreceksiniz.

Kendi sınıflarınızı Composer’ın otomatik yükleyicisine eklemek için composer.json dosyanızdaki autoload bölümünü kullanabilirsiniz. Örneğin, src dizinindeki sınıflarınızı MyApp namespace’i altında yüklemek için:

{
    "name": "my-vendor/my-project",
    "description": "My first Composer project on Debian 8.",
    "type": "project",
    "license": "MIT",
    "authors": [
        {
            "name": "Your Name",
            "email": "you@example.com"
        }
    ],
    "require": {
        "monolog/monolog": "^2.2"
    },
    "autoload": {
        "psr-4": {
            "MyApp\\": "src/"
        }
    }
}

Bu değişikliği yaptıktan sonra composer dump-autoload komutunu çalıştırmanız gerekir. Bu komut, otomatik yükleme dosyalarını yeniden oluşturur.

Pratik İpuçları ve En İyi Uygulamalar

Composer’ı daha verimli ve güvenli kullanmak için bazı pratik ipuçları ve en iyi uygulamalar bulunmaktadır.

Composer’ı Güncel Tutma

Composer sürekli olarak geliştirilmektedir. Yeni özellikler, hata düzeltmeleri ve güvenlik iyileştirmeleri almak için Composer’ı düzenli olarak güncellemek önemlidir.

composer self-update

Bu komut, Composer’ın kendisini en son kararlı sürüme güncelleyecektir.

Performans İpuçları

Büyük projelerde Composer komutları bazen yavaş çalışabilir. Performansı artırmak için bazı flag’ler kullanabilirsiniz:

* --no-dev: Üretim ortamında geliştirme bağımlılıklarını (require-dev bölümündeki paketler) yüklemez. Bu, üretim sunucularında daha az dosya indirilmesini ve daha hızlı kurulumu sağlar.

composer install --no-dev

* --optimize-autoloader veya -o: Otomatik yükleme dosyalarını daha optimize bir şekilde oluşturur. Özellikle üretim ortamında, her sınıfın manuel olarak bulunması yerine, sınıf haritasının önceden oluşturulması performansı artırır.

composer install --optimize-autoloader

Bu iki flag’i bir arada kullanmak yaygın bir üretim dağıtım stratejisidir:

composer install --no-dev --optimize-autoloader

Ortam Değişkenleri

Composer’ın davranışını çeşitli ortam değişkenleri ile özelleştirebilirsiniz:

* COMPOSER_HOME: Composer’ın global yapılandırma ve önbellek dosyalarını sakladığı dizini belirtir. Varsayılan olarak genellikle ~/.composer‘dır.
* COMPOSER_MEMORY_LIMIT: Composer’ın kullanabileceği maksimum bellek miktarını belirler. Örneğin, COMPOSER_MEMORY_LIMIT=2G composer install ile komut başına bellek limitini artırabilirsiniz.

vendor Klasörü ve Versiyon Kontrol Sistemi

vendor klasörü, Composer tarafından indirilen tüm bağımlılıkları içerir. Bu klasörü versiyon kontrol sisteminize (örneğin Git’e) eklememeniz şiddetle tavsiye edilir. Bunun yerine, sadece composer.json ve composer.lock dosyalarını commit edin. Projenizi klonlayan herkes composer install komutunu çalıştırarak aynı bağımlılıkları yükleyebilir. Bu yaklaşım, depo boyutunu küçük tutar ve bağımlılık çakışmalarını önler. .gitignore dosyanıza aşağıdaki satırı eklemeyi unutmayın:

/vendor/

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

Bu rehberde, Debian 8 işletim sistemi üzerinde Composer’ı nasıl kuracağınızı ve temel düzeyde nasıl kullanacağınızı adım adım öğrendiniz. Composer, PHP geliştiricileri için bağımlılık yönetimini basitleştiren ve modern PHP projelerinin temelini oluşturan güçlü bir araçtır. Doğru kurulum ve kullanım pratikleriyle, projelerinizin bağımlılıklarını etkin bir şekilde yönetebilir, geliştirme sürecinizi hızlandırabilir ve daha kararlı uygulamalar oluşturabilirsiniz.

Sıkça Sorulan Sorular (SSS)

1. Composer neden “yavaş” çalışıyor gibi görünüyor?
Composer, bağımlılıkları çözmek ve indirmek için Packagist.org gibi depolarla iletişim kurar. Çok sayıda bağımlılık veya yavaş bir internet bağlantısı bu süreci uzatabilir. Performans için --no-dev ve --optimize-autoloader flag’lerini kullanabilir, ayrıca composer self-update ile Composer’ı güncel tutabilirsiniz. memory_limit değerini artırmak da yardımcı olabilir.

2. composer.lock dosyası ne işe yarar?
composer.lock dosyası, composer install komutu çalıştırıldığında indirilen tüm bağımlılıkların ve alt bağımlılıkların tam sürümlerini kaydeder. Bu, projenin farklı ortamlarda (geliştirme, test, üretim) veya farklı geliştiriciler arasında her zaman aynı bağımlılık sürümlerini kullanmasını garanti eder. Bu dosya, composer.json ile birlikte versiyon kontrol sisteminize dahil edilmelidir.

3. Composer ile PHP versiyonu nasıl yönetilir?
Composer, PHP’nin kendisini yönetmez, ancak projenizin gerektirdiği minimum PHP sürümünü composer.json dosyasında config.platform.php veya require.php alanlarında belirtebilirsiniz. Composer, bu gereksinimi karşılamayan bir PHP sürümüyle çalıştırıldığında sizi uyaracaktır. Farklı PHP sürümleri arasında geçiş yapmak için phpbrew veya phpenv gibi araçlar kullanabilirsiniz.

4. vendor klasörü neden Git’e eklenmemeli?
vendor klasörü, indirilen tüm kütüphaneleri ve bağımlılıkları içerir. Bu klasörü Git’e eklemek, deponuzun boyutunu gereksiz yere artırır, çakışmalara yol açabilir ve bağımlılıkların güncellenmesini zorlaştırır. composer.json ve composer.lock dosyaları, projenin bağımlılıklarını tanımlamak için yeterlidir. Herkes composer install komutuyla bağımlılıkları kendi makinesine indirebilir.

5. Composer global olarak mı, yoksa proje bazında mı kurulmalı?
Bu rehberde global kurulumu tercih ettik çünkü çoğu durumda daha pratiktir. Ancak, bazı projeler farklı Composer sürümlerine ihtiyaç duyabilir veya global kurulum yapma izniniz olmayabilir. Bu durumlarda, composer.phar dosyasını doğrudan proje dizinine indirerek proje bazında da kullanabilirsiniz (php composer.phar install gibi). Çoğu geliştirici için global kurulum yeterli ve tavsiye edilen yöntemdir.

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.