İçeriğe geç
Teklif al

Hizmet · Danışmanlık, test ve bakım

PHP projelerini modernize etme

Yıllar önce yazılmış bir PHP projesi genellikle işini yapmaya devam eder; asıl sorun, etrafındaki dünyanın değişmesidir. Barındırma firması eski PHP sürümünü kaldırmak istediğinde site açılmaz, mysql_ ile başlayan fonksiyonlar yeni sürümde bulunmaz, MD5 ile saklanan parolalar ve birleştirilerek yazılmış SQL sorguları güvenlik taramasında kırmızıya döner. Kodu yazan kişi çoktan ayrılmıştır ve her değişiklik başka bir sayfayı bozma korkusuyla yapılır.

Kategori
Danışmanlık, test ve bakım
Çalışma modeli
Proje bazlı
Hizmet bölgesi
Türkiye geneli, uzaktan ve yerinde

PHP projelerini modernize etme çalışmasında sistemi sıfırdan yazmak yerine, çalışan iş kurallarını koruyarak kodu adım adım güncel bir düzene taşırız. Önce mevcut davranışı kayıt altına alan testler yazılır, ardından sürüm yükseltme, bağımlılık yönetimi, güvenlik düzeltmeleri ve gerekiyorsa bir çatıya geçiş sırayla yapılır. Her aşama ayrı yayınlanır; site ya da panel bu süreçte kullanılmaya devam eder.

PHP projelerini modernize etme ihtiyacı olanlar

Aşağıdaki durumlar, yeniden yazma kararından önce modernizasyonun değerlendirilmesi gereken tipik örneklerdir.

  • PHP 5.6 ya da 7.x üzerinde çalışan ve barındırma firmasından sürüm yükseltme uyarısı alan site sahipleri
  • Kendi geliştirdiği sipariş, stok veya bayi panelini yıllardır kullanan ve yeni özellik eklemekte zorlanan işletmeler
  • Eski bir CodeIgniter, Zend Framework ya da Yii sürümüyle yazılmış uygulamasını güncel tutmak isteyen şirketler
  • Özel eklenti ve temaları güncel WordPress ve PHP sürümleriyle uyumsuz hâle gelmiş kurumsal site sahipleri
  • Güvenlik denetiminde SQL enjeksiyonu ya da zayıf parola saklama bulgusu çıkan yazılım ekipleri

Eski PHP kodunda karşılaştığımız sorunlar

Bu sorunların çoğu birbirine bağlıdır; birini çözmeden diğerine geçmek zordur.

  • 01

    Desteği bitmiş sürümler

    Resmî güvenlik desteği sona eren PHP sürümleri yeni açıklar için yama almaz. Barındırma tarafında da bu sürümler zamanla kaldırılır ve proje bir gün aniden çalışmaz hâle gelir.

  • 02

    HTML, SQL ve iş kuralının iç içe olması

    Tek bir dosyada veritabanı bağlantısı, sorgu, hesaplama ve sayfa çıktısı birlikte bulunur. Bir fiyat kuralını değiştirmek için onlarca dosyada aynı kodu aramak gerekir.

  • 03

    Elle yönetilen bağımlılıklar

    Kütüphaneler bir klasöre kopyalanmış, hangi sürümün kullanıldığı bilinmez. Composer olmadan güvenlik güncellemesi almak ve yeni paket eklemek risklidir.

  • 04

    Testsiz ve belgesiz kod

    Otomatik test yoksa yükseltmenin neyi bozduğu ancak kullanıcı şikâyet ettiğinde anlaşılır. Kodun ne yaptığını bilen tek kaynak çoğu zaman kodun kendisidir.

  • 05

    Zayıf güvenlik kalıpları

    Kaçışsız SQL sorguları, filtrelenmeden ekrana basılan kullanıcı girdisi, CSRF korumasız formlar ve sunucuya doğrudan yazılabilen yükleme klasörleri eski projelerde sık görülür.

Modernizasyon adımlarımız

