⊗ppOpMgSP 91 of 107 menu

თვისებების ჩაწერა მაგიით OOP-ში PHP-ში

მაგიური მეთოდი __set იძახება არაარსებული ან დაფარული თვისების მნიშვნელობის შეცვლის მცდელობისას. პარამეტრებად ის იღებს თვისების სახელს და მნიშვნელობას, რომლის მინიჭებაც ცდილობენ მას.

შევხედოთ პრაქტიკულ მაგალითს. დავუშვათ, გვაქვს მოცემული Test კლასი:

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

მოდით, ამ კლასში გავაკეთოთ მაგიური მეთოდი __set, რომელიც ფუნქციის var_dump დახმარებით გამოიტანს თვისების სახელს, რომელზეც მოხდა მიმართვა, და მნიშვნელობას, რომლის მინიჭებაც ცდილობენ ამ თვისებას:

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

შევამოწმოთ ჩვენი კლასის მუშაობა:

<?php $test = new Test; $test->prop = 'value'; // __set მეთოდის var_dump გამოიტანს 'prop value' ?>

ახლა მოდით, დავიწყოთ მნიშვნელობის მინიჭება თვისებას, რომლის სახელიც ინახება ცვლადში $property:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; // ვანიჭებთ მნიშვნელობას } } ?>

ახლა ჩვენ შევძლებთ პრივატულ თვისებებში ჩაწერას კლასის გარედან:

<?php $test = new Test; $test->prop1 = 1; // ჩაიწერება 1 $test->prop2 = 2; // ჩაიწერება 2 ?>

ჩაწერა შეგვიძლია, თუმცა, იმის შემოწმება, ჩაიწერა თუ არა იქ რამე - არა, რადგან თვისებები პრივატულია.

შესაძლებელია ამ თვისებებისთვის გეთერის გაკეთება ან უბრალოდ მაგიური მეთოდის __get გამოყენება. გამოვიყენოთ მეორე ვარიანტი:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; } // თვისებების მაგიური გეთერი: public function __get($property) { return $this->$property; } } ?>

ახლა ჩვენ შეგვიძლია შევამოწმოთ ჩვენი კლასის მუშაობა. შევამოწმოთ:

<?php $test = new Test; $test->prop1 = 1; // ჩაიწერება 1 $test->prop2 = 2; // ჩაიწერება 2 echo $test->prop1; // გამოიტანს 1 echo $test->prop2; // გამოიტანს 2 ?>

სინამდვილეში, რა თქმა უნდა, არ ღირს ყველას ნება დავურთოთ პრივატულ თვისებებში ჩაწერას, წინააღმდეგ შემთხვევაში კარგავს აზრს ამ პრივატული თვისებების არსებობამ (უფრო ადვილია მათი პუბლიკურად გამოცხადება და დასრულება).

ამიტომ, ამ მეთოდის გამოყენება მხოლოდ მაშინ უნდა მოხდეს, როდესაც ამაში რეალური აუცილებლობა არსებობს. შემდეგ გაკვეთილებზე ჩვენ კიდევ განვიხილავთ წარმატებული გამოყენების მაგალითებს.

azbydeenesfrkakkptruuz