Fluent Interface Design Pattern ve PHP

Standard

Bu makalemde size fluent interface design pattern yani Akıcı arayüz tasarım deseni nedir ne işe yarar ondan bahsedeceğim.

Aslında akıcı arayüz yerine akıcı arabirim de diyebiliriz; Fluent Interface yani Türkçe meali iki kapıya da çıkar.. Aynı şey zaten 🙂

Peki nedir bu Fluent Interface? Eric Evans ve Martin Fowler tarafından geliştirilmiş Fluent Interface bir OOP design pattern. Yani özetlemek gerekirse Fluent Interface de metodlar zincirleme olarak da kullanılabilir..

Devamını Oku..

Trait nedir? Nasıl Kullanılır?

Standard

PHP 5.4 ile hayatımıza giren yeniliklerden biriside trait.. Peki bu Trait nedir? Trait için dilimizde karşılık olarak özellik diyebiliriz. Trait ler bizim multi inheritance yani çoklu kalıtım yapmamızı sağlar.. Bildiğiniz gibi sınıflar bu şekilde birden fazla kalıtıma imkan vermiyordu ama trait ile artık bu işlemi yapabiliyoruz ve tanımladığımız sınıflara “trait”ler ile yeni özellikler, metodlar ekleyebiliyoruz

Devamını Oku..

PHP 5.5 ve Yield Komutu

Standard

PHP 5.5 i incelemeye ve detaylandırmaya devam ediyoruz.. PHP 5.5 ile hayatımıza Üreticiler (generators) ve eşyordamlar (coroutines) eklendi.
Şimdi size Generators kısmına değineceğim yani kısaca yield komutu..

Basitçe ve kabaca anlatmak gerekirse bir metodda array’e toplayıp array’i return ettiğiniz işi yapmaktadır. İteratorlar ile kullanımı mantıklı olan bu komut size bellekte büyük kolaylık sağlayacaktır.

Hemen bir örnek ile detaylandırmak isterim:

<?php $data = range(0, 1000000); echo sprintf('%02.2f', (memory_get_usage() / 1048576))." MB of memory used\n"; // output: 137.92 MB of memory used foreach ($data as $key => $val) { //echo "key: ".$key." value: ".$val."\n"; } ?>

Devamını Oku..

PHP5 ve Final Kavramı

Standard

PHP5 ile birlikte hayatımıza giren kavramlardan bir taneside sınıf ve metodlar için getirilen final kavramı…

işin özü final diyerek o metod veya sınıfın bir daha türetilememesini sağlamış bulunuyoruz.

O sınıf türetilmesin bozulmasın vs. diye böyle bir yol izlenebilir, karışık ve zor değil o yüzden direk örnek vereceğim ve taşlar oturacak kafanızda;

Sınıflarda Final Kullanımı

final class FinalSinif { public function abcMethod() { echo "FinalSinif method u çağrıldı"; } } //Compile error verecektir çünkü final sınıfı türetilemez class YeniSinif extends FinalSinif { public function abcMethod() { echo "YeniSinif method u çağrıldı"; } } $onur = new YeniSinif(); $onur->abcMethod();

Devamını Oku..

PHP interface – Arayüzler

Standard

Herkese merhaba,

Bugün size php interface den bahsetmek istiyorum. PHP5 ile birlikte hayatımıza giren bir yenilik olan interface i görsel olarak düşünmeyelim. Aslında Yapı yani modelleme arayüzü olarak düşünebiliriz.
Örnek vermek gerekirse; bir veritabanı altyapısı hazırlıyorsunuz ve mysql,pgsql, oracle gibi birden fazla adaptorünüz var. Bu adaptörlerdeki yapıların birbiri ile aynı olmasını istiyorsak burada interface devreye girecek. Veya Cache yapısı kuracaksınız; APC, memcache gibi cache yapıları kullanacaksınız ve yapılar aynı olacaksa interface kullanabilirsiniz. İnsan için interface tanımlayıp kadın erkek sınıflarını bu interfaceten türeterek cins ikisinde de cinsi iki sınıfada oldurmak istiyorsanı kullanabilirsiniz. Örnek çoğaltılabilir bankalar için sanal pos uygulamasında da kullanabilirsiniz vs.vs.

Özetle Bir projede birden fazla geliştiricinin olması gibi durumlarda standart yapının korunması amacı ile hazırlanır,bizim sınıfa bir standart getirmemizi sağlıyor. Yani o standartların dışına çıkamayacağımız bir sınıf yazmamızı sağlıyor. Ve  yapı dışında birşey yapılmak istenirse hata sistem hata verir.
Bu standartları koruma nasıl bir fayda sağlayacak derseniz, göz hatası olabilir, dalgınlık olabilir veya başkasının yazdığınız kodları değiştirmesini istemiyorsunuz, burada interface kullanmanız mantıklı olacaktır.
Büyük projelerde özellikle kullanılır.
Veya diyelim framework lerde DB sınıfı için hazırlanmış olan interface kullanılırki çekirdek kodlar bozulmadan kullanıcılar isterse kendi sınıflarını türetsinler, bu sayede sınıf sizi standartlarına uymaya zorlar.

Lafı daha fazla uzatmadan bir kaç örnek vermek istiyorum sizlere;

ilk örneğimde size mysql, mssql gibi farklı veritabanı yapıları ile bağlantı sağlayabileceğiniz bir örnek vereceğim..

interface DB { public function connect(); public function error(); public function errno(); public static function escape_string($string); public function query($query); public function fetch_array($result); public function fetch_row($result); public function fetch_assoc($result); public function fetch_object($result); public function num_rows($result); public function close(); }

Devamını Oku..