⊗ppOpIhOI 36 of 107 menu

ოპერატორი instanceof და მემკვიდრეობა OOP-ში PHP-ში

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

<?php // მშობელი კლასი: class ParentClass { } // შვილობილი კლასი: class ChildClass extends ParentClass { } ?>

შევქმნათ შვილობილი კლასის ობიექტი:

<?php $obj = new ChildClass; ?>

ახლა შევამოწმოთ instanceof-ის დახმარებით, ეკუთვნის თუ არა ჩვენი ობიექტი კლასს ParentClass და კლასს ChildClass:

<?php var_dump($obj instanceof ChildClass); // გამოიტანს true-ს var_dump($obj instanceof ParentClass); // ასევე გამოიტანს true-ს ?>

როგორც მაგალითიდან ხედავთ - ოპერატორი instanceof არ აკეთებს განსხვავებას შემოწმებისას მშობელ და შვილობილ კლასებს შორის.

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

<?php $obj = new ParentClass; // მშობელი კლასის ობიექტი var_dump($obj instanceof ParentClass); // გამოიტანს true-ს var_dump($obj instanceof ChildClass); // გამოიტანს false-ს ?>

შექმენით კლასი User პუბლიკური თვისებებით name და surname.

შექმენით კლასი Employee, რომელიც მემკვიდრეობით მიიღებს კლასს User და დაამატებს თვისებას salary.

შექმენით კლასი City პუბლიკური თვისებებით name და population.

შექმენით 3 ობიექტი კლასის User, 3 ობიექტი კლასის Employee, 3 ობიექტი კლასის City, და თვითნებური თანმიმდევრობით ჩაწერეთ ისინი მასივში $arr.

გადაუარეთ ციკლით მასივს $arr და გამოიტანეთ ეკრანზე თვისება name-ის სვეტი იმ ობიექტებისა, რომლებიც ეკუთვნის კლასს User ან ამ კლასის შთამომავალს.

გადაუარეთ ციკლით მასივს $arr და გამოიტანეთ ეკრანზე თვისება name-ის სვეტი იმ ობიექტებისა, რომლებიც არ ეკუთვნის კლასს User ან ამ კლასის შთამომავალს.

გადაუარეთ ციკლით მასივს $arr და გამოიტანეთ ეკრანზე თვისება name-ის სვეტი იმ ობიექტებისა, რომლებიც ეკუთვნის ზუსტად კლასს User, ანუ არა კლასს City და არა კლასს Employee.

ქართული
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語Қазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა