PHPPamokos.lt


3. Savybės (properties) ir $this

Klasės gali turėti ne tik funkcijas, bet ir kintamuosius. Jie taip pat turi savo specifinį pavadinimą - primenu, kad funkcijos klasės viduje vadinamos metodais ("methods"), na o kintamieji vadinami savybėmis ("properties"). Tai yra paprasti kintamieji, jie klasėje apibrėžami su žodeliu var.

class Users { var $name; var $surname; var $email; function getAll() { ... } }

Kaip taisyklė, savybių apibrėžimas klasėje eina prieš metodus. Tiesiog išvardinamos visos savybės, o po to jau pereinama prie metodų. Savybėms pradžioje nereikia priskyrinėti jokių reikšmių - čia mes tiesiog apibrėžiame, kad tokia savybė šioje klasėje egzistuoja. O naudosime ją su reikšmėmis - jau iš objekto, lygiai taip pat kaip ir metodus su simboliais ->

class Users { var $name; var $surname; var $email; function getAll() { ... } } $user = new Users; $user->name = 'Jonas'; $user->surname = 'Petraitis';

Čia svarbus dalykas, kuris iš esmės paaiškins dar vieną OOP privalumą - tą pačią klasę galite naudoti kelis kartus, kurdami kelis skirtingus objektus ir dirbdami su kiekvienu iš jų atskirai:

$user1 = new Users; $user1->name = 'Jonas'; $user1->surname = 'Petraitis'; $user2 = new Users; $user2->name = 'Petras'; $user2->surname = 'Jonaitis';

Kintamasis $this

Labai svarbus ir dažnai naudojamas dalykas - tų pačių metodų ir savybių naudojimas pačios klasės viduje. Kitaip tariant, mes sukuriame klasės objektą, kviečiame funkciją, o ta jau savo ruožtu tvarkosi klasės viduje, mums net nesigilinant į vidinę klasės logiką. Tai tam, kad klasė naudotų jos pačios viduje sukurtas struktūras, naudojamas kintamasis $this:

class Users { var $db_table; function getAll() { $this->db_table = 'users'; } function echoAll() { echo $this->getAll(); } }

Kaip matote, $this gali būti naudojama tiek savybėms, tiek metodams. Iš esmės, tame ir yra vienas iš objektinio programavimo tikslų - turime visą logiką patikėti pačiai klasei ir jos metodams/savybėms, o mes iš išorės tik pasakytume klasei "padaryk kažką". Tad šiuo atveju $this - labai svarbus dalykas, ir kaip matysite ateityje - jis naudojamas nuolatos.

Atkreipkite dėmesį, kad $this reiškia pačią klasę, jis nėra pasiekiamas iš už klasės ribų. Tad jei parašysite kažką panašaus, gausite klaidą:

$user = new Users; $this->name = 'Jonas';

Šiuo atveju PHP net nežinos, kas yra $this - nebent tas veiksmas būtų atliekamas kažkokios kitos klasės viduje.

Konstantos

Jums turbūt pažįstamos PHP kalbos konstantos, kurios sukuriamos su žodžiu const. Tai yra kintamieji, kurie iš principo niekada nesikeičia, bet juos apsimoka kurti kaip konstantas, kad galima būtų N kartų panaudoti skripto eigoje. Tai lygiai tokia pati logika yra ir objektiniame programavime - klasė gali turėti savo vidinių konstantų, naudojamų klasių viduje.

class Math { const PI = 3.14; function echoPi() { echo self::PI; } }

Kaip matote, yra skirtumas kaip konstantos yra naudojamos. Joms nebegalima rašyti $this, nes jos nėra kaip kintamieji. Kreipinys į konstantą klasės viduje atliekamas su self::XXXXX kur XXXXX yra konstantos pavadinimas. Taip pat veiks ir kreipinys su klasės pavadinimu: Math::PI. Taip nejučia mes palietėme statinių atributų ir metodų panaudojimą su dviem dvitaškiais :: bet plačiau apie juos kalbėsime ateities pamokose.

Šioje pamokoje pirmą kartą šiame kurse gausite spręsti testą - jis bus iš trijų pirmųjų pamokų. Tai tokią tradiciją ir turėsime - testas kas kelias pamokas, kai susikaups pakankamai informacijos. Sėkmės sprendžiant, tikiuosi vien dešimtukų!



(c) 2015-2018. Visais klausimais kreipkitės povilas@laraveldaily.com