⊗ppOpNsAu 105 of 107 menu

კლასების ავტოიტვირთვა OOP-ში PHP-ში

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

ამგვარი პრობლემის გადასაჭრელად PHP-ში დაემატა კლასების ავტოიტვირთვა. ავტოიტვირთვა აძლევს PHP-ს საშუალებას ავტომატურად ჩატვირთოს ფაილი კლასთან ერთად, როდესაც კოდში მიმდინარეობს მიმართვა ამ კლასთან. თუმცა, უბრალოდ ასე კლასები არ ჩაიტვირთება - ისინი უნდა განთავსდეს საიტის საქაღალდეებში სპეციალური გზით, რომელიმე შეთანხმებას მიჰყვებიან ფაილების და კლასების საქაღალდეების სახელების შესახებ. შესაძლებელია გამოვიყენოთ PHP-ში ჩაშენებული შეთანხმება, ან თავად გამოვიგონოთ ჩვენი და გამოვიყენოთ ის.

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

შევხედოთ მაგალითს. დავუშვათ, ჩვენ გვაქვს შემდეგი კლასი:

<?php namespace Core\Admin; class PageController { } ?>

შეთანხმების მიხედვით, ეს კლასი უნდა განთავსდეს საქაღალდეში /core/admin/, ფაილში pagecontroller.php.

ახლა კი ფაილში index.php გამოვიყენოთ ჩვენი კლასი, მისი require-ის მეშვეობით დაკავშირების გარეშე, არამედ ავტოიტვირთვის გამოყენებით. ამისათვის ფაილის დასაწყისში, სადაც იწვევენ კლასებს, უნდა გამოვიძახოთ ფუნქცია spl_autoload_register. გავაკეთოთ ეს:

<?php spl_autoload_register(); // ვააქტიურებთ ავტოიტვირთვას $obj = new Core\Admin\PageController; // მშვიდად ვქმნით ობიექტს ?>

ფაილში index.php ჩართეთ კლასების ავტომატური იტვირთვა. საქაღალდეების და ფაილების სახელების შესახებ შეთანხმებას მიყოლებით გახადეთ კლასი Core\User, კლასი Core\Admin\Controller და კლასი Project\User\Data. ფაილში index.php შექმენით ამ კლასების ობიექტები.

ქართული
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
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა