PHP İle Paket Geliştirme



Benzer belgeler
Laravel 4 Türkçe Dokümantasyon (v. 4.2) (Ücretsiz)

Laravel: From Apprentice To Artisan (TR) Türkçe

Laravel 4 Türkçe Dokümantasyon (v. 4.1) (Ücretsiz)

Bugün Ne Oldu Bir Bilsen

E-KİTAP SATIŞLARINIZLA, SÜREKLİ BİR GELİRE NE DERSİNİZ? By Alia RİOR. Alia RİOR

LSI Keywords İle Sitenizin Sıralamasını Ve Trafiğini Arttırın

Implementing Laravel (TR) Türkçe Çevirisi

Uludağ Projesi, İlk Adımlar (Kalite Takımı)

Tek dosyalı projeler (siteler) üretmek

DYNED DİL EĞİTİM SİSTEMİ SIKÇA SORULAN SORULAR 1- DynEd Program DVD si nereden alınır? 2- DynEd Programı nasıl kurulur? 3- Öğrenciler program

A. Murat Eren. VI. Linux ve Özgür Yazılım Şenliği

ASSAM YÖNERGESİNE EK-T ASSAM WEB SİTESİ YÖNERGESİNE LAHİKA-2 WEB SİTESİ MAKALE EKLEME KILAVUZU ASSAM

SparkleShare. Çağrı Emer. Ekim, 2011

BİLDİRİM SİSTEMİ İLE İLGİLİ GENEL HUSUSLAR

Satış Servisi Müşterilerinizin soru ve problemlerine satıştan önce ve sonra nasıl cevap vereceksiniz?

Yaptığım şey çok acayip bir sır da değildi aslında. Çok basit ama çoğu kişinin ihmal ettiği bir şeyi yaptım: Kitap okudum.

WORLD OF LANGUAGE ACADEMY IELTS SINAVI ÖNEMLİ TAVSIYELER.

Nasıl Pardus Geliştiricisi Olunur?

Araç Karşılaştırma Programı

Metin Editörleri YRD. DOÇ. DR. ENGİN CEMAL MENGÜÇ. ALINTI:

E-Kitap İndirme Kılavuzu

Bahçeşehir Koleji, Workcube İle Süreçlerini Raporlanabilir Bir Yapıya Dönüştürdü.

Ortak Dersler Sanal Sınıf Sistemi Kullanım Kılavuzu

Spring Giriş Eğitimi

Blogger bunu uyguluyor!

Örnek bir kullanım ve bilgisayar ağlarını oluşturan bileşenlerin özeti

MVC. Görüldüğü üzere 2 adet cs. Dosyası oluşturdum. Birincisi çok satır kodu (20-25) içeren büyük işlerin yapılacağı class. İsmi buyuk_isler.

Elektronik Belge Yönetim Sistemi Kullanım Kılavuzu

2KiloMavi de. Misafir Yazarlık. Eylül kilomavi.wordpress.com

SAĞLIK BAKANLIĞI RESMİ E-POSTA BAŞVURU ADIMLARI

KULLANMADIĞINIZ HAT İPTAL OLMASIN ve BEDAVA SMS SİTESİ

ERP ve Başarılı Olmanız İçin Gereken 5 Faktör

Ortak Dersler için eders sistemi kullanma kılavuzu. Türk Dili İnkılap Tarihi Yabancı Dil

Özgür Yazılım Proje Yönetimi

MyEnglishLab: Speakout Öğrenci Kayıt Kılavuzu

ProjeX (XNetwork) Hızlı Başlangıç Kılavuzu Üye Oldum, Şimdi Ne Yapmalıyım?

[E-Katalog Tanıtım Sayfası] Ayser Bilgisayar. Cumhuriyet Meydanı No:41 Kat:

Atıf ve Bibliyografik Yönetim Aracı

SATILIKTIR TL Bilgi İçin:

BÖLÜM 4 KONTROL DEYİMLERİ

Exploit.CVE Analizi

Bu sayfanın en alt kısmında Duyuru ve Kullanıcı Girişi bulunmaktadır.

