⊗ppOpMgSP 91 of 107 menu

Ominaisuuksien kirjoittaminen taikuudella OOP:ssa PHP:ssä

Taikamenetelmä __set kutsutaan kun yritetään muuttaa olematoman tai piilotetun ominaisuuden arvoa. Parametreina se saa vastaanottaa ominaisuuden nimen ja arvon, joka sille yritetään antaa.

Katsotaan käytännön esimerkkiä. Olkoon meillä annettu tällainen luokka Test:

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

Tehdään tähän luokkaan taikamenetelmä __set, joka funktion var_dump avulla tulostaa ominaisuuden nimen, johon käännyttiin, ja arvon, joka sille yritetään asettaa:

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

Testataan luokkamme toimintaa:

<?php $test = new Test; $test->prop = 'value'; // __set-metodin var_dump tulostaa 'prop value' ?>

Aloitetaan nyt arvon asettaminen ominaisuudelle, jonka nimi tallennetaan muuttujaan $property:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; // asetetaan arvo } } ?>

Nyt voimme kirjoittaa yksityisiin ominaisuuksiin luokan ulkopuolelta:

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

Kirjoittaa voimme, mutta tarkistaa, kirjoittuiko sinne jotain - ei, koska ominaisuudet ovat yksityisiä.

Voimme tehdä getterin näille ominaisuuksille tai käyttää taikamenetelmää __get. Käytetään toista vaihtoehtoa:

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

Vasta nyt voimme tarkistaa luokkamme toiminnan. Tarkistetaan:

<?php $test = new Test; $test->prop1 = 1; // kirjoitetaan 1 $test->prop2 = 2; // kirjoitetaan 2 echo $test->prop1; // tulostaa 1 echo $test->prop2; // tulostaa 2 ?>

Todellisuudessa ei tietenkään pidä sallia kaikkien kirjoittaa yksityisiin ominaisuuksiin, muuten menetetään näiden yksityisten ominaisuuksien merkitys (on helpompi tehdä ne julkisiksi ja siinä kaikki).

Siksi tätä menetelmää tulisi käyttää vain silloin, kun siitä todella on tarvetta. Seuraavissa oppitunneissa tarkastelemme vielä esimerkkejä onnistuneesta soveltamisesta.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää