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
requireveyaincludeifadelerini 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.
-
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.phpadında bir dosyayı ev dizininize kopyalar. -
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.
-
Composer’ı Kurun:
Şimdi indirdiğiniz betiği kullanarak Composer’ı kurabilirsiniz. Global kurulum için
composer.phardosyası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/bindizinine 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ıcomposerolarak ayarlar.
-
Kurulum Dosyasını Temizleyin:
Kurulum tamamlandıktan sonra, indirdiğiniz
composer-setup.phpdosyası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/monologpaketini Packagist’ten bulur.- En son kararlı sürümünü
composer.jsondosyanızdakirequirebö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.lockadı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:
testkomutunucomposer testile çalıştırabilirsiniz.post-install-cmd,composer installkomutundan 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.lockdosyası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.
