Automatikus kapcsolódás modulok Bitrix
Mint ismeretes, a fejlesztését a Bitrix Framework programozó kell vigyázni összekötő modulok az eljáráshoz szükséges CModule :: IncludeModule. És közli a szükséges modulokat, ahol van hivatkozás a api ezek a modulok. Minden alkatrész sablon script függvény módszer.
És mi a probléma?
A kisebb projektek, akkor nem jelentenek semmilyen nehézséget, de egy viszonylag nagy volumenű projektek lehetnek a szájszárazság még a szerény programozó.
Íme egy egyszerű szemléltető példa, bár nem túl szabvány:
Itt azt látjuk, hogy a két funkciót kap az API információs blokk listák szakaszok. Nem tudjuk előre, hogy milyen sorrendben ezek a funkciók fogják hívni, és még lehet nevezni ezt a találatot. Ezért szükséges, hogy használja CModule :: IncludeModule mindegyikre. Ez vezet a felesleges teher tervez kód rontja az olvashatóság. Igen, és mindig meg kell győződnie arról, hogy az összes modul csatlakoztatva. Mindez létrehoz, bár kicsi, de még mindig kényelmetlen tervezésekor, megnehezíti a követési kódot. Ez különösen fontos a nagy projektek.
könnyű elfelejteni
CModule :: IncludeModule annál kellemetlenebb az a tény, hogy meg kell használni könnyű elfelejteni. Az a tény, hogy ez nem mindig szükséges a normális működését a kódot, és a kód van itt az ideje, hogy működik nélküle is.
Ez lehetséges például, amikor még a kód végrehajtása komponenst, amely összeköti a kívánt modul. Ebben az esetben a kód jól működik, függetlenül attól, hogy CModule :: IncludeModule. De mi történik akkor, ha a rendszergazda kívánja tiltani ezt az összetevőt? Rendesen, végzetes hiba.
Lehet, hogy valaki állandó kihívást CModule :: IncludeModule nem jelent semmilyen nehézséget, de mi az, hogy kézzel végezni, hogy lehet, hogy automatikusan elindul. Különösen azért, mert az auto-connect modul végrehajtása csak néhány sornyi kódot:
Írja be a kódot, például init.php és manuálisan csatlakozhat a modulokat lehet elfelejteni egyszer és mindenkorra.
A probléma jelzi, megoldást nem találnak. További lesz egy csomó levél arról, hogyan működik.
Hogyan működik ez?
A Bitrix létesítő autoloader osztályok, amelyek alapján működik az osztály kártyát. Ez a térkép által alkotott összekötő modulokat. Amikor csatlakozik minden modul regisztrálja az osztályok a térkép osztály betöltője.
Ennek megfelelően, ha a készülék nem csatlakozik, a autoloader Bitrix semmit sem tud az óráit, és nem lenne képes csatlakozni őket, ha szükséges. Ennek eredményeként, azt látjuk, egy végzetes hiba, ha az általunk használt osztály anélkül, hogy csatlakoztassa a modult.
A megoldás lényege az, hogy regisztrálja a verem autoloaders más kezelő. Controls akár ez a processzor lesz akár csak ha a modul nincs csatlakoztatva. A felvezető a következő funkciókat:
- Meghatározás vonatkozik minden egység a kívánt osztály
- Csatlakozó ezt a modult
- Az irányítás átadása autoloader Bitrix
Kié ez az osztály?
autoloader modulok meg kell határoznia, hogy melyik modul osztály tartozik. A fenti példában használjuk ebben az osztályban térkép, ahol az előírt osztályok megfelelő modulokat. Ez a legegyszerűbb megoldás. Térkép statikus, hogy van varrva a kódot. Her kell fenntartani naprakész, manuálisan hozzáfűzni az új osztályok, ami nem túl kényelmes.
Tény, hogy ez az osztály térkép, bár más formában, még mindig jelen van benne bitriksovogo betöltője. Lehet, hogy van egy módja annak, hogy távolítsa el, például útján Reflection. Ebben az esetben nem kell kézzel fenntartani térképet osztályok eltűnik.
De mi a helyzet a funkciókat?
A funkciót a span. A PHP funkciók nem mechanizmust indításkor. Tehát, ha szeretné használni, például fakadó funkciót. majd csatlakoztassa a pre-kereső modul keresést.
Most azt javaslom, hogy nézd madártávlatból, hogy hogyan működik az automatikus osztálybetöltést meghatározott autoloader modulokat.
Tegyük fel, hogy még mindig nem csatlakozik a modulhoz blokkban, próbáljuk ki a következő kódot:
- CIBlockElement osztály még nem jelentették be, és a PHP hozzárendel egy megtisztelő kötelessége, hogy megtalálják, és csatlakozzon az első osztályú a hiányzó kezelőt a startup verem. Ez a autoloader Bitrix.
- Autoloader Bitrix próbál sikertelenül találni CIBlockElement, elveszíti bizalmát a PHP.
- PHP, hogy orvosolja a helyzetet, a felvezető átadja a vezérlést a következő, azaz a autoloader modulokat.
- autoloader modul megállapítja, hogy CIBlockElement tartozik iblock modul és összeköti a modul, majd átadja a vezérlést az autoloader Bitrix.
- Autoloader Bitrix, nem hitt a szerencséjének, megállapítja CIBlockElement osztályt az térképen osztályok és végül, csatlakoztassa.
- Profit!
Így a kézmozdulat, mi mentettük meg magát a másik rutin munka, és a fejlesztési folyamat a Bitrix kicsit szebb.