Объектно ориентированое программирование, правильное оформление

GrayMaster

Новичок
Объектно ориентированое программирование, правильное оформление

Решил переделать CMS под ООП, считаю так будет дописывать его намного удобнее.
Но со струкрутой определиться немогу, не очень привыть объектно кодить :(

Сделал класс $core
PHP:
<?php
class params {
        var $attrs = array();

        function Get($key, $default = null) {
                return isset($this->attrs[$key]) ? $this->attrs[$key] :
                    (isset($default) ?  $default : null);
        }

        function GetAll() {
                return $this->attrs;
        }

        function Set($key, $value) {
                $this->attrs[$key] = $value;
        }

        function SetAll($values) {
                if (!is_array($values)) {
                        return false;
                } else {
                        $this->attrs = $values;
                }
        }

        function SetByRef($key, &$value) {
                $this->attrs[$key] = $value;
        }

        function Merge($values) {
                if (!is_array($values)) {
                        return false;
                } else {
                        $this->attrs = array_merge($this->attrs, $values);
                        return true;
                }
        }
}

class core {
        var $params;

        function Core($params = array()) {
                $this->params = new params;
                $this->params->SetAll($params);
        }
        
        function LoadModule($modulename, $params = null) {
                if (file_exists($this->params->Get("path")."/sources/".$modulename.".class.php")) {
                        include_once $this->params->Get("path")."/sources/".$modulename.".class.php";
                        return new $modulename($params);
                } else {
                        return false;
                }
        }
}
?>
Пните пожалуйста если что не так, и подскажите как сделать правильно.

Теперь хоче сделать модульную систему, например при index.php?sect=main, подгружался модуль main.

PHP:
$params['path'] = "C:/home/cms/www/new";
$core = new Core($params);

$core->db = $core->LoadModule("mysql");
$core->db->Connect("localhost", "root", "pass", "table");

...

        if (isset($_REQUEST['mod']) and isset($_REQUEST['sect']) and file_exists($core->params->Get("path")."/sources/modules/".$_REQUEST['sect']."/".$_REQUEST['mod'].".inc.php")) {
                include $core->params->Get("path")."/sources/modules/".$_REQUEST['sect']."/".$_REQUEST['mod'].".inc.php";
        } else {
                include $core->params->Get("path")."/sources/modules/main.inc.php";
        }

...

$core->db->Close();
?>
Пока что у меня так - но модульная структура ненравится, неудобно :( Подскаже как правильнее иудобнее оформить структуру ?
 

texrdcom

Новичок
GrayMaster
Пока что у меня так - но модульная структура ненравится, неудобно
И будет не удобно ! пока не поймешь сначало чем кодить в ооп надо проектировать проект.
1) Поставь четкое задания что должно делать ядро
2) Поставь четкое задания для модулей
3) Как ты представляем себе модуль ?
Судя по кодингу класс конекта к базе у тебя тоже модуль ?
Не надо так буквально делить все на модули !
Это можно реализововать как библиотеку!
А модуль это отдельная часть проекта ! для примера модуль гостевой книги, модуль форум.
 

ZN

Новичок
GrayMaster
Посмотри на XOOPS (www.xoops.org) - имхо отличный образец модульности.
Там же посмотри на классы xoopsObject, xoopsModule - мне кажется это пример того, чего ты хочешь.
 
Сверху