Blog Nedir? Blog un Tarihçesi Türkiye de Blog Eğitimde Blog Neden Blog Blog Türleri

PHP Günleri 2013#1. mysql_* Fonksiyonları Ömrünü Doldurmak Üzere. Peki Şimdi Ne Olacak? Özgür Yazılım A.Ş.

MARTILAR A FORUM KULLANMA DERSLERİ

Elektronik Kitap İndirme Kılavuzu. EBSCO ebooks.

den E-Kitap Okuyucusuna

Pardus. S.Çağlar Onur, 21 Aralık Pardus Projesi [TÜBİTAK / UEKAE] Linux Kullanıcıları Derneği

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

İŞ ZEKÂSI & ÇEVİK RAPORLAMA ARACI. REPX ile verinize değer katın.

Akdeniz Üniversitesi

Basit Kılavuzu Eliberato bir Kitap Yayıncılık Eylül 'den fazla dile çevrildi

AEGEE-Eskişehir Online Web Yönetim Paneli ( WEBBY ) Yardım Dökümanı

Bilişim Garaj Akademisi Nedir?

BİLGE SEYYAH KULLANIM KILAVUZU

Twitter da bu durumla karşılaşan başka kullanıcılar var mı diye twitter virüs anahtar kelimeleri ile genel bir arama yaptığımda ise bu durumun Nisan

Efe Çiftci Çankaya Üniversitesi Bilgisayar Mühendisliği Bölümü Kasım 2012 CENG 191 Computer Engineering Orientation Özel Sunumu

Bu makalede 2003 sunucu, Windows 2003 Server anlamına gelmektedir. Aşağıda yapılan işlemler 2003 R2 sunucu üzerinde denenmiş ve çalıştırılmıştır.

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

3. Metin ve Görünüm Etiketleri

Guided Tour Authoring in Clilstore

Versiyon Kontrol Sistemleri

KASPERSKY LAB. Kaspersky Small Office Security GUIDE BA BAŞLARKEN

VMware 4.0 vcenter Server Kurulumu

AXA OTOMATİK KATILIM KURUMSAL İŞLEMLER EKRANI KULLANIM KILAVUZU AXA HAYAT VE EMEKLİLİK A.Ş.

Lesson 02 : Self-Introduction (Part II)

OKUL HABER EKLEME MODÜLÜ TANITIM DOSYASI. Okul haberlerinizi ilçemiz web sitesinde yayınlayabilmek için aşağıdaki adımları uygulamanız gerekmektedir.

Kitapta UML diyagramları kullanılarak, tasarım şablonları görsel olarak açıklanmıştır. İçerik aşağıdaki bölümlerden oluşmaktadır:

PHP Pandas (TR) Dayle Rees ve Hasan Degismez. Bu kitap adresinde satıştadır.

Satınalma Yönetiminde 14 adımlık Tasarruf Listesi

Sistemin kullanılabilmesi için eğitime katılacak personelin önceden kayıt olması gerekmektedir.

Safirblog WP Teması - Kurulum ve Kullanım Kılavuzu

Kaynak Kod Güvenliği Bir Güvensiz API Örneği

LKD Kendi İlacını Kullanıyor

Duygusal ve sosyal becerilere sahip Genç profesyoneller

Mahaya Bulmaca Sözlük 1.0

Gitlab ile Web Tabanlı Git Deposu Yönetimi

INTERNET SİTESİ KULLANIM KILAVUZU

.. ROBOTİK VE KODLAMA EĞİTİMİ ÇERÇEVESİNDE ÖĞRETİM YILI BİLİŞİM TEKNOLOJİLERİ DERSİ ÜNİTELENDİRİLMİŞ YILLIK DERS PLANI

Nefret Etmeyeceğiniz Uygulama Programlama Arayüzleri (API) İnşa Edin

- İlk dikkat edilecek konu; 3B BIM modelinin her katının ayrı bir çizim dosyasında ve DWG nin de ayrı bir çizim dosyasında olmalıdır.

