Composer Nedir ve Neden Kullanmalısınız?

Composer, PHP ekosisteminde en yaygın kullanılan bağımlılık yönetim aracıdır. Projenizde ihtiyaç duyduğunuz kütüphaneleri composer.json dosyası üzerinden tanımlayarak tek bir komutla otomatik olarak indirip kurmanızı sağlar. Bu sayede manuel git clone ya da wget işlemlerine gerek kalmaz ve sürüm çakışmaları minimuma indirilir.
Özellikle büyük ölçekli uygulamalarda, bağımlılıkların doğru sürümde ve tutarlı bir şekilde yönetilmesi, geliştirme sürecinin hızlanması ve üretim ortamında hataların önlenmesi açısından kritik bir rol oynar. Composer, autoload özelliği sayesinde sınıfların otomatik yüklenmesini de sağlayarak kodunuzu daha temiz ve okunabilir hâle getirir.
Birçok web hosting paketleri ve AMD Ryzen VDS sunucular Composer’ın sorunsuz çalışması için gerekli PHP ve extention’ları önceden kurar. Bu altyapı sayesinde, Composer’ı kurmak ve kullanmak sadece birkaç dakikayı alır.
Composer Kurulumu ve İlk Ayarlar
Composer’ı kurmak oldukça basittir. Öncelikle sunucunuzda PHP’nin 7.4 veya daha üst bir sürümünün yüklü olduğundan emin olun. Ardından aşağıdaki komutları izleyin:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"komutuyla kurulum scriptini indirin.- İndirdiğiniz scripti doğrulamak için
HASHdeğerini resmi sayfadan alın vephp -r "if (hash_file('sha384', 'composer-setup.php') === 'HASH') { echo 'OK'; } else { echo 'ERROR'; }"ile kontrol edin. - Doğrulama başarılıysa
php composer-setup.php --install-dir=/usr/local/bin --filename=composerkomutuyla global olarak kurun.
Kurulum tamamlandıktan sonra composer --version komutuyla sürüm bilgisini kontrol edin. Artık Composer hazır! İlk proje klasörünüzde composer init komutunu çalıştırarak composer.json dosyasını oluşturabilir, bağımlılıkları ekleyebilirsiniz.
Bağımlılık Tanımlama: composer.json Dosyasının Yapısı
composer.json dosyası, projenizin ihtiyaç duyduğu paketleri ve sürüm kısıtlamalarını belirten bir manifest dosyasıdır. En yaygın kullanılan anahtarlar şunlardır:
- require: Projenin çalışması için zorunlu paketler.
- require-dev: Geliştirme ve test aşamasında kullanılan paketler (ör. PHPUnit).
- autoload: PSR-4 ya da classmap ile sınıfların otomatik yüklenmesi.
- scripts: Composer çalıştırıldığında tetiklenecek özel komutlar.
Örnek bir composer.json içeriği aşağıdaki gibidir:
{
"name": "ornek/proje",
"description": "Composer ile yönetilen örnek PHP projesi",
"require": {
"php": "^8.0",
"monolog/monolog": "^2.8",
"guzzlehttp/guzzle": "^7.5"
},
"require-dev": {
"phpunit/phpunit": "^10.0"
},
"autoload": {
"psr-4": {
"Ornek\\": "src/"
}
},
"scripts": {
"post-install-cmd": [
"php artisan migrate"
]
}
}
Bu yapı sayesinde, composer install komutu çalıştırıldığında belirtilen paketler otomatik olarak indirilir ve vendor klasörüne yerleştirilir. WordPress hosting hizmetlerimizde de Composer destekli projeleriniz sorunsuz bir şekilde çalıştırılabilir.
Bağımlılık Çözümleme ve Sürüm Çakışmalarını Önleme
Composer, paketlerin bağımlılık ağaçlarını çözümleyerek en uygun sürüm kombinasyonunu bulur. Ancak büyük projelerde sürüm çakışmaları sık görülür. Bu çakışmaların önüne geçmek için aşağıdaki stratejileri uygulayın:
- Sürüm Kısıtlamalarını Dikkatli Belirleyin:
^1.2gibi caret işareti,1.2.*gibi wildcard yerine,~1.2.0gibi daha kontrollü aralıklar kullanın. - Minimum Stabilite Ayarı:
"minimum-stability": "dev"gibi düşük stabilite seviyeleri, kararsız paketlerin çekilmesini engeller. - Conflict Bölümü: Çakışan paketleri
"conflict"anahtarında belirtmek, Composer’ın bu paketleri seçmemesini sağlar.
Bu yöntemlerle, örneğin guzzlehttp/guzzle ve symfony/http-client gibi birbirinin farklı sürümlerini gerektiren paketlerin aynı anda projeye eklenmesi durumunda oluşabilecek hataları %70’e kadar azaltabilirsiniz.
Composer Komutlarıyla Projeyi Yönetme

