⊗ppOpMgGP 88 of 107 menu

თვისებების მიღება მაგიის მეშვეობით OOP-ში PHP-ში

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

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

ამ შემთხვევაში PHP ავტომატურად გადასცემს მოთხოვნილი თვისების სახელს ამ მეთოდის პირველ პარამეტრში, ხოლო ამ მეთოდის მიერ დაბრუნებული მნიშვნელობა აღიქმება როგორც იმ თვისების მნიშვნელობა, რომელთანაც მოხდა მიმართვა.

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

<?php class Test { public $prop1 = 1; // პუბლიკური თვისება private $prop2 = 2; // პრივატული თვისება } ?>

მოდით დავამატოთ ჩვენს კლასში მაგიური მეთოდი __get, რომელიც თავიდან უბრალოდ დააბრუნებს იმ თვისების სახელს, რომელთანაც მოხდა მიმართვა:

<?php class Test { public $prop1 = 1; private $prop2 = 2; public function __get($property) { return $property; // უბრალოდ დავაბრუნოთ თვისების სახელი } } ?>

მოდით შევამოწმოთ შექმნილი მაგიური მეთოდის მუშაობა. მივმართოთ სამი ტიპის თვისებას: პუბლიკურ თვისებას, პრივატულს და არაარსებულს:

<?php $test = new Test; // მივმართოთ პუბლიკურ თვისებას: echo $test->prop1; // გამოიტანს 1 - ანუ თვისების მნიშვნელობას // მივმართოთ პრივატულ თვისებას: echo $test->prop2; // გამოიტანს 'prop2' - თვისების სახელი // მივმართოთ არაარსებულ თვისებას: echo $test->prop3; // გამოიტანს 'prop3' - თვისების სახელი ?>

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

azbydeenesfrkakkptruuz