İdeal PHP Editörü (IDE) – PHPStorm

Eski blog yazılarıma bir göz attım da…
2009 yılında adam gibi bir IDE bulamamaktan …

ise IDE’nin öneminden bahsetmişim. Gerçi buna çok kızanlar olmuştu yorumlarda, favorim de şu:

facebook ta notepad2 ile yazılıyor seni kendini beğenmiş lanet olası pislik

Hala gördükçe gülümserim :) Neyse, aslında 1-2 yıldır ideal IDE’yi buldum:

Netbeans, NuSphere PHPEd, Dreamweaver, Notepad2, Notepad++, Zend Studio, vim, PDT, Aptana Studio, phpDesigner, Komodo, Sublime Text 2 hepsini denedim mutlaka bir eksikler çıktı. PHPStorm’da ise eksik değil bir sürü ekstralarla karşılaştım ve her birini keşfettiğimde dibim düştü…

Jetbrains – PHPStorm

Uzun yıllar bekledikten sonra ilk defa gerçekten üstün kabiliyetleri olan, stabil, hızlı çalışan bir IDE ile karşılaşıyorum.

Java, .Net programcılarının elindeki araçları hep kıskandım itiraf ediyorum. Jetbrains java IDE’si yaparak işe başlamış popüler bir firma. Google en son Android IDE’sini yine Jetbrains’in altyapısını kullanarak geliştirmesinden belli ediyor kalitesini zaten.

Rus bir firma geliştiriyor, hemen her platform için IDE’leri mevcut ve bir Java programından beklenmeyecek kadar (!) hızlı çalışıyor…

Ücretli bir yazılım ancak open-source projeniz varsa ücretsiz, yoksa da verilmeyecek bir miktar değil neredeyse 3 yıldır lisans yeniliyorum ben, verdiğim her kuruş helal olsun diyerek…

Peki Olayı Nedir?

Öncelikle belirteyim, bu IDE oldukça ileri düzey bir yazılım. Yenilere zor ve karışık gelebilir. Aşırı derecede özellikleri olduğu için bazıları canınızı sıkabilir (geçersiz html komutlarının altını çizme, aşırı paranoyak javascript uyarıları vs.).

Ancak kullandığım süre boyunca en az 100 kere “bu adamlar bu işi biliyor” dedim, kesinlikle arkasında çok üreten çok kullanan bir test ekibi var…

IDE’lerde olan standart özelliklerin hepsi var:

.subtext {color: #666; font-style: italic; margin-top:2px;}

  • PHP, HTML, javascript kod renklendirme.
    echo “<strong>deneme</strong>”; yazdığınız zaman string’in içindekinin html olduğunu bile anlayacak derecede başarılı. Aynı şekilde SQL ve diğer tüm dilleri tanıyor.
  • Kod tamamlama.
    Ayarlarını yaptıktan sonra jQuery selector’lerini, CSS tanımlarını bile tamamlıyor, tıklayınca tanımlarına gidiyor vs. SQL kod tamamlama da dahil.
  • PHPDoc desteği.
    PHPDoc’u sadece dokümantasyon için değil değişkenlerin tanınması için de kullanabiliyorsunuz.
  • Sunucu erişimi
    Uzaktan (FTP/SFTP vs.) ya da aynı bilgisayarda çalışmayla ilgili her tür senaryoyu destekliyor
  • Her tür dosya desteği
    phtml, tpl (smarty), twig, ini… Aklınıza ne gelirse
  • XDebug desteği.
    Kurulumu ve kullanımı son derece sorunsuz.
  • VCS desteği
    SVN, Git, Mercurial vs. aklınıza ne gelirse.
  • Framework desteği
    Yii ve Symfony desteği var ama biraz zayıf kaldığını itiraf etmek lazım
  • Şu an favori IDE’nizdeki en sevdiğiniz özellik %99 var! :)