Hoş geldiniz. Twinspace Kılavuzu. Bu kılavuz, TwinSpace de yeni olan Öğretmen Yöneticiler tarafından kullanılmak üzere tasarlanmıştır.

DYNED İLE İLGİLİ SIRASIYLA HANGİ İŞLEMLER YAPACAĞIZ

Proticaret Exclusive Versiyon Yükseltme Dokümanı(v.3.0'dan v3.1.0'a)

İSTANBUL RUMELİ ÜNİVERSİTESİ MESLEK YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI 1.SINIF 2.YARIYIL İNTERNET PROGRAMCILIĞI II DERS İZLENCESİ

Pardus. A. Murat Eren, 25 Mart Pardus Geliştiricisi. Pardus Yenilikleri Sık Sorulan Sorular

Wikipedia'nın Kardeş Projeleri. Özlem Özgöbek


ELN1001 BİLGİSAYAR PROGRAMLAMA I

Seviye 1 Ünite 2 Çalışma Planı

1. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

Google Dokümanları Kullanmak

İZMİR EKONOMİ ÜNİVERSİTESİ KÜTÜPHANE VERİTABANINA KAMPÜS DIŞINDA ERİŞİM

Proticaret Exclusive Versiyon Yükseltme Dokümanı(v.3.2.0'dan v3.2.1'e)

EBSCOhost Elektronik Kitap Kullanıcı Kılavuzu. Erişim İndirme Özelliği

Seviye 1 Ünite 2 Çalışma Planı

E-postalarınıza HTML imza ile daha ilgi çekici olun

THOMAS SATIŞ MOTİVASYONU & MÜŞTERİ İLİŞKİLERİ EĞİTİMİ

Transkript:

PHP İle Paket Geliştirme PHP için paket geliştirme ve yayınlama kılavuzu. Özgür Adem Işıklı

PHP İle Paket Geliştirme PHP için paket geliştirme ve yayınlama kılavuzu. Özgür Adem Işıklı Bu kitap şu adreste satılmaktadır http://leanpub.com/phpilepaketgelistirme Bu versiyon şu tarihte yayımlandı 2015-01-21 This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishing process. Lean Publishing is the act of publishing an in-progress ebook using lightweight tools and many iterations to get reader feedback, pivot until you have the right book and build traction once you do. 2015 Özgür Adem Işıklı

İçindekiler Önsöz................................................ 1 Giriş................................................. 2 1. Aynı Şey, Tekrardan..................................... 2 2. Aksan Farkı.......................................... 2 3. PHP Tarafında Güncel Durum................................ 3 4. Kopyala/Yapıştır....................................... 3 5. Tek Kodla N Sayıda Proje.................................. 4 6. Sonuç............................................. 4

Önsöz Bundan yaklaşık olarak 10 yıl önce ilk programımı yazdığımda yaşadığım mutluluğu tarif etmem imkansız. Hala yeni bir şeyler geliştirirken aynı heyecanı yaşıyor ve yaptığım işten keyif alıyorum. Ancak yazılım hayatım boyunca bir noktadan sonra tekrar tekrar aynı işi yaptığımın farkına vardım. Bu sorunu aşmak için Nasıl yazdığım kodları pratik bir şekilde yeniden kullanabilirim? sorusunu kendime yönelttim. Her zaman olduğu gibi yalnız değildim ve benden daha önce de bu sorunun sorulduğunu öğrendim. Bu e-kitapta birlikte bu sorunun çözümlerinden sadece biri olan paket tabanlı mimariyi inceleyeceğiz. Neden gerekli olduğu, ne gibi kolaylıklar sağladığı ve nereden başlanması gerektiği gibi konular tek tek irdelenecektir. Bu e-kitabı iyi bir şekilde kavrayabilmek için daha önce PHP ile uygulama geliştirmiş olmanızı tavsiye ederim. E-kitap, PHP yi bilmeyen geliştiriciler için uygun değildir. Yazım süresince kararsız kaldığım bir diğer konu ise Git kullanımının e-kitap kapsamına dahil olup olmamasıdır. Uzun bir düşünme sürecinden sonra, asıl konudan çok sapacağımız için Git kullanımını kapsama dahil etmeme kararı aldım. Bu da e-kitap okuyucularının, temel Git kullanımını biliyor olmalarını gerektirmektedir. Umarım benim yazarken aldığım keyfi siz de okurken alabilirsiniz ve sizin için faydalı bir döküman olur. Bu çalışma hakkındaki tüm fikir, öneri ve görüşlerinizi i.ozguradem@gmail.com e-posta adresine ya da @iozguradem Twitter hesabına bildirebilirsiniz. Ocak 2015

