22 Ağustos 2009 Cumartesi

PHP 5.3 ile Gelen Yenilikler

Herkese merhaba Webkolog okuyucuları! Bugün sizlere, PHP dünyasında büyük bir değişimin habercisi olan PHP 5.3 sürümüyle gelen yeniliklerden bahsetmek istiyorum. 30 Haziran 2009 tarihinde duyurulan bu sürüm, özellikle modern programlama paradigmalarını PHP'ye taşıyan ve dilin geleceğini şekillendiren önemli özellikler içeriyordu. O zamanlar bu yenilikleri keşfetmek ve projelerime entegre etmek benim için oldukça heyecan vericiydi. Gelin, PHP 5.3 ile hayatımıza giren önemli değişikliklere birlikte göz atalım.

PHP 5.3 ile Gelen Yenilikler ve Değişiklikler

PHP 5.3, sadece yeni özellikler getirmekle kalmadı, aynı zamanda bazı eski ve artık önerilmeyen fonksiyonları da işaretleyerek (deprecate ederek) kodlarımızın daha temiz ve güvenli olmasına zemin hazırladı.

Yeni Özellikler ve İyileştirmeler

PHP 5.3 ile birlikte dilin çekirdeğine eklenen bazı önemli özellikler şunlardı:

  • İsim Uzayları (Namespaces): Bu, PHP'nin en büyük yeniliklerinden biriydi! Özellikle büyük projelerde ve kütüphanelerde isim çakışmalarını önlemek için müthiş bir çözüm sunuyordu. Artık aynı isimde farklı sınıflar veya fonksiyonlar tanımlamak mümkün hale geldi.
    
    namespace Webkolog\Makaleler;
    
    class PHP53 {
        public function merhaba() {
            echo 'Merhaba PHP 5.3 dünyası!';
        }
    }
    
    namespace Webkolog\Urunler;
    
    class PHP53 {
        public function fiyatGetir() {
            echo 'PHP 5.3 fiyatı: Ücretsiz!';
        }
    }
    
    $makale = new Webkolog\Makaleler\PHP53();
    $makale->merhaba();
    
    $urun = new Webkolog\Urunler\PHP53();
    $urun->fiyatGetir();
    
  • Geç Bağlı Statikler (Late Static Bindings): Miras alınan sınıflarda statik metot ve özelliklere dinamik erişim sağlayan bu özellik, özellikle karmaşık sınıf hiyerarşilerinde esnekliği artırdı.
  • Lambda Fonksiyonları ve Closures (Anonim Fonksiyonlar): Bu sayede, isim vermeden hızlıca fonksiyonlar oluşturup değişkenlere atayabiliyor veya başka fonksiyonlara parametre olarak geçirebiliyorduk. Callback fonksiyonlarında kullanımı oldukça yaygınlaştı.
    
    $selamla = function($isim) {
        echo "Merhaba, $isim!";
    };
    
    $selamla("Webkolog");
    
  • Ternary Operatör için Kısaltılmış Yazım (Shorthand Ternary Operator): Artık, bir değişkenin değerini kontrol ederken daha kısa bir yazım kullanabiliyorduk: ?:.
    
    $isim = $_GET['isim'] ?: 'Misafir'; // $_GET['isim'] boşsa 'Misafir' atanır
    echo $isim;
    
  • Dinamik Statik Method Çağrımı: Statik metotları dinamik olarak çağırabilme yeteneği eklendi.
  • __callStatic() Magic Metodu: Tanımlanmayan statik metot çağrılarını yakalamak için yeni bir magic metot eklendi.
  • __DIR__ Sabiti: __FILE__ gibi, ancak dizin yolunu döndüren yeni bir sabit geldi. Dosya yolları işlemlerinde oldukça kullanışlıydı.
  • goto ifadesi: Belirli bir noktaya atlama imkanı sunan bu ifade, dikkatli kullanılması gereken bir özellikti.
  • İsteğe Bağlı Garbage Collector: Daha etkin bellek yönetimi için çöp toplayıcı mekanizması iyileştirildi.
Kullanımdan Kaldırılan veya İşaretlenen (Deprecated) Özellikler/Fonksiyonlar

PHP 5.3, gelecekte tamamen kaldırılacak olan bazı eski fonksiyonları da kullanımdan kaldırdığını işaret etti. Bu, kodlarımızı güncellemeyi teşvik eden önemli bir adımdı. İşte bazıları ve yerine kullanılması önerilen alternatifler:

  • mysql_db_query(): Yerine mysql_select_db() fonksiyonunu kullanıp ardından mysql_query() kullanılması önerildi.
  • call_user_method(): Yerine call_user_func() kullanılması önerildi.
  • call_user_method_array(): Yerine call_user_func_array() kullanılması önerildi.
  • ereg(), ereg_replace(), eregi(), eregi_replace(): Bu POSIX regex fonksiyonları yerine, çok daha güçlü ve modern olan preg_match() ve preg_replace() gibi PCRE (Perl Compatible Regular Expressions) fonksiyonlarının kullanılması önerildi.
  • set_magic_quotes_runtime(), magic_quotes_runtime(): Magic quotes özelliği kademeli olarak kaldırıldığı için bu fonksiyonlar da geçerliliğini yitirdi.
  • session_register(), session_unregister(), session_is_registered(): Oturum yönetimi için artık doğrudan $_SESSION süper global dizisi kullanılması önerildi.
  • set_socket_blocking(): Yerine stream_set_blocking() kullanılması önerildi.
  • split(), spliti(): Yerine preg_split() kullanılması önerildi.
  • mysql_escape_string(): Yerine mysql_real_escape_string() kullanılması şiddetle önerildi, çünkü bu fonksiyon MySQL bağlantısına göre karakterleri doğru bir şekilde kaçırıyordu.
Tamamen Kaldırılan Fonksiyonlar

Bazı fonksiyonlar ise PHP 5.3'te tamamen kaldırıldı:

  • define_syslog_variables()
  • dl(): Paylaşımlı kütüphaneleri çalışma zamanında yüklemeye yarayan bu fonksiyon, CLI dışındaki SAPI'lerde kaldırıldı.
  • sql_regcase()

PHP 5.3, dilin daha modern ve kurumsal projelere uygun hale gelmesinde kritik bir rol oynadı. Özellikle isim uzayları ve anonim fonksiyonlar gibi özellikler, yazılım geliştirme süreçlerimizi derinden etkiledi ve PHP'nin popülerliğini artırdı. Eski ve güvensiz pratiklerin kaldırılması da dilin daha sağlam bir yapıya kavuşmasını sağladı. Benim için de yeni nesil PHP yazımına geçişin ilk büyük adımlarından biriydi.

Bu yazımdan keyif aldığınızı ve PHP 5.3'ün getirdiği yenilikleri hatırladığınızı veya öğrendiğinizi umuyorum. Webkolog'u takipte kalın!

Hepinize bol kodlu ve başarılı projeler dilerim!

0 yorum:

Yorum Gönder