[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: mvc - не cmv
Страницы: 1, 2, 3, 4, 5, 6, 7, 8
Игорь_Vasinsky
так я не спорю wink.gif извиваюсь как умею.

сейчас решил плотным взглядом заняться ооп.

со мной происходит то - что происходило со мной 3 года назад с процедуркой - когда я пришёл на этот форум laugh.gif

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
bestxp
Вообще как то странно ты описал, модешь вообще не должна знать ничего о соеднинении, она только может его использовать, вот пример

abstract class Infr_Connection{
//тут мы реализуем пул соединений и всё что нужно

abstract function query();
abstract function getAll();
abstract function getOne();

}

//и есть модель

Class Model_DataSource {

protected $connect = null;
protected $filter = array();

public function __construct(Connection $connect){
$this->connect = $connect();
}

public function setFilter($filtr = array()){
$this->filter = $filter;
}

}


Допустим у нас есть блог и бд postgress

Class PG_Connect extends Connect{}

Class Blog_Source extends DataSource(

public function getFirstUncommite dPosts(){
//в идеале тут построитель запросов или еще чего
return $this->connect->query('SELECT * from blog.posts as self where self.comment_count = 0' )->getAll();
}
)

//это в простом случае

//в итоге получиться нечто


$blogSource = new Blog_Source(ServiceLocator::getService('PG_Connect'));
$blogSource->getFirstUncommite();


Где ServiceLocator это может быть что угодно для управлением зависимостями в проекте, или просто в контроллере $this->getService('connection')
тут полет фантазии

притом BlogSource я не зря так назвал, так как это только источника данных, который в текущий момент использует БД ПГ, и выьорка это особенность реализации, и внутри уже можно управлять поведеним, в зависимости что передано, так и вести себя, хотя немного нарушит другое, допустим был передан коннект mongoDB , вы делаете другую выборку

При таком подходе в случае смены типа хранилища, вы легко и быстро адаптируете, и следуете open-closed принципу, не трогая остальное, но тут уже другая история.

а по мне так самое лучшее MVP (Model View Presenter) но тут уже в вики прочитать, копипасту не охота

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.