⊗ppOpNsCA 107 of 107 menu

კლასების ავტომატური ჩატვირთვის საკუთარი ფუნქცია OOP-ში PHP-ში

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

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

<?php spl_autoload_register(function($class) { // $class ცვლადში იქნება კლასის სახელი ნეიმსფეისთან ერთად }); ?>

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

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

ანუ, თუ ჩვენ გვაქვს კლასი Core\Admin\PageController, მისი მდებარეობა უნდა იყოს Core/Admin/PageController.php.

როგორც ხედავთ, კლასის სახელის ნეიმსფეისთან ერთად გადასაყვანად საჭიროა მხოლოდ შევცვალოთ უკუდახრილი ხაზები პირდაპირი ხაზებით, ხოლო კლასის სახელს დავუმატოთ .php. მოდით, გავაკეთოთ ეს:

<?php spl_autoload_register(function($class) { $filename = str_replace('\\', '/', $class) . '.php'; require($filename); }); ?>

თუმცა, ჩვენ მივიღებთ ფაილის ფარდობით მდებარეობას (საიტის ფესვთან მიმართებაში). უკეთესი იქნება შევქმნათ აბსოლუტური მდებარეობა, ასე:

<?php spl_autoload_register(function($class) { $root = $_SERVER['DOCUMENT_ROOT']; $filename = $root . '/' . str_replace('\\', '/', $class) . '.php'; require($filename); }); ?>

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

<?php spl_autoload_register(function($class) { $root = $_SERVER['DOCUMENT_ROOT']; $ds = DIRECTORY_SEPARATOR; $filename = $root . $ds . str_replace('\\', $ds, $class) . '.php'; require($filename); }); ?>

გატესტეთ ჩემ მიერ შექმნილი ავტომატური ჩატვირთვის ფუნქცია.

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

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