Traits Nedir ?

PHP dilinde nesneye yönelik programlamada ciddi gelişmeler olmaya başladı. 1 Mart 2012 tarihinde duyurulan PHP 5.4 sürümünde bizleri yeni bir kavram beklemektedir, Traits. Bu ifadenin dilimizdeki karşılığı özellikler olarak ifade edilebilir.

 

C ve Java gibi dillerde extends deyimi ile birden fazla sınıftan kalıtım yoluyla miras alınarak yeni sınıflar türetilebilmekte. Fakat PHP dili kalıtım yoluyla birden fazla sınıftan miras alınmasına izin vermiyordu, daha doğru ifadeyle bunu karşılayamıyordu. Bu sorunu ortadan kaldırmak için yeni sürüm ile birlikte Trait yapısı oluşturuldu. Trait, aynı sınıflarda olduğu gibi tanımlanan fakat kendi başlarına hiçbir anlam ifade etmeyen yapılardır. Bu yapı sınıflar ile birlikte kullanıldığında anlamlı olmaktadır. Kısa özet halinde Trait kavramını açıkladıktan sonra yeteneklerini anlamaya çalışalım.

Smarty Nedir ?

Birçok hazır sistem içerisinde en çok tercih edilen template engine sistemi olarak Smarty gösterilir. Alternatif sistemler olmakla beraber “pear, zend framework vb.” bence en başarılı olanı ve PHP geliştiricileri tarafından desteklenen Smarty projesidir.

 

Gerçi PHP 5 çıktıktan sonra yeni versiyona adapte olmakta geç kalmış olsa dahi yapabilecekleri konusunda programcıya sağladığı kolaylıklar göz önüne alındığında son derece başarılı bir mekanizma oluşturuldu. Profesyonel bir web sayfası oluşturabilmeniz için en son çıkan teknolojileri yakından takip edip, projelerimizde uygulamamız gerekir. Tabi son teknolojiyi kullanmamız birazda projelerimizde ayırabildiğimiz bütçelerle orantılı bir şeydir. Zira çok yüklü bir trafik içeren web sitemiz varsa ve maddi sıkıntılardan sebep atıyorum SUN SPARC server’lar alamıyorsak yapacaklarımız sınırlı değil elbette. Bu durumda karşımıza smart, memcache gibi argümanlar çıkıyor. Şayet günlük ziyaretçi sayımız yüz binleri geçiyorsa mutlaka ve de mutlaka database ile olan samimitenizi unutmanız gerekiyor. Günlük birkaç bin kişinin ziyaret ettiği siteler üzerinde uğraştıysanız, burada anlatıcaklarım sizin için bir anlam ifade etmeyebilir. Sadece MVC (Model View Controller) mimariyi öğrenmekten ileri gidemeyebilirsiniz. Zira bir programcının başına web sayfası sıkıntı açmıyor kendini geliştiremez diyebilirim.

SEF Kurulumu

Yerel bilgisayarda çalışmalarınızı test edebilmek için adres yönlendirme özelliğini aktif hale getirmek gerekmektedir. Apache klasörünün içerisinde yer alan httpd.conf dosyasını (Windows sistemlerinde bulunduğu dizin C:\xampp\Apache\conf) not defteri ile açın. Bu dosya içerisinde aşağıda yer alan satırı arayarak başındaki # işaretini kaldırın.

#LoadModule rewrite_module modules/mod_rewrite.so

Bu işlemi gerçekleştirdikten sonra değişikliklerin aktif olması için Apache’nin yeniden başlatılması (restart) gerekmektedir. Apache restart edildikten sonra değişiklikler aktif olacaktır ve artık SEF çalışmalarına başlayabiliriz demektir.

 

.HTACCESS

