Bugünden itibaren bu kategori altında projelerinizde işinize yarayacağını düşündüğüm, hem yeni başlayan arkadaşlar hem de projelerinde kendini geliştirmek isteyen arkadaşlar için pratik bilgiler paylaşacağım.
Bazıları uzun kod örnekleri içerecek - mesela sorting/shuffle/search algoritmaları - ancak bazıları ise bu konu gibi pratik ve mantıksal işlere odaklı olacak.
Şimdi ilk konumuz olan Composer ile başlayalım.
Composer Nedir?
Composer en basit ve temel tanımı ile bir paket yöneticisidir. Ancak her ne kadar bunu çok kısa şekilde tanımlayabiliyor da olsak konu kullanmaya geldiğinde PHP geliştiricileri genelde uzak duruyorlar.
Neden Ülkemiz PHP Yazılımcıları Composer'dan Uzak Duruyorlar
Bunun en büyük sebebi görsel olarak çalıştırılamayan bir şey olması ile alakalı. Görsel olarak dosya oluşturmak, kopyalamak, bir kütüphaneyi zip/rar olarak indirip projede ilgili klasöre yüklemek ve PHP içinden include komutu kullanarak bu kütüphaneyi kullanmak çok daha güvenilir bir limanmış gibi geliyor.
Composer'ın resmi bir GUI - grafik arayüzü - yok buda onu terminal - siyah komut satırı ekranında - kullanmamız gerektiği anlamına geliyor.
Tabi birde proje dizinindeki ilgili yere gene terminal'den gitmek, işlem yapmak için hem çok basit bir kaç terminal komutu hemde composer'a ait komutlar öğrenilmesi gerekiyor buda kişiyi görsel olarak copy-paste yapıp geçebileceğine inandığı bir kütüphane için uğraşmamaya itiyor.
Ayrıca composer yükleme işlemini paylaşımlı hosting'lerde yapamazsınız. Belki şansınıza ssh erişimini yalıtımlı olarak veren yada composer kullanımına izin veren hosting sağlayıcılarına denk gelebilirsiniz. Gerek ekonomik koşullar gerekse belli bir sunucu yönetimi tecrübesi olmayan kişiler local'de ki projelerinde composer ile çalışsalar bile SSH üstünden bunu yapma ve projelerine ekleme işleminden uzak dururlar ve bir şeyleri bozacaklarından çekinirler.
"Peki Neden Composer Kullanmalıyız?" ve "Kullanmazsak Ne Kaybederiz?" Bunları Bilmemiz Gerekiyor
En basitinden bunun sebebi olarak size "paketlerinizi yönetmek" için demeyeceğım çünkü o zaman "öss sınavları açıklandı mı?" başlıklı clickbait haber içerikleri yayınlayan sitelelerin makaleleri gibi bir içerik üretmiş olurum

Bu sorunun cevabı için aşağıdaki senaryo üzerinden ilerlersek her 2 soru içinde tatmin edici cevaplara sahip oluruz.
Senaryo için neredeyse hepimizin bildiği bir metini, URL formatına çeviren bir URLslug kütüphanesi kullanacağım.
Bu örneğimiz için ilk karşıma çıkan composer destekli kütüphane şu => https://github.com/allebb/sluginator
Kullanmadığımız Senaryo, Sorunlar ve Kaybettiklerimiz
Projeyi zip olarak indirip gerekli olan dosyaları include ile projemize ekledik ve kullanmaya başladık. (Tabi projemizde birden fazla kütüphanenin olduğu bir senaryo içindeyiz)
- Sonra sunucumuza yükledik ve ileride PHP sürümümüzü yükseltince projemiz hata vermeye başladı. Aklınıza bu kütüphane geldi ve gene gidip manual güncellemeniz gerekecek ve sanıyorsunuz ki bu sorununuz çözülmüş olacak. Ancak oda nesi, sorun halen devam ediyor! Çünkü kullanmış olduğunuz kütüphane başka bir kütüphaneye bağımlılık sahibi ve onuda güncellemeniz gerekecek, gene manual işlem. Sonra o kütüphanenizde başkasına bağımlı ve bu zincir sizin tüm kütüphanelerinizi domino taşı gibi tek tek indirip dosyalar yükleyip deneme-yanılma yöntemleri çözmeye çalışmanız ile sonuçlanacak.
- Kaybettiklerinizin başında zaman, müşteri sitesinin uptime süresinin kısalması gibi daha geri dönülemez şeyde vardır.
Kullandığımız Senaryo, Çözümler ve Kazandıklarımız
Projemizdeki tüm kütüphanelerimizi composer kullanarak yükledik diyelim.
- Sonra sunucumuzda PHP sürümümüzü yükselttik ve hatalar almaya başladık. Çok sakin bir şekilde "composer require" komutu ile var olan tüm kütüphanelerimizi ve bağımlılıklarını update ettik. Ne bir sorun yaşadık, ne bir dosya yükledik nede error hataları ile boğuştuk.
- Böylece zaman, projeye harcanacak insan gücü - mesai saati vb. - verimli kullanımı ve birbiri ile bağımlılıkları düzgün çalıştığı ve her zaman güncel versiyonlarını kullandığımız için daha güvenli ve stabil bir proje elde ettik.
--
Composer'a Nasıl Kütüphane Yükleyeceğiz?
Bunu yapmak için packagist.org internet sitesini kullanmamız gerekiyor. Bununla birlikte Github veya Bitbucket gibi Git yönetimi / hostingi hizmeti veren bir yerede ihtiyacımız var.
- Kütüphanemizi bir repo'ya taşıyoruz - bu aynı zamanda insanların geliştirmesi içinde bir fırsat yaratıyor.
- "composer.json" dosyası yaratıyoruz böylece isim, yaratıcı, version,-varsa- bağımlılık sahibi olduğu diğer kütüphaneler vb. tüm ayarlar ve açıklamaları belirtiyoruz.
- Packagist sitesine repomuzun bulunduğu hesabımız ile kayıt oluyoruz ve kütüphanemizi ekliyoruz.
- Artık siz ve herkes "composer require" komutu ile kütüphanenizi projelerine dahil edebilir.
Diğer Dillerde Var Mı?
PHP geliştirici için bu durum her ne kadar bir seçenek gibi değerlendirilip "manual yaparım en azından aklım kalmaz" gibi şeyler ile tercihe bağlı kullanılıyor olsa da diğer dilleri kullanan kişiler için durum maalesef ki aynı değildir.
En basitinden Node.JS, Python veya Ruby gibi dilleri kullanarak geliştirme yapan kişiler - ki front-end geliştiren ve SPA işleri yapan kişilerde dahil - bir kütüphane ve bağımlılık kelimelerine çok aşinalardır.
Çünkü npm , pip ve gem kullanmadan bu dillerde istediğiniz sistemleri yazmanız çok çok zordur.
İşte composer bu saydığım ve muhtemelen sizinde en az 1 kere adını duyduğunuz belkide o veya bu şekilde kullandığınız paket yöneticilerinin PHP temsilcisidir.
Bol pratikler ile basit demolar yaparak öğrenmeye bugün başlayabilir ve müşterilerinizin sistemlerini güncelleştirme yükünüzü veya 3rd party kütüphanelerinizin yönetim maaliyetlerinizi kısabilirsiniz.
Bol Şanslar ve iyi geliştirmeler

entriko ve FurkanAkman bunu beğendi.
2 kişi bunu beğendi.