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

Просто нужно знать на всякий случай, что MVC, это совсем не обязательно одна точка входа. Более того, приложения с единым входом намного менее устойчивы к DDOS атакам к примеру.

То, что вы сейчас делаете, это не MVC, а MVC с единой точкой входа, именно так, не иначе. Это обычная классическая схема построения ширпотребных фреймворков, не более того.

Ничего в этом плохого нет конечно, просто довожу до сведения.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Invis1ble
twin
Приложение не должно заниматься распределением нагрузок в виде DDOS-атак, не его это уровень все-таки

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

twin
Цитата (Invis1ble @ 8.03.2013 - 03:22)
twin
Приложение не должно заниматься распределением нагрузок в виде DDOS-атак, не его это уровень все-таки

Это ты расскажи шаредному хостеру, когда он забанит твой сайт. Я понимаю конечно, однако.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Michael
Цитата (OleKh)
К стате почему-то $this в статических методах не работает.

$this есть в конкретных объектах, созданных с помощью new или clone и которое ссылается на этот объект.
Статические методы не привязаны к конкретному объекту, а к всему классу, поэтому $this там нет.

_____________
There never was a struggle in the soul of a good man that was not hard
Michael
Игорь_Vasinsky, от того твоего класса мало толку, он ничего как бы не делает. Ну вернул статический метод ссылку на коннект, ну и что?

Чтобы php код был единообразен для разных БД нужно использовать PDO.
В PDO кстати можно и не использовать подготовленные запросы, а самому экранировать переменные и т.д. как обычно.

_____________
There never was a struggle in the soul of a good man that was not hard
bestxp
Цитата (Игорь_Vasinsky @ 8.03.2013 - 03:13)
наследование - зло..

это же 1 из 3х китов на которых строиться ООП

и потом наследование не только зависимость, но и расширяемость...

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


ты обратил внимание и почитал про SOLID ?
Игорь_Vasinsky
Цитата
$this есть в конкретных объектах, созданных с помощью new или clone и которое ссылается на этот объект.
Статические методы не привязаны к конкретному объекту, а к всему классу, поэтому $this там нет.


вот и я так мыслил. значит правильно.

Цитата
от того твоего класса мало толку, он ничего как бы не делает.


ну во первых он работает biggrin.gif что для меня как нуба в ооп - тоже прогресс
а в вторых я писал же - что можно было оойтись и без класса - но если смотреть на далнейшее его расширения для использования разных типов БД или работы с другими библиями - то смысл в классе есть

PDO - все обхожу стороной, но скорее всего скоро придётся изучать, хотя меня и устраивает mysqli

читал несколько раз про сравнения PDO и Mysqli - плюсы минусы и т.д - но в итоге - последней строчкой - выбирать вам..

SOLID - нет - ещё не читал.



_____________
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
YVSIK
А ТЕМА все-же шикарня получилась , и думаю её надо прикрепить как важную , кто не понимает , как например я то все-же она на многие впросы отвечает , и делает-обращает внимание как подходить к этим вешам и МВС и классам да и вообще все вроде затронуто и о многом можно для себя сделать выводы что почитать и на что обратить внимание , и даже приватные и не приватные наследования которые мне не совсем понятны. ИМХО!

_____________
«Гнусное свойство карликовых умов приписывать
________________!свое духовное убожество другим!»
___
О) как-же он прав=>__________________ © Оноре де Бальзак.

отличный хост(рекомендую !! )
My MVC-CMV
Dezigo
Я всё время говорил на этом форуме, что цениться этап проектирования , так как он самый важный.( архитектор дома, но не строитель)
1. Как построишь архитектуру так и полетит, а код писать это 15% времени.

Вот смотрю на этот код и думаю какого типа

    private static $config;
private $config;

public static function connection($configure){
self::$config = $configure;
return self::$config;
}

Поэтому я считаю в PHP труднее отловить суть, если нету комментов.

Надо брать в пример простой framework
http://ellislab.com/codeigniter/user-guide/overview/mvc.html
  • The Model represents your data structures. Typically your model classes will contain functions that help you retrieve, insert, and update information in your database.
  • The View is the information that is being presented to a user. A View will normally be a web page, but in CodeIgniter, a view can also be a page fragment like a header or footer. It can also be an RSS page, or any other type of "page".
  • The Controller serves as an intermediary between the Model, the View, and any other resources needed to process the HTTP request and generate a web page.
bestxp
Вообще вернусь к теме про коннектор, ты показывал наследование, но это немного не то, вообще не хочешь хороший пример но я его приведу, но это лучше чем кучу раз наследовать.

Имеем конфиг например такой

$config['database']['default'] = array(
'user' => 'username',
'password' => '',
'host' => '127.0.0.1',
'database' => 'test_db',
'type' => 'mysql'

);

Имеем такой класс

Class Connection{
private static $connection = array();
private static $config = array();


final public static function setupConfig(array $config){
if(empty(self::$config)
self::$config = $config;
else
throw new Exception('Конфиг уже подключен');

}

final public function getConnection($server = 'default'){

if(isset(self::$connection[$server]){
return self::$connection[$server];

}

if(empty(self::$config){
throw new Exception('Конфиг еще не подключен');
}
if(!isset(self::$config[$server]){

throw new Exception('Конфигурация для '.$server.' не найдена');
}

$config = self::$config[$server];
self::$connection[$server] = new PDO($config['type'].':host='.$config['host'].';dbname='.$config['database'], $config['user'], $config['password']);
self::$connection[$server]->exec("SET CHARACTER SET utf8");
return self::$connection[$server];
}


}
мануал по PDO http://www.php.net/manual/ru/pdo.connections.php

Далее этот класс никак не меняется, он используется для реализации пула подключений, то есть несколько серверов и тд, и использование только одно соединения. И в моделе используем такое


class DbModel{

protected $_connection = 'default';

final public function getConnection(){
return Connection::getConnection($this->_connection);

}

public statuc function instance(){
return new self();

}

}


Теперь самое интересное использование

Class User extends DbModel{

const TABLE ='tbl_user';

public function findByUsername($username){

//Экранируем
$this->getConnection()->quote($username, PDO::PARAM_STR);

$stmt = $this->getConnection()->prepare("SELECT * FROM ' .self::TABLE. ' where name = '?'");
$user = $stmt->execute(array($username))->fetch(PDO::FETCH_ASSOC);
return $user;
}


}


Ну и использование в виде простого примера


if($formValid){
$user = User::instance()->findByUsername($_POST['username']);
if($user){
//Ура найден пользователь

if(md5($_POST['password']) === $user['password']){
Ура мы авторизовались

}

}


}


Пример на 90% рабочий, но возможны синтасические ошибки, так как писал на коленке xD
Быстрый ответ:

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