Может сейчас и ересь написал, изучаю ООП, пытаюсь нацарапать, что-то похожее на CMS по MVC
Нужно решить следующую задачу:
К примеру в контроллере или модели используются часто одни и те же функции (конкретно в моделе выборка из базы, delete, update и т.п.).
Писать в каждой модели данные функции (ок методы ) не разумно, по-моему проще их вызывать из другого класса и передать им данные на вход для обработки (ну или как-то по-другому, собственно это и пытаюсь узнать).
Про наследование классов знаю, но это не совсем то что мне нужно в данном случае. В моем случае скорее всего будут по одному базовому классу для контроллеров и моделей соответственно, от которых будут наследоваться все остальные. Описывать в них все общие методы мне бы тоже не хотелось (я понимаю что это снова звучит как ересь, иначе зачем тогда создавать базовые классы, но снова повторюсь суть не в том).
Поясню чего хочу добиться...
Структура моего приложения:
/core
/controllers
/models
/views
В каталоге core будут находиться как раз таки все общие классы с методами и свойствами. Эта папка в последующем при разработке и наполнении станет своего-рода фреймворком (моим), который я в будущем хочу использовать в других проектах.
Остальные папки говорят сами за себя.
Базовый контроллер и базовая модель (т.е. родительские классы) будут как бы уникальными для конкретного проекта, а вот все содержимое core будет неизменно и универсально (возможно иногда дополнятся).
Читал про интерфейсы, но это не то. Что-то похожее __call, но как я понял его можно использовать только после создания объекта, а не в классе.
В общем поделитесь пожалуйста опытом, может кто-то решал подобные задачи или подскажите что-то получше.
|