Разработвам CakePHP приложение, което ще предоставим като бял етикет за хората, които да внедрят за собствените си компании, и те ще трябва да имат определени възможности за персонализиране за себе си.
Като за начало, те ще могат да правят всичко, което искат с изгледите, и могат да добавят свои собствени контролери/модели, ако трябва да добавят напълно нови неща. Все пак бих посъветвал да не докосвате моите контролери и модели, за да улесните надграждането на версията.
По същество възможностите за персонализиране, които планирам да им дам, ще бъдат доста основни, просто трябва да извикам „нещо“, когато се случат определени неща, така че те да могат да правят неща като актуализиране на външни системи, електронна поща на себе си/клиентите, такива неща.
Чудя се кой е най-добрият начин да направя това?
Моят план е да имам "файл" (с един клас) за всеки мой контролер, за да поддържам нещата разумно организирани. Този файл ще има куп празни методи, които моят код ще извика, и те ще могат да добавят код в тези методи, за да направят каквото трябва.
Конкретният въпрос е дали този клас, пълен с празни методи, трябва да бъде компонент? Контролер? Просто обикновен обикновен PHP клас?
Ще трябва да извикам методи в този клас от моите контролери, така че предполагам, че да го направя контролер е изключено (освен ако може би не е контролер, който наследява от моя? или моят наследява от техния, вероятно). Освен това ще имам нужда от внедряващия тези методи да има достъп до моите модели и компоненти, въпреки че не съм съгласен да ги накарам да използват App::Import, не е необходимо да имам набор от магически $this->ModelName членове .
Освен това този файл, който създавам (компонент или контролер), трябва ли да живее в папката на приложението до другите (моите) контролери/компоненти? Или мога да го хвърля някъде отделно като папката на доставчиците?
Правили ли сте нещо подобно преди?
Всякакви съвети/клопки, които да избягвате, са повече от добре дошли.
Знам, че това е субективно, очаквам да чуя най-вече от вашия опит, ако сте правили това преди.
Благодаря!