⊗ppOpNsAu 105 of 107 menu

Դասերի ավտոմատ բեռնումը OOP-ում PHP-ում

Դուք արդեն գիտեք, որ որևէ դաս օգտագործելու համար մենք պետք է միացնենք այն require-ի միջոցով: Երբ նախագծում կան շատ դասեր, ապա ստացվում են բազմաթիվ միացումներ, որոնք շատ անհարմար է գրել և դժվար է վերահսկել:

Նման խնդիրը լուծելու համար PHP-ին ավելացվել է դասերի ավտոմատ բեռնում: Ավտոմատ բեռնումը թույլ է տալիս PHP-ին ավտոմատ կերպով բեռնել ֆայլը դասի հետ, երբ կոդում փորձ է արվում դիմել այդ դասին: Սակայն, պարզապես այդպես դասերը չեն բեռնվի - դրանք անհրաժեշտ է տեղադրել կայքի պանակներում հատուկ կերպով, հետևելով ինչ-որ պայմանավորվածության՝ ֆայլերի և դասերի պանակների անունների վերաբերյալ: Կարող եք օգտագործել PHP-ի ներկառուցված պայմանավորվածությունը, կամ հորինել ձեր սեփականը և օգտագործել այն:

Եկեք սկսենք PHP-ի ստանդարտ պայմանավորվածությունից: Այս պայմանավորվածությունը կայանում է նրանում, որ եթե մենք ունենք որոշակի ֆայլ դասով, ապա կայքի պանակներով այդ ֆայլի ուղին պետք է համընկնի ֆայլի namespace-ի հետ, իսկ ֆայլի անունը պետք է համընկնի դրա մեջ պահվող դասի անվան հետ: Միևնույն ժամանակ, պանակների և ֆայլի անունները պետք է լինեն ստորին ռեգիստրում:

Տեսնենք օրինակով: Ենթադրենք, մենք ունենք հետևյալ դասը:

<?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हिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել