PHP framework'leri

Her PHP framework'ünün en iyi yaptığı bir iş vardır.

Hepsinde – ve hiç framework'ü olmamış saf PHP'de de – uygulama geliştirir, kurtarır ve barındırırız; yirmi beş yıldır PHP yazan bir ekiple.

Projenize hangi framework uyar

İki soruyu yanıtlayın. Her yol, bizim başlayacağımız yerde biter – ve ne zaman başka bir şey seçeceğimizi de söyler.

Neyden yola çıkıyorsunuz?

Yeni bir proje

En önemli olan ne?

Birden fazla ekibin yıllarca üzerinde çalışacağı büyük bir sistem

Nereden başlardık

Symfony

Açık yapılandırma, bir bağımlılık enjeksiyonu konteyneri, uzun süreli destekli sürümler ve veriler için Doctrine. Beşinci geliştirici katıldığında da yapı sağlam kalır.

Şirket zaten Zend Framework kodu çalıştırıyorsa Laminas'ı da değerlendirin.

Küçük bir ekiple yakında yayına çıkması gereken bir ürün

Nereden başlardık

Laravel

Kimlik doğrulama, kuyruklar, e-posta, zamanlama ve ifade gücü yüksek bir ORM kutudan çıktığı gibi hazır; hepsi için tek bir kural düzeniyle.

EGPHP'de Laravel
Tek bir işi olan bir API veya küçük bir servis

Nereden başlardık

Slim

Yönlendirme, middleware ve standart PSR-7 istekleri; istemediğiniz hiçbir şey yok. Veritabanı katmanını ve konteyneri siz seçersiniz.

API tam bir ürüne dönüşecekse Laravel veya Symfony, ileride yeniden yazma zahmetinden kurtarır.

Mütevazı bir sunucuda küçük bir uygulama

Nereden başlardık

CodeIgniter

Küçük bir ayak izi, az yapılandırma ve açık bir dokümantasyon. Kaynakların kısıtlı olduğu yerlerde iyi çalışır.

Veritabanından hızla oluşturulan çok sayıda veri ekranı

Nereden başlardık

Yii · CakePHP

Yii, Gii ile modelleri ve CRUD ekranlarını üretir; CakePHP ise bunları kendi kurallarından bake eder. İkisi de bir şemayı hızla çalışan ekranlara dönüştürür.

Her istekte en az framework yükü

Nereden başlardık

Phalcon

Framework derlenmiş bir C eklentisidir; bu yüzden istek başına çok az PHP çalışır. Bu eklentinin sunucuda kurulu olması gerekir – biz kendi sunucularımıza kuruyoruz.

Birçok paylaşımlı hosting PHP eklentilerine izin vermez. Seçmeden önce kontrol edin.

Zaten var olan bir uygulama

Neyin üzerine kurulu?

Framework'süz saf PHP ya da çok eski bir PHP sürümü

Nereden başlardık

Önce kurtarma

Her şeyden önce onu güvenli ve güncel hâle getiririz, ardından bir framework'ün buna değip değmeyeceğine birlikte karar veririz.

Kurtarma nasıl ilerler
Bir framework üzerine kurulu ve çalışıyor

Nereden başlardık

Framework'ü korumak

Onu yazıldığı framework içinde yükseltir, güvenli hâle getirir ve geliştiririz. Yeniden yazmak ilk değil, son çaredir.

Bırakmak istediğiniz bir framework üzerine kurulu

Nereden başlardık

Adım adım taşıma

Eski ve yeni uygulama yan yana çalışır; işler sürerken rotalar birer birer taşınır.

Taşıma nasıl ilerler

Yan yana

Her framework'ün ne olduğu, en güçlü olduğu alan ve ne zaman iki kez düşüneceğimiz. Hiçbiri yanlış değil; her biri farklı bir iş için doğru.

