⊗ppOpIhPPP 33 of 107 menu

PHP OOP-da meriýetde hususy aýratynlyklaryň meseleleri

Hususy aýratynlyklaryň meriýet edilmeýändigi, gözlänilmedik bir meselä getirip biler. Mysal üçin ser edeliň. Bizde şeýle ata klas bolsun, onuň hususy aýratynlygy bar:

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

Çaga klasda biz ýaşy bir birlik artdyrýan bir usul ýasamak isleýändigimizi farz edeliň. Şonda, atanyň hususy aýratynlygyny üýtgetmek synanyşygy näsazlyk getirer:

<?php class Student extends User { public function incAge() { $this->age++; // näsazlyk } } ?>

Eger çaga klasda hususy aýratynlyk $age hödürlenilse, näsazlyk ýitip bolar:

<?php class Student extends User { private $age; public function incAge() { $this->age++; } } ?>

Şu ýerde bize kepillik garaşýar! Aslynda biz iki sany hususy aýratynlyk döretdik: biri atada we beýlekisi çagada. We olar doly özbaşdak işleýärler. Bu ýagdaý, atanyň usullary öz aýratynlygyny üýtgeder, ýöne çaganyň usullary - özüňkini.

Bu meseläniň, aslynda, çözgüdi bar. Diňe hususy aýratynlyklary atanyň usullary arkaly dolandyrmaly. Kodymyzy şu esasda ýazalyň:

<?php class Student extends User { public function incAge() { $age = $this->getAge(); $age++; $this->setAge($age); } } ?>

Ýönekeýleşdirip bolýar:

<?php class Student extends User { public function incAge() { $this->setAge($this->getAge() + 1); } } ?>

Aşakdaky koda çaga klasda atanyň usuly çalşyrylýar. Bu kodda ýüze çykan meseleleri düzediň:

<?php class User { private $name; public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } } class Employee extends User { public function setName($name) { if (strlen($name) > 0) { $this->name = $name; // näsazlyk } } } ?>
Türkmen
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkçeЎзбекOʻzbekTiếng Việt
Biz sahypanyň işlemegi, analitika we şahsyýetleşdirmek üçin cookie ulanýarys. Maglumatlaryň işlenişi Gizlinlik syýasaty boýunça amala aşyrylýar.
hemmesini kabul et sazlamak ret et