Monthly Archives

Aralık 2013

PHP

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

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.

SEO / SEF

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.

SEO / SEF

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.

XML ve RSS

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.

XML ve RSS

XML ve RSS Nedir ?

Extensible Markup Language (Genişletilebilir İşaretleme Dili, XML), W3C organizasyonu tarafından geliştirilmiş modern programlama dilleri tarafından işlenebilen, insanlar ve bilgisayar sistemleri tarafından anlaşılması kolay bir yapıdır. XML genelde veri saklama amacıyla kullanılsa da günümüzde veri alışverişinde önemli rol üstlenmektedir.

 

Bu bölümde XML nasıl tanımlanır, hangi standartlarda olmalıdır gibi konulara girmiyorum. Zira XML farklı bir konu olduğu için burada anlatılması yakışık olmaz. Bu bölüm XML tanımlamalarının aksine, XML dosyalarını nasıl işleyeceğimizi (okumak, parse etmek) öğreneceğiz.

Genel

PDO ile Veritabanına Bağlanma

PDO eklentisini kullanarak, bölüm başında desteklediği tüm veritabanı sürücülerine kolayca bağlanabilirsiniz. PHP dili için genellikle MySQL kullanıldığından ve kitaptaki uygulamalarında da MySQL kullanıldığı için yine MySQL sürücüsünü kullanacağım. Farklı sürücü kullanmak isterseniz, bağlantı deyimini sürücüye uygun olarak girmeniz gerekmektedir.

Yukarıdaki örnek bağlantı şemasında bağlantı için gerekli olan $host,$user ve $pass değişkenlerini veritabanı bilgilerinize göre değiştirmeniz gerekmektedir. PDO eklentisini kullanarak veritabanı ile bağlantı kurmak isterseniz, bunu PDO sınıfının kurucu metodunu kullanarak gerçekleştirebilirsiniz. Örnekleme esnasında veritabanı bilgilerinizi parametre olarak göndererek yeni bir bağlantı oluşturduktan sonra PDO::exec() metodu ile bir SQL deyimi çalıştırabilirsiniz. Örnekte, veritabanı karakter kümesi UTF8 olarak ayarladık.

PDO

PDO Başlarken

Bu eklentiyi kullanarak veritabanı ile kolayca çalışabilirsiniz. PDO ve PDOStatement sınıflarının birbiri ile birlikte kullanılarak SQL deyimlerini işleyebilir ve sonuçları görüntüleyebilirsiniz.

Bu bölümde PDO veritabanı eklentisinin kullanımı için bazı örnekler yer alacaktır. Örnekler sırasında sınıf metotları yeri geçtikçe ne anlama geldiğini belirteceğim. Bu örnekleri geliştirmek için kullandığım veritabanı kodlarını aşağıda belirttim. İster aynı veritabanı ile çalışın, isterseniz de kendinize ait bir veritabanı oluşturun. Seçim sizin.

PDO

PDO Kurulumu

PDO eklentisini kurmak için sürücü ayarlarını aktif hale getirmeniz gerekmektedir. Aşağıda PHP manüelinden referans alınarak Unix ve Windows kullanıcılarının PDO eklentisini nasıl aktif hale getirebileceği belirtilmiştir.

 

Unix Sistemler : 

PDO ve PDO_SQLITE sürücüsü PHP 5.1.0’dan itibaren öntanımlı olarak etkindir. Başka bir veritabanının PDO sürücüsünü etkinleştirmek isterseniz, bunun nasıl yapılacağını veritabanlarına özgü PDO sürücüleri sayfasından öğrenebilirsiniz. Yalnız dikkat! PDO eklentisini bir paylaşımlı eklenti olarak (bu önerilmez) derliyorsanız, tüm PDO sürücülerinin PDO’nun kendisinden sonra yüklenmesine dikkat etmelisiniz.

PDO eklentisi bir paylaşımlı eklenti olarak kuruyorsanız, PHP çalıştığı zaman PDO eklentisinin özdevinimli olarak yüklenmesi için php.ini dosyasını buna göre düzenlemeniz gerekir. Ayrıca kullanacağınız veritabanına özgü sürücülerinde dosyada etkin kılınması gerekir. Bunu yaparken bunların pdo.so satırından sonra listelenmesine dikkat etmelisiniz. Çünkü PDO eklentisinin veritabanlarına özgü eklentiler yüklenmeden önce ilklendirilmesi gerekir. PDO’yu ve veritabanlarına özgü eklentileri duruk olarak derliyorsanız, php.ini adımını atlayabilirsiniz.

extension=pdo.so

 

Windows Sistemleri : 

PDO ve belli başlı sürücülerin tamamı, birer paylaşımlı eklenti olarak PHP ile birlikte gelir ve php.ini dosyasında etkin kılınmaları gerekir:

extension=php_pdo.dll

 

Yine php.ini dosyası içerisinde, PDO eklentisi ile hangi veritabanı yönetim sistemini kullanacaksını, veritabanına özgü eklenti DLL dosyasını etkin hale getirmelisiniz. Aşağıda PDO ile kullanabileceğiniz veritabanı eklentileri yer almaktadır. Hangi veritabanı sürücüsünü kullanıyorsanız, sürücü isminin önündeki noktalı virgülü ( ; ) kaldırınız.

extension=php_pdo.dll

extension=php_pdo_firebird.dll

extension=php_pdo_informix.dll

extension=php_pdo_mssql.dll

extension=php_pdo_mysql.dll

extension=php_pdo_oci.dll

extension=php_pdo_oci8.dll

extension=php_pdo_odbc.dll

extension=php_pdo_pgsql.dll

extension=php_pdo_sqlite.dll

Kısacası MySQL kullanacağımızdan dolayı php.ini dosyasından extension=php_pdo.dll ve extension=php_pdo_mysql.dll yönergelerini aktif etmeniz yeterlidir.

PDO

PDO Nedir ?

PHP Data Objects (PHP Veri Nesneleri, PDO), veritabanı ile gerçekleştireceğiniz işlemler için hazırlanmış hafif ve kullanışlı bir eklentidir. Özellikle günümüzde MVC (Model-View-Controller) yapılarında popüler olarak kullanılan eklenti haline gelmiştir. MySQL, MsSQL, Oracle, ODBC ve daha birçok veritabanı sürücüsü ile başarıyla çalışabilmektedir.

 

PDO, PHP 5.1’den itibaren PHP ile birlikte gelir ve PHP 5.0’dan beri bir PECL eklentisi olarak da mevcuttur. PDO, PHP 5’teki yeni nesne yönelimli özelliklere ihtiyaç duyar; bu bakımdan PHP’nin daha önceki sürümleri ile çalışmaz.