Ekstralar

  • Yazı yazmayı unutturabilir, uyarmadı demeyin :)
  • Refactoring.
    HTML tag’lerini bile refactor edebilirsiniz. Şimdiye kadar denediklerim arasında tek kusursuz refactoring yapan IDE!
  • Kalite kontrol araçları.
    Bug yaratması olası kodlar hakkında, ya da her tür hata ile ilgili anında uyarı veriyor. Bu kadar detaylısını hiç görmemiştim. Özellikle başlarda moralinizi bozacak kadar detaylı. Ancak QA departmanınız varsa ve QA araçlarını zaten kullanıyorsanız hiç yabancılık çekmeyeceksiniz, endüstri standardı kütüphaneleri kullanıyor çünkü.
    PHP, javascript, CSS, hepsi için var…
  • Muhteşem kısayollar. En sevdiklerimden:
    1. dosya adını yazarak projenizdeki dosyaların arasından seçebiliyorsunuz. Bir kısmını, baş harflerini ya da klasörle beraber de yazabilirsiniz, bulur…
    2. Ctrl+N ile class adı ile dosya açma
    3. Shift+Ctrl+A ile bir pencere açılıyor, buraya çalıştırmak istediğiniz komutu yazıyorsunuz. Az kullandığınız komutların kısayollarını ezberlemeye ya da menülerde aramaya gerek yok
  • Dosya / kod karşılaştırma (diff)
    Yine bu da o kadar detaylı ki, bir kodu kopyalayın, başka bir kodu seçin, sağ tıkayıp “Compare with clipboard” ! Tek kelimeyle muhteşem…
    İki dosyayı, iki dizini seçip karşılaştırma zaten var…
  • Shelve changes
    Bunu açıklamsı biraz zor. Tam bir feature üzerinde çalışıyorsunuz ve acil düzeltilecek minik bir bug geldi. Var olan değişikliklerle çakışa da bilir, ne yapacaksınız? Ufak da bir bug olduğu için VCS’te branch açmak uzun iş. Shelve changes dersiniz, yaptığınız değişikler saklanır, kodlar eski haline döner. Bug’ı düzeltir deploy edersiniz, sonra unshelve changes yapar devam edersiniz.
  • Save / Load Context
    Yukarıdakine benzer bir senaryo. Bu daha problemsiz ama, bug hiçbir yerle çakışmıyor ama açtığınız bir sürü dosya var aralarında gezinip duruyorsunuz. Şimdi yeni bug için açtığınız dosyalarla karışacak… Save context dersiniz, dosyaları kapatır istediğiniz dosyaları düzeltirsiniz. Sonra Load Context dersiniz açık olan tüm dosyalar vs. geri gelir.
  • Composer, phar, phing, unit testing vb. aklınıza gelen gelmeyen bir sürü “şey”e destek

Daha yüzlerce özellik var öf yeter :) 2-3 yıldır kullanıyorum, ilk günden beri yeni özellik keşfediyorum, hala da keşfetmeye devam ediyorum. Her keşfettiğimde de “oha bunu da düşünmüşler” diyorum. O yüzden bu kadarı yeter, kalanını da siz bulun :)

Dezavantajları / Eksikleri

Her gülün bir dikeni var tabii:

KISS’in Tam Tersi!

O kadar özellikli ki öğrenmek gerçekten çok zahmetli. Bazı kilit özellikleri birisi göstermeden bulmanız zor. Ayarlar penceresinde kaybolmanız işten değil…

Proje Desteği

Özellikle Netbeans’e alıştıysanız muhtemelen en gıcık olacağınız kısmı proje desteği olacaktır. Ben alıştım ama bulaştırdığım 4-5 kişinin hepsi proje yapısına gıcık kaptı. “Projelerim” penis enlargement diye bir şey / yer yok, eski projelere ulaşabileceğiniz tek yer “recent projects”. Proje ile ilgili dosyalarda proje klasörü altında saklanmak zorunda. Proje adını değiştirmeyi biri göstermezse keşfetmek zor.

Projelerinizi “New project from existing files…” wizard’ı ile oluşturmazsanız xdebug ve bazı özellikleri ayarlamakta zorlanırsınız.

Sunucu Tanımlama / Proje – Global Ayarlar Karmaşası

Örneğin sunucu ekliyorsunuz, global tanımlanıyor (yani her projede çıkıyor) sonra o sunucuyu proje bazında default seçiyorsunuz, mapping’leri proje bazında ayarlıyorsunuz ama bunların proje bazında ayrı mı global mi olduğunu ilk başta algılamak zor oluyor…

Yer yer biraz usability sıkıntısı var anlayacağınız ama bu kadar teferruatlı bir yazılımda da normal bunlar…

Commit ederken yeni dosyalar gözükmüyor