Composer’ın sunduğu komut seti, bağımlılık yönetimini sadece kurulumla sınırlı tutmaz; aynı zamanda güncelleme, temizleme ve optimizasyon gibi birçok işlemi kapsar. En sık kullanılan komutlar şunlardır:
composer install:composer.lockdosyasına göre paketleri kurar; üretim ortamları için idealdir.composer update:composer.jsondosyasındaki sürüm kısıtlamalarına göre en yeni paketleri çeker vecomposer.lockdosyasını günceller.composer dump-autoload -o: Autoload haritasını optimize eder, büyük projelerde sınıf yükleme süresini %30’a kadar kısaltır.composer require vendor/package: Yeni bir paket ekler vecomposer.jsondosyasını otomatik günceller.composer remove vendor/package: Paketi projeden siler ve bağımlılık ağacını yeniden oluşturur.
Bu komutları doğru senaryolarda kullanmak, fiziksel sunucu (dedicated server) üzerindeki kaynak kullanımını dengeleyerek performans kaybını önler.
Performans ve Güvenlik İçin En İyi Uygulamalar
Composer sadece paketleri indirmekle kalmaz, aynı zamanda güvenlik açısından da kritik bir rol oynar. Aşağıdaki önerilerle projenizin hem performansını hem de güvenliğini artırabilirsiniz:
- composer.lock Dosyasını Versiyon Kontrolüne Ekleyin: Bu dosya, aynı paket sürümlerinin tüm ortamlar arasında tutarlı olmasını sağlar.
- Güvenilir Kaynakları Kullanın: Packagist dışındaki depoları eklerken
repositoriesbölümünde HTTPS ve imza doğrulaması yapın. - Günlük Güncelleme:
composer auditkomutuyla güvenlik açıklarını tarayın vecomposer update --with-all-dependenciesile yamalayın. - Autoload Optimizasyonu:
composer dump-autoload -okomutunu prod ortamında her dağıtım sonrası çalıştırın. - Cache Kullanımı: Composer’ın
--prefer-distve--no-devseçenekleri, gereksiz dosya indirmelerini engelleyerek kurulum süresini %40 azaltır.
Bu adımları izleyerek, örneğin SEO hosting paketlerimizdeki yüksek trafikli sitelerinizde bile Composer’ın oluşturduğu autoload dosyaları sayesinde sayfa yanıt sürelerini %25 iyileştirebilirsiniz.
Composer ile Gerçek Dünya Senaryosu: E‑Ticaret Projesi
Bir e‑ticaret platformu geliştirirken, ödeme gateway’leri, ürün kataloğu ve stok yönetimi gibi farklı paketlere ihtiyaç duyarsınız. Örneğin, stripe/stripe-php, doctrine/orm ve symfony/console paketlerini aynı projeye entegre etmek için aşağıdaki adımları izleyin:
- Proje kök dizininde
composer initile temelcomposer.jsondosyasını oluşturun. composer require stripe/stripe-php doctrine/orm symfony/consolekomutlarıyla paketleri ekleyin.- Autoload ayarlarını PSR‑4 formatında
"App\\": "src/"şeklinde tanımlayın. - Geliştirme aşamasında
composer require --dev phpunit/phpunitile test kütüphanesini ekleyin. - Üretim ortamına geçmeden
composer install --no-dev -okomutunu çalıştırarak sadece gerekli paketleri ve optimizasyonu sağlayın.
Bu süreçte, e-ticaret hosting paketlerimizdeki SSD tabanlı depolama ve yüksek I/O performansı, Composer’ın paket indirme ve autoload oluşturma işlemlerini milisaniyeler içinde tamamlamasını sağlar.
Composer ve Diğer Paket Yöneticileri Karşılaştırması
| Özellik | Composer | npm | pip |
|---|---|---|---|
| Hedef Dil | PHP | JavaScript | Python |
| Sürüm Çözümleme | Semver + Conflict | Semver + PeerDeps | PEP 440 |
| Autoload Desteği | PSR‑4/PSR‑0 | Node.js module | importlib |
| Güvenlik Tarama | composer audit | npm audit | pip-audit |
| Cache Mekanizması | Composer Cache Dir | npm cache | pip cache |
Tablodan da görüleceği gibi, Composer PHP projeleri için özelleşmiş autoload ve güvenlik tarama özellikleri sunar. Bu avantajlar, Intel i9 VDS sunucular üzerindeki büyük ölçekli uygulamalarda performans ve güvenlik dengesini sağlamada kritik rol oynar.
Sıkça Sorulan Sorular
Composer kurulumunda “hash mismatch” hatası alıyorum, ne yapmalıyım?
Bu hata, indirdiğiniz installer dosyasının bütünlüğünün bozulduğunu gösterir. Öncelikle composer-setup.php dosyasını silip tekrar indirin ve resmi Composer download sayfasındaki SHA‑384 hash değerini kontrol edin. Hash eşleşmezse indirme sırasında ağ kesintisi olmuş demektir; yeniden indirmek sorunu çözer.
“composer install” komutu çok uzun sürüyor, nasıl hızlandırabilirim?
İlk kurulumda paketlerin indirilmesi zaman alabilir. composer install --prefer-dist --no-dev seçenekleri, sadece dağıtım paketlerini çeker ve geliştirme bağımlılıklarını atlayarak süreci %30‑40 kadar kısaltır. Ayrıca composer config -g cache-dir /path/to/cache ile cache klasörünü SSD’ye yönlendirmek de faydalıdır.
Production ortamında “composer update” çalıştırmalı mıyım?
Genellikle üretim ortamında composer update çalıştırmak önerilmez. Bunun yerine composer install komutunu composer.lock dosyasıyla birlikte kullanın. Böylece test ortamında onaylanmış paket sürümleri aynı şekilde dağıtılır ve sürüm uyumsuzluğu riski ortadan kalkar.
Composer ile özel bir paket deposu ekleyebilir miyim?
Evet, composer.json dosyasına "repositories" anahtarını ekleyerek özel bir Git, VCS ya da Satis deposu tanımlayabilirsiniz. Örnek:
"repositories": [
{
"type": "vcs",
"url": "https://github.com/yourcompany/custom-package"
}
]
Bu sayede özel paketleriniz de Composer üzerinden yönetilebilir, sürüm kontrolü sağlanır.
Sonuç ve Bir Sonraki Adımınız
Composer, PHP ekosisteminde bağımlılık yönetimini standartlaştırarak geliştirme sürecinizi %40’a kadar hızlandırır ve sürüm çakışmalarının maliyetini önemli ölçüde düşürür. Bu rehberde öğrendiğiniz kurulum, composer.json yapılandırması, sürüm kontrolü ve güvenlik pratiklerini uygulayarak projelerinizde sorunsuz bir deneyim elde edebilirsiniz.
Şimdi, alan adı (domain) kaydı ve kurumsal e-posta hizmetlerimizle entegre bir ortam oluşturarak, Composer destekli uygulamanızı üretim ortamına taşıyabilirsiniz. İlk adım olarak, composer install --no-dev -o komutunu çalıştırın ve ardından iletişim sayfamızdan teknik destek talep edin. Başarıya giden yolda Composer yanınızda!