PHP framework'lerinin karşılaştırması
Framework Nedir Veri katmanı En güçlü olduğu alan Şu durumda iki kez düşünün
Symfony Full-stack framework ve yeniden kullanılabilir bileşenler Doctrine ORM Uzun süreli destekli sürümlerle büyük ve uzun ömürlü sistemler Küçük bir sitenin bu hafta yayına çıkması gerekiyor
Laravel Full-stack framework Eloquent Kuyruklar, kimlik doğrulama ve e-posta yerleşik olarak, hızla ürün çıkarmak Her parçanın açıkça bağlanmasını istiyorsunuz
CodeIgniter Hafif full-stack framework Sorgu oluşturucu ve basit modeller Mütevazı sunucularda küçük bir ayak izi Proje büyük bir paket ekosistemine ihtiyaç duyuyor
Yii Full-stack framework Active Record Gii ile üretilen yoğun veri ekranları ve önbellekleme Ekibiniz ona yabancı; topluluğu daha küçük
CakePHP Full-stack framework CakePHP ORM Yapılandırma yerine kural ve şemadan üretilen kod Uygulama her adımda onun kurallarıyla çatışıyor
Laminas Bileşenler, MVC ve middleware framework'leri; Zend Framework'ün halefi laminas-db veya Doctrine Zaten Zend Framework üzerine kurulu iş sistemleri Küçük yeni bir proje hızlı ilerlemek istiyor
Slim Mikro framework Yerleşik yok – seçim sizin API'ler ve küçük servisler Uygulamanın ilk günden oturumlara, formlara ve bir yönetim paneline ihtiyacı var
Phalcon C eklentisi olarak sunulan full-stack framework PHQL ile Phalcon ORM İstek başına çok düşük yük Hosting sağlayıcınız PHP eklentisi kuramıyor

Laravel'in kendisi birkaç Symfony bileşeni üzerine kuruludur ve bu framework'lerin çoğu aynı PSR standartlarını paylaşır – kodu aralarında taşımak göründüğünden daha az iş gerektirir.

Eski PHP, yeniden formuna kavuşuyor

Yıllar önce yazılmış kod birçok işletmeye hâlâ para kazandırıyor. Onu kapatmadan güvenli ve güncel hâle getiriyoruz.

- $id = $_GET['id'];- $r = mysql_query("SELECT * FROM orders WHERE id = $id");- $order = mysql_fetch_assoc($r);+ $stmt = $pdo->prepare('SELECT * FROM orders WHERE id = ?');+ $stmt->execute([(int) $_GET['id']]);+ $order = $stmt->fetch(PDO::FETCH_ASSOC);
mysql_ fonksiyonları PHP 7'de kaldırıldı. Bu tek değişiklik sayfanın güncel PHP'de çalışmasını sağlar ve aynı anda bir SQL injection açığını kapatır.
  1. Okuyup çalıştırmak

    Uygulamanın güncel bir sunucuda çalışan bir kopyası ve nelerin bozulduğunun yazılı bir listesi.

  2. Çalışan kısımlar için testler

    Sayfaların bugün ne yaptığını kaydeden testler; böylece birini bozan bir değişiklik anında yakalanır.

  3. PHP adım adım yükseltilir

    Her seferinde bir sürüm; mekanik değişiklikler için Rector, onun gözden kaçırdıklarını bulmak için PHPStan.

  4. Önce güvenlik

    Hazırlanmış sorgular, kaçışlanmış çıktı, yeniden hash'lenmiş parolalar; oturumlar ve dosya yüklemeleri sıkı biçimde kilitlenir.

  5. Sonra, değerse bir framework

    Yeni özellikler eski kodun yanındaki bir framework'e eklenir; eski sayfalar da dokunuldukça taşınır.

Framework'ler arasında geçiş, her seferinde bir rota

Yeniden yazmak için işinizi durdurmayız. Eski ve yeni uygulama tek bir web sunucusunun arkasında durur ve her rota, yerini alacak olan hazır olduğunda taşınır.

  • /api/orders Yeni uygulama Taşındı
  • /account Yeni uygulama Taşındı
  • /checkout Yeni uygulama Testte
  • /reports Eski uygulama Bekliyor
  • /admin Eski uygulama Bekliyor
Yarı yoldaki örnek bir taşıma.

Geçiş, rota başına tek satırdır

# nginx
location /api/orders { proxy_pass http://new; }
location /account    { proxy_pass http://new; }
location /checkout   { proxy_pass http://new; }
location /           { proxy_pass http://old; }

Sorun çıkaran bir rota, biz onu düzeltirken aynı tek satırlık değişiklikle eski uygulamaya geri döner.

Bize ne çalıştırdığınızı anlatın

Başlamak için framework, PHP sürümü ve sizi endişelendiren şey yeterli. Her proje kısa bir görüşmeden sonra fiyatlandırılır.