En gıcık olduğum bug bu. Gerçi bildirdik düzelteceklerini belirttiler ama ne zaman olur belli değil. Normalde commit ekranı inanılmaz teferruatlı, commit ettikten sonra şu sunucuya deploy et, TODO itemlarını göster, kod analizi yap gibi en uçuk özellikler var ama sonradan eklediğiniz ama versiyon kontrol sistemine “add” yapmadığınız dosyaları göstermek gibi bir özellik yok!

Bu da şöyle oluyor, dışarıdan bir dosya ekleyip commit ettiğinizde unutabiliyorsunuz. Eğer dosyayı PHPStorm’un dizinleri üzerinden eklerseniz soruyor aslında ama IDE dışından eklerseniz arada unutulabiliyor ki bu da çok can sıkıcı sorunlara neden olabiliyor…

Sonuç

Ben bu işte ustayım bana profesyonel, ileri düzey bir IDE lazım diyorsanız PHPStorm’u tavsiye ederim…

Orta / düşük düzey programcıyım eksiklerimi düzeltmek, üstat olmak istiyorum diyorsanız PHPStorm’u yine tavsiye ederim. Alın, kurun, özelliklerini öğrenin, profesyonel hayatta ciddi ve profesyonel bir ekibin uğraştığı şeyleri öğrenmiş olursunuz…

Facebook bile notepad2 kullanıyor diyenlerdenseniz kullanmayın, Allah’ınızdan bulun :)

1 Yorum

  1. Ellerinize sağlık açıklayıcı olmuş olsa da resim de kullanılabilirdi.Diğer içerikleride inceleyip siteyi sürekli takip edeceğim.

    Reply
  2. Merhaba Huysuz İnsan, senelerdir seni ve işlerini takip ederim. Bazı yazılarından sonrada fikrimin değişmesini sağlamış bi insansın. Senin yüzünden mac aldım mesela. Şimdide senin yüzünden bu programı kullanmaya başladım. Fakat sitemim var. Bir sene, iki üç tane yazı yazarak geçiştirilmezki be kardeşim. Sektörün içinde aktif ve profesyonel olarak çalışan bir kişisin daha fazla yazıp, tecrübelerini daha çok paylaşman gerektiğini düşünüyorum. Daha fazla huysuzluk etmede şu blogu takip edenlere biraz daha zaman ayır.
    Saygılar…

    Reply
  3. Bu Sorunu çözebildinmi bilmiyorum; Misal Foo diye bir Class olsun $id diye bir field olsun generate setters and getters dediğm zaman getİd şeklinde çıkıyor.Aynı şekilde Bu sorun namespace lerin algılanmamasınada yol açıyor misal. APP\MODELS diye bir namapace olsun, aynı dosyada Idler diye bir class tanımla başka bir yerde use keywordunu kullanıp çağır böyle bir alias olmadığından bahsediyor.Bu sorun sende varmı? varsa çözebildin mi ?

    Reply
  4. acaba opensource proje kullandığınızı nereden anlıyorlar?
    acaba kodları birilerine incelemeleri için arka taraftan gönderiyor mu?

    Reply
  5. Bu işlere 35’inden sonra girmek zorunda kalan biri olarak 3 gün en iyisi hangisi diye araştırdım. Hepsini tek tek indirdim ve uzun uzun inceledim.
    Sonuç: phpstorm. Daha sonra da phpstorm üzerine araştırmalar yaptım ve aldıkları ücretin kat kat fazlasını hak ettiklerini düşünüyorum.

    Bu da açık kalan sonradan gördüğüm pencerede kalan ama en iyi yazılardan biri olmuş. :)

    Bir sorum olacak “{” işaretini phpstorm da yapmaya çalıştığımda başka bir pencere açılıyor ve işaret yapamıyorum. Ne yapmam gerekiyor?

    Reply
  6. Merhabalar öncelikle IDE’ler hakkında verdiğiniz bilgiler için teşekkürler.Evet PHP Storm çok güzel ancak ücretli. En güzeli ilk başta Notepadd gibi hızlı açılan bir editör bulup eklentiler ile yola devam etmek olacak.Ama ne kadar başarılı olur aman gösterir.

    Reply
  7. Merhabalar, verdiğiniz bilgiler gerçekten oldukça kıymetli, teşekkürler…PHP editör için Netbeans kullanıyorum ve çok memnunum. FTP programlarına direkt olarak bağlanabiliyorum. Ancak bu editörlerin online olanları olsa da heryerden bağlanıp rutin işlemlerimizi kolayca yapabilsek ne güzel olurdu…

    Reply

Leave a Comment.