⊗ppOpMgSP 91 of 107 menu

PHP'de OOP'de Sihir ile Özellik Yazma

Sihirli __set yöntemi, mevcut olmayan veya gizli bir özelliğin değerini değiştirmeye çalıştığınızda çağrılır. Parametre olarak özelliğin adını ve atanmaya çalışılan değeri alır.

Pratik bir örnek üzerinden inceleyelim. Elimizde Test adında bir sınıf olduğunu varsayalım:

<?php class Test { private $prop1; private $prop2; } ?>

Bu sınıfın içinde, var_dump fonksiyonunu kullanarak erişilmeye çalışılan özelliğin adını ve bu özelliğe atanmaya çalışılan değeri gösteren bir sihirli __set yöntemi oluşturalım:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { var_dump($property . ' ' .$value); } } ?>

Sınıfımızın çalışmasını test edelim:

<?php $test = new Test; $test->prop = 'value'; // __set yönteminin var_dump'ı 'prop value' çıktısını verecek ?>

Şimdi, adı $property değişkeninde saklanan özelliğe değer atayalım:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; // değeri ayarlıyoruz } } ?>

Artık özel (private) özelliklere sınıfın dışından değer yazabileceğiz:

<?php $test = new Test; $test->prop1 = 1; // 1 yazalım $test->prop2 = 2; // 2 yazalım ?>

Yazma işlemini yapabiliriz, ancak oraya bir şey yazılıp yazılmadığını kontrol edemeyiz, çünkü özellikler özeldir.

Bu özellikler için bir getter yapılabilir veya doğrudan sihirli __get yöntemi kullanılabilir. İkinci seçeneği kullanalım:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; } // Sihirli özellik getter'ı: public function __get($property) { return $this->$property; } } ?>

İşte şimdi sınıfımızın çalışmasını kontrol edebiliriz. Test edelim:

<?php $test = new Test; $test->prop1 = 1; // 1 yazalım $test->prop2 = 2; // 2 yazalım echo $test->prop1; // 1 çıktısını verir echo $test->prop2; // 2 çıktısını verir ?>

Aslında, elbette ki, özel özelliklere herkesin yazmasına izin vermemeliyiz, yoksa bu özel özelliklerin anlamı kalmaz (hepsini genel (public) yapmak daha kolay olurdu).

Bu nedenle, bu yöntem yalnızca gerçekten gerekli olduğu durumlarda kullanılmalıdır. Bir sonraki derslerde başarılı uygulama örneklerini daha fazla inceleyeceğiz.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet