Имеем файл Backoffice.php его содержимое: Код (Text): require_once('backoffice/SysBlock.php'); require_once('backoffice/News.php'); require_once('backoffice/Auth.php'); class Backoffice extends Controller { function Backoffice() { parent::Controller(); } function Login() { Auth::Login(); } function News_Add() { News::News_Add(); } function News_List() { News::News_List(); } function Index() { if($this->userlib->logged_in()) { $this->News_List(); } else { $this->Login(); } } } Кинул не весь файл, думаю суть будет и так ясна. Вообщем в данном варианте всё работает и без проблем как мне нужно, но я бы не хотел видеть всякие там require_once и News::News_List(). Суть в том что когда идет класс backoffice то он и вызывается site.com/backoffice/ , если в нем прописывать так как я писал выше то он выводит site.com/backoffice/news_list/ всё замечательно, но ни делать же мне постоянно News::News_List хотелось бы какой то автоматизации этого процесса, вот собсна и вопрос (Знаю что намудрил, если не понятно то спросите я всё выкину и на всё отвечу что могу, ну очень нужно разобратся с этим побыстрее) ):
newnoob По-моему, это опять пример того, как не надо использовать ООП Почему у тебя класс Админки знает о классе Новостей? И не просто знает, а вызывает новостные методы? А если в будущем появится Гостевая? Придется переписывать класс Админки? Одно из преимуществ ООП: ты создаешь базовый класс (скажем, ПлугинАдминки) и работаешь с базовым классом. Появилось в системе новое понятие - создаешь новый класс на основе базового, НО: везде по-прежнему работаешь с плугином как с базовым. Появился новый плугин - просто добавил его в систему, настроил его использование по минимуму и все работает без больших изменений.
Тогда объясните на примере плиз. Главный файл: backoffice.php: Лежит в корне. PHP: <?php class Backoffice extends Controller { function Backoffice() { parent::Controller(); } function Index() { if($this->userlib->logged_in()) { $this->News_List(); } else { $this->Login(); } } } ?> Вызывается site.com/backoffice/ . Модуль к примеру Help.php лежит в папке backoffice (Хоть для какого то удобства работы с файлами и понятия где какие модули ): PHP: <?php class Help extends Controller { function Help() { parent::Controller(); } function Index() { echo 'help'; } } ?> Модули админки я складываю в папку backoffice/ тоесть вызов уже идет не site.com/backoffice/news_list/ а site.com/backoffice/backoffice/news_list/ суть вопроса как побороть 1 раз backoffice в вызове нужно просто : site.com/backoffice/news_list/
Dagdamor вот вот. Кажется все так (большинство), хотя уже и не отрицаю, при правильном использовании ООП нужно и что все-таки все в кучу делать не стоит
1. я давно гружу классы через __autoload() 2. проектирование ООП модели дело очень тонкое. надо как минимум понимать основные паттерны. ну ттам атом, синглетон, контроллер, вьюха и т.д. тогда проектирование какой либо компоненты сводится к написанию основных методов и регистрации их в нужных местах. далепе все подключается автоматом. мы скйчас заканчиваем как раз движок чисто на ООП. чуток попозже выложу структуру p.s. и самое главное в ООП не переборщить с абстракцией, а то потом мозги сам свернешь...