Giriş Yolculuğumuza başlamadan evvel, neden paket tabanlı çalışmaya ihtiyacımız olduğunu irdelememiz gerekiyor. Paket tabanlı mimariye olan zaruretimizi ne kadar iyi anlarsak, o kadar hızlı yol alabiliriz. 1. Aynı Şey, Tekrardan 5 yıllık bir geliştirici olduğunuzu varsayarak işe başlayalım. Bu süre içerisinde PHP ile sayısız proje geliştirmiş olmanız muhtemeldir. Her yaptığınız projenizde bir oturum açma/kapatma, kullanıcı kaydı ya da yetkilendirme sistemi bulunabilir. Ancak 5 yıl yazılım dünyası için oldukça uzun bir süredir. Belki ilk projenizde herhangi framework kullanmıyordunuz fakat bugüne gelene kadar en az bir tanesini aktif olarak kullanmış olabilirsiniz. Eğer yarın başlayacağınız yeni bir projede, hazır bir paket kullanmayacaksanız ve basit bir oturum açma işlemine için sıfırdan kod yazacaksanız, gerçekten maceraperest olmalısınız. Eğer bunun yerine elinizin altında oturum yönetimi için kullanılacak hazır bir kod varsa, bunu kullanmanız kadar güzel bir şey olamaz. Sorunumuz işte tam da bu noktada ortaya çıkıyor. Aslında, framework lerin de ortaya çıkmasının nedeni benzerdir; sürekli yaptığımız işlemlerin rutinleştirilmesi. Dont Repeat Yourself prensibi bize kendimizi tekrar etmememizi söyler. Geliştirdiğimiz bir kodu tekrar tekrar kullanamıyorsak, büyük ihtimalle bir yerde hata yapıyoruz demektir. 2. Aksan Farkı Tekrar tekrar yazdığımız kodların kullanılabilmesi için; kodlarımızın kendi arasında aynı aksan ile konuşması gerektiği gerçeğinin altını çizmemiz gerekiyor. Aksan ile kastedilen; yazdığımız kodların kendi arasında bir standardının olmasıdır. Standartlara bağlı kalınmaksızın, kendimizi tekrar etmeden ve tüm topluluğun kullanabileceği kodlar geliştirmek imkansıza yakındır. Eskiye nazaran standartlar açısından PHP de epey yol alındığı söyleyebilirim. Ancak standartların takibinde, PHP geliştiricilerin aynı hassasiyette olduğunu söylemek güç. Ne yazık ki bu konuda kat etmemiz gereken çok yol var. Bir paket geliştirmek için PHP dünyasında kabul edilen bazı standartları biliyor olmanız kabul edilmektedir. Her ne kadar bazı framework ler kendilerine has yazım standartları belirleseler de, genel kabul PHP Framework Interop Group¹ tarafından belirlenen standartlardır. ¹http://www.php-fig.org

