kiedy używać plików dołączania (inc) w rozwoju modułu

10

Myślę, że rozumiem różnice strukturalne pliku .inc (w porównaniu z .modułem), ale czy ktoś mógłby opisać różnice w projekcie? Widzę przykładowe moduły drupal wywołujące plik .inc z hook_menu lub widzę wywołanie pliku .inc dla definicji funkcji.

  • W jakich okolicznościach należy umieścić kod w pliku .inc? Jakieś ogólne wytyczne projektowe, których niektórzy przestrzegają?
  • Czy jest jakaś korzyść inna niż jasność co do tego, dlaczego należy użyć (lub wielu) plików .inc? występ? wersjonowanie?

dzięki!

Joe
źródło
1
Moim zdaniem nie można uzyskać lepszego wyjaśnienia niż zaakceptowana odpowiedź na to pytanie :)
Clive
3
osobiście, jeśli mam mod, który obsługuje wiele adresów URL lub cokolwiek innego, używam .incjednego adresu URL. chyba tylko organizację zamiast zrzucania losowych funkcji do jednego dużego .modulepliku. ale jako odniesienia do postów @ Clive, to naprawdę tylko osobiste zdanie lub to, do czego jesteś przyzwyczajony. tutaj nie ma dobra ani zła.
au_stan
1
faktycznie użyłem modulename.preprocess.inc, modulename.node.inc, modulename.menu.inc itp., aby rozbić duże moduły na rozsądne porcje powiązanych funkcji, ale to jedyny prawdziwy powód z jakiegokolwiek punktu widzenia wydajności, aby używać ich poza programowaniem organizacja jest prawdopodobnie, jeśli twój moduł ma jakieś dość duże funkcje, które są rzadko nazywane, że nie chcesz, aby twój silnik php analizował za każdym razem, gdy jest ładowany. w razie potrzeby możesz je przynieść, podobnie jak w przypadku wywołań zwrotnych menu.
Jimajamma
Dla tego, co warto, pogrupowałem moje implementacje przechwytujące i funkcje pomocnicze i kategoryzowałem ich bloki dokumentów za pomocą odpowiedniej konwencji nazewnictwa (w KAPITALE). Kiedy przewijam kod mojego modułu, widzę rozdzielenie między różnymi grupami funkcji. Przejrzałem standardy komentowania, aby zobaczyć, czy system już istnieje, ale mogłem go zobaczyć.
dbj44

Odpowiedzi:

12

Zasadniczo umieszczałbym w pliku modułu kod, który jest wymagany częściej (np. Funkcje pomocnicze używane z więcej niż jednej funkcji), aw plikach .inc kod, który nie jest używany tak często lub jest używany do określonych strony.

Od Drupala 6 kod automatycznie ładuje pliki zawierające wywołania zwrotne strony lub konstruktory formularzy używane dla elementów menu. Z tego powodu wywołania zwrotne stron dla stron administracyjnych są zwykle umieszczane w plikach .admin.inc, podczas gdy wywołania zwrotne stron dla normalnych stron są umieszczane w plikach .pages.inc.

Od Drupala 7 pliki zawierające klasy są automatycznie ładowane po utworzeniu instancji klasy. Drupal 7 pozwala modułom definiować, w których plikach są zdefiniowane ich hooki (poprzez hook_hook_info () ). Na przykład, system_hook_info () określa pliki .tokens.inc jak pliki gdzie hook_token_info(), hook_token_info_alter(), hook_tokens(), a hook_tokens_alter()implementacje mogą być znalezione; w ten sposób pliki są ładowane automatycznie, gdy wymagany jest jeden z tych haków.
Pozwala to na dalsze dzielenie kodu na pliki, które są ładowane, gdy jest to konieczne, i kod, który jest zawsze ładowany z Drupala.

kiamlaluno
źródło