За последние 24 часа нас посетили 16543 программиста и 1680 роботов. Сейчас ищут 933 программиста ...

архитектура сайта - вопрос по производительности

Тема в разделе "Прочие вопросы по PHP", создана пользователем ZEVeS, 3 дек 2008.

  1. ZEVeS

    ZEVeS Активный пользователь

    С нами с:
    3 дек 2008
    Сообщения:
    11
    Симпатии:
    0
    в кратце постараюсь описать структуру:

    1. все ссылки на одну и туже страницу index.php (тоесть обрабатывается $_GET)
    2. определены объекты: посетитель, магазин, страж, навигация, команда (это в упрощенном виде)

    - посетитель - инкапсулирует все get и пост данные
    - страж - создает (из базы) журнал вида (основной раздел => 4, админка => 0 ...)
    - страж создает объект навигации (по сути страж - это директор, который использует строителя Навигацию)
    - магазин - создает объект текущей страницы (через абстрактную фабрику страницы получает объект конкретной фабрики , которая создает все необходимые объекты для магазина (с учетом группы пользователя) такие как объект текущей страницы, объект новостей для текущей страницы и т.п.)
    - магазин инициализирует команды (напомню данные post и get инкапсулированы в посетителе) соответствие команд данной странице прописаны в объекте текущей страницы.
    p.s. команда - на основе патерна команда (например отослать email, или поместить товар в корзину, или изменить права группе пользователя и т.п.)

    - далее магаин инициализируует команду, также инициализирует объект текущей страницы
    - данные передаются в смарти и все отображается.

    !!!!!!!! Короче вопрос в том - поскольку пока только разработан вот такой костячок - может мне кто-ньть подскажет какие проблемы могут быть с такой структурой? (производительность, расширяемость, ...)
     
  2. ZEVeS

    ZEVeS Активный пользователь

    С нами с:
    3 дек 2008
    Сообщения:
    11
    Симпатии:
    0
    вы уж не обессудте что так текстом а не кодом...
    --- - - - - - - - -- --

    плюс к этой же теме кто знает: проблемка с .htaccess'ом (я её выложил в разделе php для начинающих -> RewriteRule)
    помогите.
     
  3. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Все перечисленные сущности - шелуха, которая к архитектуре не имеет отношения.
    Попробуйте для начала реализовать момент "которая создает все необходимые объекты для магазина (с учетом группы пользователя)", вот там-то и проявится архитектура...

    Да, о производительности сейчас, пожалуйста, не думайте. Один безграмотный SQL запрос сожрет все ваши изыски по части производительности. Думайте в плане "работает - не работает", а также "работает красиво - работает не очень".
     
  4. ZEVeS

    ZEVeS Активный пользователь

    С нами с:
    3 дек 2008
    Сообщения:
    11
    Симпатии:
    0
    ммм... ну вообще-то у меня куча классов для разных страниц для разных групп пользователей... :(
    но это пока... теперь я как-раз думаю о том как бы сократить количество этих классов.

    /**
    * создает объект который будет строить объекты для данной страницы (например страницы: know-how)
    */
    abstract class PlaceAbstractFactory{

    static public function makePlaceFactory($curent_page){
    switch($curent_page->name){
    case 'know-how': $place_factory=new PlaceConcreteFactory();break;
    default : $place_factory=new PlaceBaseFactory();break;
    }
    return $place_factory;
    }

    abstract function makePlace();
    public function makeNews(){return new News();}
    }

    =================================================================
    class PlaceConcreteFactory extends PlaceAbstractFactory{


    public function makePlace(){
    return new All_main();
    }
    public function makeNews(){
    return new News();
    }
    }

    class PlaceBaseFactory extends PlaceAbstractFactory{

    public function makePlace(){
    return new Nulla();
    }
    }

    =================================================================
    class Nulla{
    public $commands=array();
    public function execut(){}
    }


    class News{
    public $title='заголовок новости';
    public $date='текст новости........................';

    public function execut(){
    echo "<br /><hr size=5 color=grey width=50%><center><font color=grey><b> объект класса \"".__CLASS__."\"(объект с новостями для конкретной страницы) выполняет операцию execut() : </b></font></center><font color=#0000aa><i> ";
    echo '<table align=center width=50% height=50% border=2><tr><td>one</td><td>two</td></tr></table>';
    echo "</i></font><font color=blue><b><hr size=5 color=grey width=50%></b></font>";
    }
    }

    class All_main{

    public $data='news';
    public $ese='enother';
    public $page;
    public $commands=array('echoTest','echoTest2'); // используется для определения какие команды разрешены на этой странице...


    public function __construct(){}

    public function execut(){
    echo "<br /><hr size=5 color=grey width=50%><center><font color=grey><b> объект класса \"".__CLASS__."\"(объект с данными для конкретной страницы) выполняет операцию execut() : </b></font></center><font color=#0000aa><i> ";
    echo '<table align=center width=50% height=50% border=2><tr><td>one</td><td>two</td></tr></table>';
    echo "</i></font><font color=blue><b><hr size=5 color=grey width=50%></b></font>";
    }
    }


    ну или типа того...
     
  5. alonecat

    alonecat Активный пользователь

    С нами с:
    24 ноя 2008
    Сообщения:
    5
    Симпатии:
    0
    Если у Вас не так много опыта в создании достаточно крупных объектно-ориентированных приложений, да и вообще в PHP программирование, попробуйте писать проще, не пытайтесь употребить как можно больше паттернов.

    Я сам когда то пытался разобратся с паттернами, но не на PHP, а на .NET в теории все хорошо, но что бы на практике это было эффективно нужна поддержка команды опытных в таких вещах людей. Самостоятельно лучше писать проще, добейтесь работоспобности приложения, добейтесь того что бы с легкостью мочь внедрить новую функциональность по требованию не заморачиваясь в нагромождении классов.

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

    Все ИМХО конечно:)
     
  6. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Оу фак. Впервые такое вижу. Обычно люди, занимающиеся этим, не доходят до ООП, пока не научатся шаблонами юзать.