Sıralama projenin durumuna göre değişir; aşağıdaki işler her projede ayrı ayrı değerlendirilir.

  • 01

    Karakterizasyon testleri

    Kritik sayfalar ve işlemler için mevcut çıktıyı kaydeden testler yazılır. Kod değiştikçe bu testler davranışın korunup korunmadığını gösterir; amaç kodu ilk günden güzelleştirmek değil, güvenle değiştirebilmektir.

  • 02

    Statik analiz ve otomatik düzeltme

    PHPStan ya da Psalm ile tip hataları ve kaldırılmış fonksiyon kullanımları taranır. Rector gibi araçlar, sürüm yükseltmenin gerektirdiği tekrarlı değişikliklerin önemli bir kısmını otomatik ve gözden geçirilebilir biçimde yapar.

  • 03

    Sürüm yükseltme

    Proje, güvenlik desteği süren bir PHP 8 sürümüne genellikle ara sürümlerden geçerek taşınır. Her ara adımda testler ve hata günlükleri kontrol edilir.

  • 04

    Composer ve otomatik yükleme

    Kütüphaneler Composer ile yönetilir, sınıflar PSR-4 düzeninde otomatik yüklenir. Böylece bağımlılıkların güncellenmesi tek komutla izlenebilir hâle gelir.

  • 05

    Kademeli çatı geçişi

    Gerekiyorsa yeni ekranlar Laravel veya Symfony üzerinde yazılır, eski sayfalar yerinde çalışmaya devam eder. Ortak bir yönlendirme katmanıyla eski kod zamanla küçülür.

PHP projelerini modernize etme sürecinde korunan bağlantılar

Eski projelerin değeri çoğu zaman yıllar içinde kurulmuş bağlantılarındadır; bunlar ilk günden envantere alınır.

  • 01

    Ödeme altyapıları

    iyzico, PayTR ya da bankaların sanal POS'u ile kurulmuş eski entegrasyonlar güncel kütüphane ve 3D Secure akışıyla yeniden doğrulanır.

  • 02

    Muhasebe ve ERP

    Logo, Mikro ya da Paraşüt gibi programlara SOAP, REST veya dosya aktarımıyla bağlanan kodlar test ortamında ayrı ayrı çalıştırılır.

  • 03

    Kargo ve SMS sağlayıcıları

    Yurtiçi, Aras ya da MNG gibi kargo firmaları ve SMS sağlayıcınızla kurulan bağlantılarda değişen API sürümleri kontrol edilir.

  • 04

    Cron işleri ve e-posta

    Sunucuda tanımlı zamanlanmış görevler ve mail fonksiyonuyla gönderilen e-postalar listelenir; e-postalar güvenilir bir SMTP servisi üzerinden gönderilecek şekilde düzenlenir.

PHP projelerini modernize etme hizmeti nasıl ilerler?

  1. Adım 01

    Analiz

    İş akışınızı, kullanıcılarınızı ve mevcut sistemlerinizi dinleriz; kapsamı, öncelikleri ve kabul ölçütlerini yazılı hâle getiririz.

  2. Adım 02

    Tasarım

    Ekran akışlarını ve veri modelini çıkarırız. Arayüzü sizinle gözden geçirip onay almadan geliştirmeye geçmeyiz.

  3. Adım 03

    Geliştirme

    Kısa döngülerle çalışırız; her döngü sonunda çalışan bir sürümü test ortamında görürsünüz.

  4. Adım 04

    Test

    İşlevsel testler, entegrasyon testleri ve temel güvenlik kontrolleriyle hataları yayından önce yakalarız.

  5. Adım 05

    Yayın

    Sunucu, alan adı, yedekleme ve izleme ayarlarını yaparak canlıya alırız; ekibinize kısa bir kullanım eğitimi veririz.

  6. Adım 06

    Bakım

    İsterseniz bakım ve destek anlaşmasıyla güncellemeleri, izlemeyi ve yeni geliştirmeleri sürdürürüz.

Yeniden yazmak yerine modernize etmenin teknik gerekçesi