Düzenli ifadeleri oluşturmak için .htaccess olarak isimlendirilmiş (özel bir dosya, extra uzantı yok) bir dosya ile çalışmanız gerekmektedir. Kök dizininize bu dosyayı oluşturun. Bu dosyayı oluşturmak için adına .htaccess yazın ve kaydedin. Uzantı belirtmemek için çift tırnakları özel olarak yazdık, aynı bu şekilde yazarak kaydederseniz rahatça bu dosyayı oluşturabilirsiniz. Aksi halde dosya ismini değiştirerek oluşturmaya çalıştığınızda Windows işletim sistemi uzantı belirtmediği için bu işletme izin vermeyecektir.

SEF (Search Friendly Url) Nedir ?

Bu bölümde, sizi arama motorlarında daha üst sıralara çıkaracak bir teknikten bahsedeceğim. Öncelikle bu tekniğin ne olduğu hakkında bilgi verelim. SEF uygulanan bir web sayfasının adres yapısını istediğiniz gibi ayarlayabilirsiniz. Şöyle bir örnek vereyim.

 

http://www.orhanbhr.com/kategori-ismi/yazi-adi.html şeklinde olan bir adres yapısı normalde şöyle yorumlanır. Bu web sayfasının bulunduğu sunucuda kategori-isimli bir klasör var ve bu klasörün içinde de yazi-adi.html isimli bir dosya var ve biz bu dosyayı görüntülüyoruz. Halbuki olay bu değil. Aslında görüntülenen dosya belkide ana dizinde bulunan index.php dosyası. Bakın, adresin uzantısı .html olmasına rağmen biz, .php dosyası çağırabiliyoruz. SEF tekniği bir çeşit yapay adreslemedir.

SimpleXML

PHP5 sürümünden itibaren OOP yapısının yeniden düzenlenmesinden dolayı SimpleXML kütüphanesi oluşturuldu ve böylece XML ile çalışmak oldukça kolay hale geldi. PHP ile XML belgeleri üzerinde çalışmak için SimpleXMLElement sınıfından faydalanacağız. Bu sınıf XML belgelerini parse ederek bir dizi haline getirir. Böylece XML düğümleri arasında boğuşmaktan kurtuluruz.

SimpleXML kütüphanesi tanımak için basitten zora doğru örneklerle başlayalım. Öncelikle sınıfı nasıl kullanacağımızı, bir XML belgesini parse ettirdiğimizde nasıl sonuç döndüreceğini gözlemleyelim. Bunun için elimizde bir XML belgesi olması gerekiyor.

Aşağıda yer alan kodları kitaplar.xml kök dizine olarak kaydedin.

<kitaplar>

<kitap>

<isim>HTML5 ile Gelen Yenilikler</isim>

<yazar>Orhan BAHAR</yazar>

</kitap>

<kitap>

<isim>PHP ile Gelen Yenilikler</isim>

<yazar>Orhan BAHAR</yazar>

</kitap>

</kitaplar>

Şimdi kitaplar.xml dosyasını parse etmek için SimpleXMLElement sınıfından bir nesne örnekleyelim ve sonuçları gözlemlemek için nesne kaynağını ekrana print_r() fonksiyonu ile yazdıralım.

Yukarıdaki kodu çalıştırdığınızda XML dosyası parse edilerek bir dizi haline dönüştürüldü. Peki sadece bir adet kayda nasıl ulaşabiliriz? Örneğin; sadece ikinci kitabın yazarını (Orhan Bahar) ekrana yazdırmak istersek ne yapacağız?

Yukarıdaki kodu XML belgesini parse ettikten sonra yazarsanız gerçekten de istediğimiz kayda erişebildiğimizi fark edeceksiniz. Peki nasıl eriştik? XML belgesi parse edildikten sonra $xml değişkenine object tipli dizi halinde atılıyor. Üstteki resimde dizinin kitap isimli bir dizi düğümü var. Öyleyse $xml->kitap ile bu düğüme erişebiliriz. Bu düğüm içinde 0 ve 1 düğümleri var. Biz ikinci kitaba ulaşacağımızdan erişim imlecimiz $xml->kitap[1] haline dönüştü. Artık geriye sadece ekrana hangi değişkeni yazdıracağımız kaldı. Son olarak $xml->kitap[1]->yazar olan imleç gerçekte aradığımız kayda erişmek için doğru seçimdir.