Rozszerzanie Yii ================ Rozszerzanie Yii jest powszednią czynnością podczas dewelopmentu. Na przykład, gdy piszesz nowy kontroler, rozszerzasz Yii poprzez dziedziczenie po klasie jego [CController]; gdy piszesz nowy widżet, dziedziczysz po [CWidget] lub istniejącej klasie widżetu. Jeśli rozszerzony kod jest przeznaczony do ponownego użycia przez innych deweloperów, nazywamy go *rozszerzeniem* (ang. extension). Rozszerzenie zazwyczaj służy jednemu celu. W nazewnictwie Yii, można to sklasyfikować następująco: * [komponent aplikacji](/doc/guide/basics.application#application-component) * [zachowanie](/doc/guide/basics.component#component-behavior) * [widżet](/doc/guide/basics.view#widget) * [kontroler](/doc/guide/basics.controller) * [akcja](/doc/guide/basics.controller#action) * [filtr](/doc/guide/basics.controller#filter) * [komenda konsoli](/doc/guide/topics.console) * walidator: jest komponentem dziedziczącym po klasie [CValidator]. * helper: jest klasą zwierającą wyłącznie metody statyczne. Wygląda on jakby globalne funkcje, używały klasy jako swojej przestrzeni nazw. * [moduł](/doc/guide/basics.module): jest samowystarczającą jednostką aplikacji, która składa się z [modeli](/doc/guide/basics.model), [widoków](/doc/guide/basics.view), [kontrolerów](/doc/guide/basics.controller) oraz innych komponentów wspierających. W wielu aspektach, moduł jest podobny do [aplikacji](/doc/guide/basics.application). Główną różnicą jest to, że moduł znajduje się wewnątrz aplikacji. Na przykład, możemy mieć moduł, który dostarcza funkcjonalności zarządzania użytkownikami. Rozszerzenie może być również komponentem, który nie należy do żadnej z wyżej wymienionych kategorii. W rzeczy samej, framework Yii jest starannie zaprojektowany, tak że niemal każda jego część kodu może być rozszerzona oraz dostosowana do indywidualnych potrzeb.