Trait (Özellik) Kullanımı
Sınıflarda çoklu katman yapısını oluşturmada kullanılır. Katmanlar arasındaki karşıklığı gidermekte ve katmanlarda oluşan problemleri çözmede avantaj sağlar. Örneğin veritabanı bağlantısın oluşturduğunuz katmanı, sql sorguları çalıştırdığınız katmanı ve görüntülemek için oluşturduğunuz katmanı bir çatı altında toplayabilirsiniz. Traitleri çağırmak için use operatörünü kullanıyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | trait umitYasarOguzcan{ public function uyo_baslik(){ echo "<h1>Ümit Yaşar Oğuzcan</h1>"; } public function uyo_siir(){ echo '<pre> Aşk başlamadan güzel, Kalplerde heyecan Bakışlarda korku olduğu zaman güzel... Birbirimize sezdirmemek için çırpınış, Başkaları görmesin diye çabalayış, Gözlerim gözlerinin mavisine değdiği zaman... </pre> '; } } trait cemalSafi{ public function cs_baslik(){ echo "<h1>Hüzün Adres Değiştirir Sevdiğim</h1>"; } public function cs_siir(){ echo ' <pre> Yakışmıyor cepheyi terk edişin, Mert dayanır, namert kaçar sevdiğim. Fazla sürmez hatanı fark edişin, Hüzün eken, hüsran biçer sevdiğim. </pre> '; } } trait ozdemirAsaf{ public function oa_baslik(){ echo "<h1>Çizik</h1>"; } public function oa_siir(){ echo ' <pre> Geleceğim, bekle dedi, gitti.. Ben beklemedim, o da gelmedi. Ölüm gibi bir şey oldu.. Ama kimse ölmedi. </pre> '; } } class yazarlar{ use ozdemirAsaf,cemalSafi,umitYasarOguzcan; public $yazarList=array("oa"=>"Özdemir Asaf","cs"=>"Cemal Safi","uyo"=>"Ümit Yaşar Oğuzcan"); public function yazar($index){ echo "<b>".$this->yazarList[$index]."</b>"; } } $sinif=new yazarlar(); $sinif->uyo_baslik(); $sinif->uyo_siir(); $sinif->yazar("uyo"); $sinif->cs_baslik(); $sinif->cs_siir(); $sinif->yazar("cs"); $sinif->oa_baslik(); $sinif->oa_siir(); $sinif->yazar("oa"); |
PHP OOP Insteadof Kullanımı
Trait operatörü ile birden çok özellik sınıfa dahil edilirken, bu sınıflar içerisinde aynı metot isimleri bulunabilir. Tabi bunlardan birni seçmek gerekecektir. Bu nedenle öncelikli olan özellik user ile çağırılır ikinci gelen özellikde ise parantez açılır çakışan metotlardan
hangisini seçilecekği belirlenir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | trait attr1{ public function metot(){ echo "attr1 metot çalıştı<br />"; } } trait attr2{ public function metot(){ echo "attr2 metot çalıştı<br />"; } } class metotlar{ use attr1,attr2{attr1::metot insteadof attr2;} public function anaMetot(){ echo "anaMetot çalıştı"; } } $sinif=new metotlar(); $sinif->metot(); $sinif->anaMetot(); |