Giriş 3 3. PHP Tarafında Güncel Durum PHP dünyası artık Laravel ve Symfony2 gibi harika frameworklere sahip. Özellikle Laravel in Symfony den aldığı paketler daha bir dikkatle incelenmelidir. (Yanlış okumadınız. Laravel, Symfony2 ile bazı paketleri ortak kullanmaktadır.) Bunu ilk duyduğumda ufak çaplı bir şok yaşamıştım. İki framework arasında ortak paket kullanımının nasıl mümkün olabileceğini kavramam biraz zamanımı aldı. Fakat biz geliştiriciler birbirimize rakip değiliz (Ticari değeri olan ürünlerimiz elbette rakip ama ürünlerimizi geliştirirken kullandığımız araçlar benim bakış açımdan rakip değildir). Genelde birbirimizi rakip olarak görüp hazır bir kütüphane kullanmak yerine bir başka kütüphane geliştirmeyi tercih ediyoruz. Ancak bu çoğu zaman kaynak israfından öte bir katkı sağlamıyor. Biz e-kitap boyunca paket geliştirme işlemini anlatacak olsak da, sizin paket geliştirmeden önce aynı işi yapan paketleri bularak, projelerinize dahil etmenizi şiddetle öneriyoruz. Lütfen var olan bir paketi yeniden yazmayınız. Bilgi Geçmişte ben de bir paket var olmasına rağmen kendim paket yazdım ve bunların çoğu hüsranla sonuçlandı. Hala GitHub hesabımda duran bazı paketleri de o an öğrendiğim konular üzerinde pratik kazanmak amacıyla geliştirdim. Tekrar altını çiziyorum; var olan paketi yeniden yazmayın. 4. Kopyala/Yapıştır Yönlendirme işlemleri her PHP projesinde, hatta her framework de ortak olarak olması gereken bir özelliktir. Peki biz neden her projemizde aynı yönlendirme paketini kullanmayalım? Son derece basit bir yönlendirme işlemini yapan, aşağıdaki kod satırı inceleyelim; 1 include($_get['rota'].'.php'); Bundan 5 yıl önce amatör olarak geliştirdiğimiz bu yönlendirmeyi eğer bir paket olarak geliştirmiş olsaydık, her geliştirmeden sonra çok güçlü bir yönlendirme paketine sahip olabilirdik. Paketimiz güçlendikçe, her projemizde aynı paketi kullanabilirdik. Eğer yönlendirmede bir hata bulsaydık, tüm projelerimizde aynı hatayı düzeltebilirdik. Bilgi Tabi ki paket geliştirebilmeniz için, PHP nin bir paket/bağımlılık yöneticisine sahip olması gerekmektedir. Önceki yıllarda PHP dünyasında bu sorun varken, günümüzde Composer ile birlikte bir bağımlılık yöneticisine kavuşmuş bulunmaktayız. İlerleyen bölümlerde Composer a etraflıca değinilecektir.

Giriş 4 5. Tek Kodla N Sayıda Proje Örneğimizi daha iyi anlaşılabilmesi için değişik bir bakış açısı ile olaya bakmak istiyorum. İlk geliştirdiğimiz sitede bir yetkilendirme sistemi oluşturduğumuzu varsayalım. İkinci aldığımız işte yetkilendirme sistemini kopyala yapıştır yöntemiyle bir başka projemizde kullandığımızı varsayalım. Bu işlemi on farklı projenizde uyguladığınızı ve her seferinde paketi biraz daha geliştirdiğinizi düşünün. İlk yetkilendirme sisteminde 100, son sistemde 1000 satır kodunuz olsun. Lakin son sistemde ölümcül bir hata gördünüz ve mutlaka düzeltilmesi gerekiyor. 3 farklı dosyada, toplamda 45 satırı yeniden düzenlediniz. Bunu geçmişe dönük olarak projelerinize nasıl uygulayacaksınız? Eğer bu yöntemle değil de, paket yöntemiyle çalışmış olsaydık; bulduğumuz bir hatada yapacağımız düzeltmeyi çok kısa bir sürede tüm projelerimize aktarabilirdik. 6. Sonuç Tüm bunlar anlattıklarımız bize sadece genel bir bakış açısı kazandırmaktadır. Ancak paket tabanlı çalışmak birçok zorunluluğu da beraberinde getirecektir. Standartlara ne kadar uyarsak, bir üst paragrafta bahsettiğim yöntemi o kadar başarılı bir şekilde uygulayabiliriz. Bundan sonra adım adım paket geliştirme süreçlerinin öncesini ve sonrasını irdeleyeceğiz.