Loader i autoloader plików

Autoloader jest mechanizmem, który ułatwia wczytywanie plików i klas. Został on tak zaprojektowany aby ułatwić budowanie nowych modułów, dzięki autoloaderowi nie musimy każdorazowo wczytywać tych samych plików aby działał moduł. W rzeczywistości służy on tylko do tego, aby nie wpisywać na sztywno ścieżek do określonych plików. Gdy tworzymy nazwę klasy zgodnie z zasadami poniżej, to nasz Autoloader przed utworzeniem obiektu/klasy załaduje odpowiedni pliku. Dodatkowo w systemie istnieje mechanizm zwany "Loader" czyli odpowiedzialny za ładowanie odpowiedniego pliku.
Poniżej kilka ważnych zasad dotyczących "Autoloadera":
  1. Domyślnie "Autoloader" działa tylko w obrębie katalogu modułu, np. "modules/MyModule/".
  2. Nazwa modułu, pliku i katalogów w module nie może zawierać znaku "_".
  3. Aby załadował on plik, należy wywołać klasę, która ma odpowiednio zbudowaną nazwę:
    • Przykład A:
      • nazwa klasy: MyModule_xyz_Model
      • ładowany plik: modules/MyModule/models/xyz.php
    • Przykład B:
      • nazwa klasy: MyModules_helper_ComponentName_Lib
      • ładowany plik: modules/myModule/helper/libs/ComponentName.php
  4. Aby "Autoloader" działał to nazwy katalogów, w którym są pliki - do których się odwołujemy - muszą być zakończone na "s", a człony nazw klasy muszą być bez litery "s"
    • Przykład:
      • modules/ModuleName/actions/ComponentName.php - ModuleName_ComponentName_Action
      • modules/ModuleName/models/ComponentName.php - ModuleName_ComponentName_Model
      • modules/ModuleName/uitypes/ComponentName.php - ModuleName_ComponentName_Uitype
      • modules/Contacts/helper/libs/ComponentName.php - Contacts_helper_ComponentName_Lib
Oprócz działania "Autoloadera" w systemie mamy "Loadera", który odpowiada za ładowanie plików. Znając zasady jego działania, możemy nadpisywać pewne pliki systemowe nie zmieniając plików silnika, dlatego poniżej prezentujemy pewne jego możliwości:
Mechanizm opisany poniżej działa dopiero od wersji YetiForce 2.1:
Aktualnie Loader pozwala na nadpisanie dowolnego pliku systemowego wystarczy, że w głównym katalogu CRM dodamy folder o nazwie custom, a następnie podamy pełną ścieżkę do pliku np. custom/modules/Accounts/Accounts.php to system załaduje nasz plik Accounts.php zamiast pliku oryginalnego. Niestety obecnie rozwiązanie to działa tylko dla modułów, ale docelowo system pozwoli na globalną zmianę plików systemowych. Lista katalogów możliwych do nadpisania:
  • modules/ModuleName/...  >>    custom/modules/ModuleName/...
  • languages/...   >>   custom/languages/...
  • layouts/vlayout/modules/...   >>   custom/layouts/vlayout/modules/...
W przypadku plików językowych mechanizm nadpisywania działa inaczej, wystarczy utworzyć pusty plik językowy i dodać tam tylko te tłumaczenia, które chcemy nadpisać (bez konieczności dublowania całego pliku językowego).
  • Thursday, 10 August 2017