ФорумСообществоФлейм → Мысли, идеи, что да как [разработка сайта]

Мысли, идеи, что да как [разработка сайта]

  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 18 июня 2009 г. 12:56

    Добрый вечер, всем :)
    В общем сразу к теме :)
    Собственно как я говорил, что как закончу сессию и появится время, возьмусь за разработку cms или более похожего к cmf. В общем взялся уже как недели 2 назад.
    И уже были наработки 3 штуки, но все по удалял, так как везде делал фигню, точнее получал не того чего хочу, собственно проблемы в том что почему то я не могу минимизировать использование свитчов и ифов, а проблема в том что не могу понять в чем соль. :(
    Сейчас вечером перечитал весь раздел
     и 
    . Где, чего понаходил. 
    Кратко о моих вариантах.
    1 Вариант:
    Использовал тупо файлы(фронт, бэкенд и все.) где через свитчи определял экшен через $_GET. Сразу понял что это реальное гавно… из за того что это говно.
    2 Вариант:
    Решил использовать фреймворк, начал с зенда, потом взял симфони(в нем в обще не разобрался, точнее не захотел, мб зря..), потом кодинтежер.
    Везде получал не то, чего я хотел. Все равно переходило к свитчам и ифам :(
    3 Вариант:
    Начал писать некое ядро, но быстро понял что пишу нихуя ни какое ядро, и пишу хуйню.
    И вот настал этот день, решил всё заново, но спросить Вашего мнения.
    В общем я хочу стандартного (наверное :) )

    • Иницилизация всех настроек из конфига, который хранится в файле config.php где хранится массив с настройками (единственное не понимаю как его обновлять, если изменения сделали в админке). Иницилизация всех модулей:
      пробую реализовать следующем методом: в конфиге(или в константе, думаю не столь важно) хранится путь к папке с модулями. Потом делается обход этой папки на создание массива со списком модулей (или думаю хранить в БД список, который обновляется при добавлении модуля, что быстрее? или лучше? почему :)).

    • Иметь некий контроллер/роутер, который будет выбирать модуль в зависимости от ссылки. Смотреть какие модули нужны, подгружать их с теми параметрами которые нужны. Вот тут для меня самое сложно, не могу точно продумать как должен выглядеть этот контроллер.

    • И в  общем не могу понять, что есть на самом деле ядро, чем оно служит, каковы функции возлагать на него, какие нет?


    В общем жду ваших мнений, советов и ответов.
    PS Благодарю за внимание и понимание.
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 18 июня 2009 г. 13:13, спустя 16 минут 36 секунд

    Вот так выглядит мое ядро. Сейчас есть задумки как тут все улучшить.
    Может прийду к выводу что это полное гавно и сделаю все заново


    <?php
    session_start();

    // кодировка сайта
    header("Content-Type: text/html; charset=UTF-8");

    // группа по умолчанию
    isset($_SESSION['group'])?"":$_SESSION['group']=-1;


    // подключаем классы
    require_once ('class/registry.class.php');// слас содержащий сылки на другие классы
    require_once ('class/stemp.class.php');//шаблонизатор
    require_once ('class/db.class.php');//клас для работы с базой данных

    //ядро
    //require_once ('class/model.class.php');

    // подключаем константы
    require_once ('language/russian.php');
    require_once ('language/connect.php');


    // класы шаблонизатора и класс для работы с базой данных
    $query=Registry::register("STemp","STemp",array("./templates/tem1/"));
    Registry::register("db","db",array(LOCALHOST, DB_USER, DB_PASSWORD, DB_NAME));

    $query->baze_script="/script/tmp1/";
    $query->baze_style="/style/tem1/";


    //споисок модулей
    $moduls[]="category";
    $moduls[]="wage";
    $moduls[]="development";
    //$moduls[]="access_moduls";
    $moduls[]="user_file";
    $moduls[]="clients";
    $moduls[]="shablon";
    $moduls[]="news";
    $moduls[]="page";
    $moduls[]="message";
    $moduls[]="customer";
    $moduls[]="access";
    $moduls[]="mail";
    // подключаем классы модулей
    foreach($moduls as $var)
    {
    require_once("modules/{$var}/class.{$var}.php");
    }

    // создаем обьекты
    foreach($moduls as $var)
    {
    $class[$var]= new $var();
    }


    if($access->modules($_GET['modules']))
    {
    if($access->modules_action($_GET['modules']))
    {
    // отображаем модули
    $class[$_GET['modules']]->GET=$_GET;
    $class[$_GET['modules']]->POST=$_POST;
    $index=$class[$_GET['modules']]->index();
    }
    else
    {
    $class["news"]->show();
    $index="access_no.tpl";
    }
    }
    else
    {
    $class["news"]->show();
    $index="access_no.tpl";
    }

    $query->display($index);


    Вот это естественно вынесу в базу и заставлю класс выбирать необходимые модули. Но пока руки не доходят у меня все классы подключаются сразу.
    //споисок модулей
    $moduls[]="category";
    $moduls[]="wage";
    $moduls[]="development";
    //$moduls[]="access_moduls";
    $moduls[]="user_file";
    $moduls[]="clients";
    $moduls[]="shablon";
    $moduls[]="news";
    $moduls[]="page";
    $moduls[]="message";
    $moduls[]="customer";
    $moduls[]="access";
    $moduls[]="mail";



    В небольшой доработке это планируется довести до такого состояния

    session_start();

    // кодировка сайта
    header("Content-Type: text/html; charset=UTF-8");

    // группа по умолчанию
    isset($_SESSION['group'])?"":$_SESSION['group']=-1;


    // подключаем классы
    require_once ('class/registry.class.php');// слас содержащий сылки на другие классы
    require_once ('class/stemp.class.php');//шаблонизатор
    require_once ('class/db.class.php');//клас для работы с базой данных
    require_once ('class/modules.class.php');// слас содержащий сылки на другие классы

    //ядро
    //require_once ('class/model.class.php');

    // подключаем константы
    require_once ('language/russian.php');
    require_once ('language/connect.php');


    // класы шаблонизатора и класс для работы с базой данных
    $query=Registry::register("STemp","STemp",array("./templates/tem1/"));
    Registry::register("db","db",array(LOCALHOST, DB_USER, DB_PASSWORD, DB_NAME));
    $modules= new modules();

    $query->baze_script="/script/tmp1/";
    $query->baze_style="/style/tem1/";


    if($access->modules($_GET['modules'])&&$access->modules_action($_GET['modules']))
    {

    $modules->modules_include($_GET['modules']);
    // отображаем модули
    $class[$_GET['modules']]->GET=$_GET;
    $class[$_GET['modules']]->POST=$_POST;
    $index=$class[$_GET['modules']]->index();
    }
    else
    {
    $class["news"]->show();
    $index="access_no.tpl";
    }

    $query->display($index);
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 18 июня 2009 г. 13:15, спустя 1 минуту 43 секунды

    Вот и все ядро =)
  • phpdude

    Сообщения: 26645 Репутация: N Группа: в ухо

    Spritz 18 июня 2009 г. 13:15, спустя 21 секунду

    бр .. как будто в ад пхпшника попал …
    Сапожник без сапог
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 18 июня 2009 г. 13:18, спустя 2 минуты 24 секунды


    бр .. как будто в ад пхпшника попал …

    А что конкретно не нравится?
    Я понимаю что ты считаешь свою систему наилучшей =) но я додумался только до такого.
    Вы же не хотите с нами новичками делиться концепциями построения сайта =)
  • phpdude

    Сообщения: 26645 Репутация: N Группа: в ухо

    Spritz 18 июня 2009 г. 13:19, спустя 1 минуту 32 секунды

    Professor, а нахуй делится? …я бы поделился да все равно скажут что гавно ;)
    Сапожник без сапог
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 18 июня 2009 г. 13:21, спустя 1 минуту 59 секунд

    Кто скажет?
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 18 июня 2009 г. 13:22, спустя 49 секунд

    У меня кстати концепция с твоей схожа немного. У меня тоже модуль это класс который что то делает =)
  • phpdude

    Сообщения: 26645 Репутация: N Группа: в ухо

    Spritz 18 июня 2009 г. 13:23, спустя 1 минуту 30 секунд


    У меня кстати концепция с твоей схожа немного. У меня тоже модуль это класс который что то делает =)
    фу
    Сапожник без сапог
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 18 июня 2009 г. 13:30, спустя 6 минут 31 секунду

    Тебе не нравится твоя же концепция?
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 18 июня 2009 г. 13:30, спустя 28 секунд

    Вот и слушай твои советы после этого =)
  • phpdude

    Сообщения: 26645 Репутация: N Группа: в ухо

    Spritz 18 июня 2009 г. 13:32, спустя 1 минуту 51 секунду


    У меня кстати концепция с твоей схожа немного. У меня тоже модуль это класс который что то делает =)
    … ты просто не понимаешь что у меня модуль - низкоуровневая хуйня - типа модуль для работы с бд, а у тебя это компонент users, news или тп …

    Сапожник без сапог
  • phpdude

    Сообщения: 26645 Репутация: N Группа: в ухо

    Spritz 18 июня 2009 г. 13:33, спустя 51 секунду

    ахуеть, ты даже меня удивил …

    isset($_SESSION['group'])?"":$_SESSION['group']=-1;
    Сапожник без сапог
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 18 июня 2009 г. 13:38, спустя 4 минуты 59 секунд

    и еще есть вопрос что есть API в вашем понимании? :)
    Professor, как API отражено у тебя? не врублюсь.
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 18 июня 2009 г. 13:39, спустя 38 секунд

    У меня тоже самое почти =)

    класс news запускает неоходимые модули.

    Тоесть у меня модуль состоит из общего класса который разруливает ситуацию. Подключает, запускает и так далее.
    Ну на news даже и не расскажешь задумку.

    Суть в том что я хотел сделать сайт состоящий из кучи маленьких сайтов. У каждого модуля есть свои подмодули(как раз низкоуровневые классы), свои шаблоны, скрипты и стили. Естественно Что то берется из общих папок. Каркас шаблона допустим берется из общей папки.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!