Możesz podzielić swój kod na moduły w cakePHP

Szybki trick dla dużych projektów: używaj podkatalogów.

Pisząc rozbudowaną aplikację możesz podzielić kod na moduły:

controllers/module/module_things_controller.php
class ModuleThingsController extends AppController {
}
models/module/module_thing.php
class ModuleThing extends AppModel{
}

(Moduły uznałbym za coś pośredniego między kupą kontrolerów, a pluginami. Nie wymagają mocniejszego rozdzielenia zależności między kontrolerami w przeciwieństwie do pluginów, dla których jest to dobrą praktyką. Z drugiej strony wprowadzają nieco porządku w plikach źródłowych)

Od razu rzuca się w oczy fakt powtarzania nazwy modułu w katalogu i nazwie pliku (oraz w definicji klasy). Wynika to po pierwsze z konieczności jednoznacznego nazywania klas w ramach jednego projektu. Po drugie, jeśli istnieją dwa pliki od tej samej nazwie i definicji klasy (ale jeden w podkatalogu) to domyślnie będzie używany ten z katalogu głównego.

Tak czy siak warto wprowadzić nieco porządku do swoich projektów. Można to zrobić nawet z marszu – po prostu przenieść pliki do podkatalogów (jednak należy pamiętać o tym co może się wydarzać, gdy przez przypadek zdefiniujemy dwa kontrolery o takiej samej nazwie w różnych podkatalogach.)

Niestety w widokach nie udało mi się jeszcze w ten sposób wykorzystać podkatalogów. Dlatego w naszym przykładzie widoki należy umieścić w

/views/module_things/

Jednak już w ramach tego katalogu można zadbać o większy porządek:
/views/module_things/forms/add_edit_form.ctp
i explicite wywoływać dany widok:

class ModuleThingsController extends AppController {
 //...
 function add(){
   //...
   $this->render("forms/add_edit_form");
 }
}
Share Button

Leave a Reply

Your email address will not be published. Required fields are marked *