⊗ppOpMgROP 89 of 107 menu

PHP'de OOP'de Salt Okunur Özellikler

Tüm özellikleri private olan bir sınıfı ele alalım:

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

Şimdi, bu özelliklerin dış dünyada sadece okunabilir olmasını sağlayalım. Daha önce her özellik için getter'lar oluşturarak ve setter'lar oluşturmayarak bunu yapmıştık.

Şimdi bu görevi çözmek için sihirli __get yöntemini kullanalım. İstenen özelliğin değerini içinde döndüreceğiz. Nasıl yapılır: İstenen özelliğin adı __get yönteminin parametresine, bizim durumumuzda $property değişkenine gelir.

Bu, adı bir değişkende saklanan özelliği şu şekilde okuyabileceğimiz anlamına gelir: $this->$property (özelliğin adı bir değişken olacak, yani başında dolar işareti olacak, bunu önceki derslerde görmüştük).

Açıklanan __get yöntemini yapalım:

<?php class Test { private $prop1 = 1; private $prop2 = 2; public function __get($property) { return $this->$property; } } ?>

Özellikleri okumak için onu kullanalım:

<?php $test = new Test; echo $test->prop1; // 1 yazdırır echo $test->prop2; // 2 yazdırır ?>

Bir özelliğe bir şey yazma girişimi hataya yol açacaktır:

<?php $test = new Test; $test->prop1 = 2; // hata verecek ?>

Bu tam olarak ihtiyacımız olan şey: bir özellik okunabilir ama yazılamaz.

Var olmayan bir özelliği okuma girişimi hata verecektir:

<?php $test = new Test; echo $test->prop3; // hata verecek ?>

Ayrıca şu nüansa dikkat edin: Özellikleri salt okunur yapmanın eski yolunu yaptığımızda, özelliği okumak için bir getter yöntemi kullanıyorduk.

Yeni yöntemde, sanki public'lermiş gibi tam olarak özelliklere erişeceğiz. Ama onlara sanki private'larmış gibi yazamayacağız.

User adında, özellikleri sadece getter'lar kullanılarak salt okunur olan bir sınıf verilsin:

<?php class User { private $name; private $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function getName() { return $this->name; } public function getAge() { return $this->age; } } ?>

Bu sınıfın kodunu, getter'lar yerine sihirli __get yönteminin kullanılacak şekilde değiştirin.

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