Eski bir kod tabanı, yıllar içinde karşılaşılmış istisnaların ve iş kurallarının tek kaydıdır. Sıfırdan yazılan sistem bu bilgiyi yeniden keşfetmek zorunda kalır ve uzun süre iki sistem paralel yürür. Modernizasyonda kod çalışmaya devam ederken iyileştirilir; her adım küçük, test edilmiş ve geri alınabilir olduğu için iş akışınız durmaz.

Devamını okuDaha az göster

Güvenlik düzeltmelerini işin başına alırız. Sorgular PDO ile parametreli hâle getirilir, eski MD5 ya da SHA1 parola özetleri kullanıcı bir sonraki girişinde password_hash ile yeniden üretilir, dosya yükleme klasörlerinde betik çalıştırma kapatılır. Bu adımlar sürüm yükseltmesinden bağımsız olarak hemen fayda sağlar.

Ortam tarafında, paylaşımlı barındırmadan sürümü sabitlenmiş bir sunucuya ya da Docker konteynerine geçiş önerebiliriz. Böylece geliştirici bilgisayarı, test ortamı ve canlı sistem aynı PHP sürümü ve eklentileriyle çalışır.

Bu hizmette çalışma modelleri

  • 01

    Proje bazlı

    Sabit kapsam, sabit fiyat ve belirli teslim tarihi

    Kapsamı belli, teslim tarihi olan işler için.

    • Yazılı kapsam ve kabul ölçütleri
    • Sabit fiyat ve belirli teslim tarihi
    • Teslim ve kabul adımları sözleşmede
    Bu modelle teklif alın: Proje bazlı

PHP projelerini modernize etme hakkında sık sorulan sorular

PHP projelerini modernize etme fiyatları neye bağlıdır?

Kodun büyüklüğü, kullanılan PHP sürümü ile hedef sürüm arasındaki fark, çatı kullanılıp kullanılmadığı, entegrasyon sayısı ve mevcut test durumu belirleyicidir. İlk inceleme sonrasında aşamalara bölünmüş bir teklif sunarız.

Projeyi sıfırdan yazmak daha mantıklı olmaz mı?

Bazı durumlarda olabilir; örneğin iş modeli tamamen değiştiyse ya da kodun büyük kısmı artık kullanılmıyorsa. İlk incelemede iki seçeneği karşılaştırır, modernizasyonun anlamsız kaldığı durumlarda bunu açıkça söyleriz.

Modernizasyon sırasında site kapanır mı?

Hayır. Değişiklikler önce test ortamında denenir, canlıya küçük parçalar hâlinde ve genellikle trafiğin düşük olduğu saatlerde alınır. Her yayının bir geri alma planı vardır.

Hangi PHP çatısına geçmeliyiz?

Ekibinizin deneyimi, projenin yapısı ve uzun vadeli bakım planı belirleyicidir; Laravel ve Symfony en yaygın iki seçenektir. Her proje bir çatıya geçmek zorunda da değildir, bazen Composer ve iyi bir klasör düzeni yeterlidir.

Başka bir firmanın yazdığı PHP kodunu devralıyor musunuz?

Evet, çoğu modernizasyon zaten başkasının yazdığı kodla başlar. Kaynak kodun tamamına, veritabanı yedeğine ve sunucu erişimine ihtiyaç duyarız.

PHP projelerini modernize etme firması olarak çalışma bitince ne teslim ediyorsunuz?

Güncellenmiş kodu sürüm geçmişiyle birlikte deponuzda, testleri, kurulum ve yayın talimatlarını ve kalan teknik borçların listesini teslim ederiz. İsterseniz bakım ve destek modeliyle çalışmayı sürdürürüz.

İlgili hizmetler ve sayfalar

PHP projelerini modernize etme için teklif alın

Kısa bir ön görüşmede ihtiyacınızı dinleyip kapsamı, çalışma modelini ve takvimi yazılı olarak paylaşırız.

+90 552 579 93 21