ServBay ile Gelen Composer ile PHP Proje Yönetimi Nasıl Yapılır?
ServBay, güçlü bir yerel web geliştirme ortamı olarak, geliştiricilere önceden kurulu Composer sunar ve bu sayede PHP projelerinde bağımlılık yönetimini büyük ölçüde kolaylaştırır. Composer, modern PHP projelerinde vazgeçilmez bir bağımlılık yöneticisidir; üçüncü parti kütüphanelerin kolayca entegre edilmesini ve yönetilmesini sağlar, karmaşık bağımlılıkları otomatik olarak çözer ve kullanışlı otomatik yükleme (autoload) özelliği sunar. ServBay ile ayrıca ekstra kurulum ya da yapılandırmaya gerek kalmadan Composer’ı doğrudan kullanabilir, PHP geliştirme iş akışınızı hızlandırabilirsiniz.
Composer Nedir?
Composer, PHP projeleri için bağımlılık yönetimi sağlayan bir araçtır. Geliştiricilerin projelerinde ihtiyaç duydukları harici kütüphaneleri (genellikle “paket” olarak anılır) tanımlamalarına ve bu paketleri otomatik olarak kurup güncellemelerine olanak tanır. Composer yalnızca PHP kütüphanelerini değil, çerçeve, bileşen, eklenti gibi diğer paket türlerini de yönetebilir.
Temel Özellikleri
- Bağımlılık Yönetimi: Composer projede ihtiyaç duyulan kütüphanelerin sürüm uyumluluğunu sağlamak için bağımlılıkları otomatik olarak işler ve olası sürüm çatışmalarını çözer.
- Otomatik Yükleme: Composer ile, kurulan paketlerin sınıf dosyalarını elle
include
veyarequire
etmek zorunda kalmadan, üretilen tek bir otomatik yükleme dosyası üzerinden kullanabilirsiniz. - Sürüm Kontrolü: Geliştiriciler
composer.json
dosyasında bağımlılıkların sürüm aralığını belirtirler. Composer bu kısıtlamalara uyan uygun sürümleri indirir vecomposer.lock
dosyası ile yüklü paket sürümünü sabitler. Böylece takım üyeleri ve farklı ortamlar aynı bağımlılık sürümlerini kullanır. - Paket Yönetimi: Composer, Packagist adlı merkezi depodan paket arar ve indirir. Geliştiriciler neredeyse tüm popüler PHP kütüphanelerine kolayca erişebilir.
- Topluluk Desteği: Composer, büyük ve aktif bir geliştirici topluluğu ile kapsamlı dokümantasyon kaynaklarına sahiptir.
ServBay Entegre Composer
ServBay, pek çok PHP sürümüyle birlikte kurulur ve Composer da önceden sisteminize entegre edilmiştir. Yani Composer’ı ayrıca indirmenize veya kurmanıza gerek yoktur. ServBay, Composer’ın sistem ortamınızda kullanılabilir olmasını sağlar ve Komutlar genellikle ServBay'in o anda aktif olan PHP sürümüyle bağlantılıdır. Bu nedenle proje terminalinizde doğrudan composer
veya gerekli ise composer-2.2
komutunu kullanabilirsiniz.
Uyarı
Composer’ın en güncel sürümü Composer 2.8.x
ve eski PHP sürümleriyle uyumlu olan Composer 2.2.x LTS
şeklinde iki farklı versiyonu vardır. Bunlar sırasıyla PHP 7.2+
ve PHP 5.3 - PHP 7.1
ile uyumludur.
ServBay varsayılan olarak Composer 2.8.x
ile gelir ve bu sürüm PHP 7.2+
için uygundur.
Eğer PHP 5.3 - PHP 7.1
sürümlerinde Composer kullanmanız gerekirse, Paketler
bölümünden Composer 2.2.x LTS
’yi kurun ve işlemlerinizde composer-2.2
komutunu kullanın. Her iki Composer sürümü birbirini etkilemez.
Composer ile Proje Bağımlılıklarının Yönetimi
Composer, proje kök dizinindeki composer.json
adlı dosya ile bağımlılıkları yönetir. composer.json
oluşturmanın ve kullanmanın temel adımları şunlardır:
1. composer.json
Dosyası Oluşturma
PHP projenizin kök dizininde composer.json
adında bir dosya oluşturun. Örneğin, /Applications/ServBay/www/my_php_project
dizininde çalışıyorsanız, bu dizine oluşturmalısınız.
composer.json
dosyasında, require
anahtarına ihtiyaç duyulan paketler tanımlanır. Anahtar paket ismini (vendor/package
formatında), değer ise istenen sürüm aralığını belirtir.
Örnek – popüler PHP loglama kütüphanesi Monolog sürüm 2.0 ve üzeri kurulumu:
{
"require": {
"monolog/monolog": "^2.0"
}
}
2
3
4
5
Buradaki ^2.0
sürüm kontrolü, 2.0.0 ve üzeri, ancak 3.0.0’a kadar olan uyumlu tüm sürümleri kapsar.
2. Bağımlılıkları Kurma
composer.json
bulunan proje kök dizininde terminali açarak şu komutu çalıştırın:
composer install
Bu komut şunları yapar:
- Composer
composer.json
dosyasını okur, - Gerekli tüm bağımlılıkları (belirtilen paketler ve onların ihtiyaçları dahil) hesaplar,
- Paketleri proje kök dizininize
vendor
klasörüne indirir, - Kurulu tüm paket ve sürümlerini detaylıca kaydeden bir
composer.lock
dosyası oluşturur.composer.lock
mutlaka versiyon kontrolüne (ör. Git) eklenmelidir, böylece iş arkadaşlarınız ve dağıtım ortamlarında birebir aynı bağımlılıklar kurulur, - Otomatik yükleyici dosyası
vendor/autoload.php
oluşturur.
Kurulum sonrasında vendor
klasörü ve bir composer.lock
dosyanız olur.
Composer’ın Otomatik Yükleme Özelliği
Composer’ın en önemli yanlarından biri otomatik yükleyicidir. Sınıf adlarını dosya yollarına haritalayan farklı standardları (ör. PSR-0, PSR-4) destekler ve genel bir autoload dosyası üretir.
Otomatik yükleyiciyi şu şekilde yapılandırıp kullanabilirsiniz:
1. autoload
Alanını Yapılandırma
composer.json
dosyanızda autoload
bölümünü ekleyin ya da düzenleyin. PSR-4 standardıyla, örneğin App\
isim alanını projenizin src/
klasörüne eşlemek için:
{
"require": {
"monolog/monolog": "^2.0"
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
2
3
4
5
6
7
8
9
10
Böylece App\
ile başlayan herhangi bir sınıf çağrısı, Composer tarafından src/
altında uygun dosyaya yönlendirilir (ör. App\MyClass
→ src/MyClass.php
).
2. Otomatik Yükleyici Dosyasını Güncelleme
autoload
yapılandırmasını değiştirdiğinizde, Composer’ın otomatik yükleme haritasını güncellemek için şu komutu çalıştırın:
composer dump-autoload
Bu komut vendor/autoload.php
dosyasını yeniden oluşturur. Aslında yalnızca bağımlılık kurulumunda ya da güncellemede değil, autoload değiştiğinde de bu komut kullanılmalıdır.
3. Otomatik Yükleyici Dosyasını Kodunuza Dahil Etme
PHP betiğinizin başında Composer’ın autoloader dosyasını dahil edin:
<?php
// Composer otomatik yükleyici dosyasını dahil et
require __DIR__ . '/vendor/autoload.php';
// Artık Composer üzerinden yüklediğiniz kütüphaneleri veya autoload yapılandırmasında belirtilen sınıfları doğrudan kullanabilirsiniz
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use App\MyClass; // Eğer App\ namespace için autoload yapılandırdıysanız
// Monolog kütüphanesi kullanımı
$log = new Logger('name');
$log->pushHandler(new StreamHandler('your.log', Logger::WARNING));
$log->warning('Bu bir uyarıdır!');
// Kendi sınıflarınızı kullanma (autoload yapılandırılmışsa)
// $myObject = new MyClass();
// $myObject->doSomething();
?>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
require __DIR__ . '/vendor/autoload.php';
satırı sayesinde projede yönetilen tüm Composer sınıflarını extra require
veya include
olmaksızın kullanabilir, kodunuzu önemli ölçüde sadeleştirebilirsiniz.
Bağımlılıkları Güncelleme
Projeniz büyür ve bağımlılıklar değişirse, bağlı olduğunuz paketlerin sürümlerini güncellemek isteyebilirsiniz.
Proje kök dizininde aşağıdaki komutu çalıştırın:
composer update
composer update
,composer.json
ve bağımlılarında sürüm aralığına uygun yeni bir sürüm olup olmadığını kontrol eder,- Uygun yeni sürümler bulunduysa indirir ve kurar,
- Son olarak, yüklenen yeni paketlerin ve sürümlerinin bilgisini içeren
composer.lock
dosyasını günceller.
Önemli Notlar:
composer install
vecomposer update
farkı:composer install
, projeyi yeni kurarken ya da bağımlılıklar yüklenirken kullanılır ve mutlakacomposer.lock
dosyasındaki sürümlere uyarak kurulum yapar; böylece ortam uyumluluğu garanti altına alınır.composer update
ise, bağımlılıkları mümkün olan en yeni sürümlere güncelleyip,composer.lock
dosyasının da güncellenmesini sağlar. Takımda genellikle yalnızca belirli bir bağımlılığı ya da hepsini yükseltmek gerektiğindecomposer update
kullanılır ve ardından hemcomposer.json
hem decomposer.lock
dosyaları commit edilir.
ServBay Ortamında Composer Kullanırken Dikkat Edilmesi Gerekenler
ServBay yerel geliştirme için kolaylıklar sunsa da, Composer’ı kullanırken şunlara dikkat edin:
- Terminal Ortamı: Composer komutlarını ServBay ortamındaki terminalde çalıştırdığınızdan emin olun. ServBay, seçilen PHP sürümünü otomatik olarak PATH’e ekler ve yeni bir terminalde doğrudan
php
vecomposer
komutlarını kullanabilirsiniz. Eğercommand not found
hatası alırsanız, terminali yeniden başlatın ya da ServBay'in çalıştığına emin olun. - PHP Sürümü: ServBay, farklı PHP sürümleri arasında kolay geçiş sağlar.
composer
komutu, ServBay Panelinden aktif olan PHP sürümüyle çalışır. Belirli bir proje için özel PHP sürümüne ihtiyaç varsa, önce ServBay Kontrol Panelinden bu sürümü aktif hale getirin, sonra Composer komutunu kullanın. - Proje Dizini: Web projelerinizi ServBay’in varsayılan website kökü
/Applications/ServBay/www
alt klasörlerine konumlandırmanız tavsiye edilir ve proje için ServBay kontrol panelinden bir web site kaydı oluşturmalısınız. Böylece tarayıcıdan kolayca erişim sağlanır. Composer komutlarını ilgili proje dizininde çalıştırmak yeterlidir.
Örnek Proje: GuzzleHttp Kütüphanesi Kullanımı
Aşağıda, ServBay ile Composer kullanarak popüler PHP HTTP istemcisi GuzzleHttp kütüphanesinin nasıl kurulup kullanılacağı adım adım anlatılmıştır.
Proje klasörünü oluşturup girin: ServBay’in website kökünde yeni bir dizin oluşturun ve terminalde bu dizine geçin:
shcd /Applications/ServBay/www mkdir guzzle_demo.servbay.demo cd guzzle_demo.servbay.demo
1
2
3Dizin adında ServBay marka standartlarına uygun demo alan adı kullanılmıştır.
composer.json
dosyasını oluşturun:guzzle_demo.servbay.demo
dizininde aşağıdaki içerikle bircomposer.json
dosyası oluşturun:json{ "require": { "guzzlehttp/guzzle": "^7.0" }, "autoload": { "psr-4": { "App\\": "src/" } } }
1
2
3
4
5
6
7
8
9
10PSR-4 autoload da ayarlandı; bu küçük örnekte kullanılmasa da iyi bir uygulamadır.
Bağımlılıkları yükleyin:
guzzle_demo.servbay.demo
klasöründe kurulum komutunu çalıştırın:shcomposer install
1Composer, GuzzleHttp ve bağımlılarını indirip
vendor
vecomposer.lock
dosyalarını oluşturur.PHP dosyasını oluşturup bağımlılığı kullanın:
guzzle_demo.servbay.demo
dizinindeindex.php
adlı bir PHP dosyası oluşturun:php<?php // Composer otomatik yükleyici dosyasını dahil et require __DIR__ . '/vendor/autoload.php'; use GuzzleHttp\Client; use GuzzleHttp\Exception\RequestException; echo "<h1>GuzzleHttp Demo</h1>"; echo "<pre>"; try { // Guzzle istemci örneği oluştur $client = new Client(); // GET isteği gönder $response = $client->request('GET', 'https://httpbin.org/get', [ 'query' => ['param1' => 'value1', 'param2' => 'value2'] ]); // Yanıt gövdesini al $body = $response->getBody()->getContents(); echo "Yanıt Gövdesi:\n"; echo $body; // Yanıt durum kodunu al $statusCode = $response->getStatusCode(); echo "\n\nDurum Kodu: " . $statusCode; } catch (RequestException $e) { // İstek istisnasını işle echo "İstek İstisnası:\n"; echo $e->getMessage(); if ($e->hasResponse()) { echo "\nYanıt Durumu: " . $e->getResponse()->getStatusCode(); echo "\nYanıt Gövdesi: " . $e->getResponse()->getBody()->getContents(); } } catch (\Exception $e) { // Diğer istisnaları işle echo "Bir hata oluştu:\n"; echo $e->getMessage(); } echo "</pre>"; ?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44Dosya otomatik yükleyiciyi dahil eder, ardından GuzzleHttp istemcisiyle test API’sine istek yapıp, sonucu ekrana yazar.
ServBay web sitesi ayarlarını yapın: ServBay kontrol panelinde “Siteler” sekmesine girin (önceki adıyla “Ana Bilgisayarlar”). Ekle tuşuyla yeni bir site oluşturup kök dizin olarak
/Applications/ServBay/www/guzzle_demo.servbay.demo
seçin ve alan adınıguzzle_demo.servbay.demo
olarak girin. Değişiklikleri kaydedip ilgili web sunucusunu (örn. Caddy veya Nginx) yeniden başlatın.Tarayıcıdan erişin: Tarayıcınızda
http://guzzle_demo.servbay.demo/
adresine giderek PHP dosyasının çalışıp,https://httpbin.org/get
yanıtını görebilirsiniz.
Sıkça Sorulan Sorular (SSS)
S: PHP 5.6 kullanıyorum, Composer çalışmıyor; ne yapmalıyım?
C: ServBay, hem 2.8.x ana akım sürümünü hem de eski PHP sürümleri ile uyumlu 2.2.x LTS versiyonunu sunar. PHP 5.6 desteği için Composer 2.2 LTS
paketini kurup, composer-2.2
komutunu kullanın.
S: Terminalde composer
komutunu yazınca command not found
hatası alıyorum; ne yapmalıyım?
C:
- ServBay uygulamasının çalıştığından emin olun.
- Terminali kapatıp yeniden açmayı deneyin. ServBay, açılışta çevre değişkenlerini ayarlar, yeni açılan terminaller bunları yükler.
- ServBay kontrol panelinde en az bir PHP sürümünün aktif durumda olduğunu kontrol edin.
- Hala sorun devam ediyorsa, ServBay’in ilgili PHP sürümüyle Composer’ın tam yolunu kullanarak çalıştırabilir, örneğin
/Applications/ServBay/php/8.2/bin/php /usr/local/bin/composer install
(bu yol ve sürüm adlarını kendi kuruluma göre uyarlayın; fakat ServBay’in amacı doğrudancomposer
komutunu çalıştırabilmenizdir).
S: ServBay’de Composer ile belirli bir PHP sürümü seçmek için ne yapmalıyım?
C: Composer komutu, ServBay kontrol panelinde aktif olan PHP sürümünü otomatik olarak kullanır. Kullanmak istediğiniz PHP sürümünü panelden seçip aktif hale getirdikten sonra yeni bir terminal açıp composer
komutunu çalıştırmanız yeterlidir.
S: composer.lock
dosyasının işlevi nedir? Git’e eklemeli miyim?
C: composer.lock
, son composer install
veya composer update
işlemi sırasında indirilen tüm bağımlılıkların kesin sürümünü kaydeder. Bu dosyayı sürüm kontrol sistemine (örn. Git) kesinlikle eklemeniz önerilir. Böylece takım arkadaşlarınız, test ve prod ortamlarınız tamamen aynı bağımlılık sürümlerini kullanır ve “benim bilgisayarımda çalışıyor” sorunları yaşanmaz. Başkası projenizi klonlayıp composer install
çalıştırdığında, Composer öncelikle bu dosyayı dikkate alır ve tam olarak aynı sürümleri kurar.
Sonuç
ServBay, önceden kurulmuş ve entegre Composer ile PHP geliştiricileri için hızlı ve pratik bir yerel geliştirme ortamı sunar. Farklı PHP sürümlerinde bağımlılık yönetimini kolayca yapabilir, otomatik yükleme (autoload) avantajlarından yararlanabilir ve kod yazmaya odaklanabilirsiniz. ServBay’i Composer ile birlikte kullanmak; modern PHP projelerinde verimli, sorunsuz ve sürdürülebilir geliştirme için güçlü bir kombinasyondur.