PHP와 MySQL 백엔드로 사이트를 구축하고 있습니다. 그러나 현재 어떤 유형의 프레임 워크도 사용하고 있지 않습니다. Model View Controller를 사용해야합니까?
답변
내 경험 법칙 :
데이터베이스에 도달하거나 사용자 입력 형식이 필요한 모든 페이지는 MVC 구조로 관리하기가 더 쉽습니다.
사이트가 상당히 단순하다면 반드시 전체 프레임 워크를 사용할 필요는 없습니다. 사이트가 필요한 경우 페이지마다 간단한 페이지 컨트롤러 클래스를 사용할 수 있습니다 ( 위 참조 ). 이것은 확장 가능한 솔루션이 아니므로 프로젝트의 장기 목표를 명심하십시오.
다음은 (빠른 해킹 된) PageController 설정의 대략적인 스케치입니다.
index.php
--------------------------------------------------------
include 'Controller.php';
include 'Db.php';//db connection
include 'View.php';
$Controller = new MyController(new Db(), new View());
$Controller->route($_GET);
$Controller->render();
Controller.php
--------------------------------------------------------
class Controller($db){
/* ensure all collaborators are provided */
public function __construct(Db $db, View $view){
$this->db = $db;
$this->db->connect(array('host','db','user','pass'));
$this->view = $view;
}
/* load the appropriate model data */
public function route($_GET){
//load the right model data and template
switch($_GET){
case $_GET['articles'] === 'cats':
$this->vars = $this->db->get('cats');
$this->template = 'cats.php';
break;
case $_GET['articles'] === 'dogs':
break;
$this->vars = $this->db->get('dogs');
$this->template = 'dogs.php';
default:
$this->vars = array();
}
}
/* render an html string */
public function render(){
echo $this->view->render($this->template,$this->vars);
}
}
View.php
------------------------------------------------------------
class View.php
{
/* return a string of html */
public function render($template,$vars){
// this will work - but you could easily swap out this hack for
// a more fully featured View class
$this->vars = $vars;
ob_start();
include $template;
$html = ob_get_clean();
return $html;
}
}
template cats.php
--------------------------------------------------------
$html = '';
$row_template = '%name%,%breed%,%color%';
foreach($this->vars as $row){
$html .= str_replace(
array(%name%,%breed%,%color%),
array($row['name'],$row['breed'],$row['color']),
$row_template);
}
echo $html;
Db.php
---------------------------------------------------------------
I haven't bothered writing a db class... you could just use PDO
답변
사이트가 사소한 크기 이상으로 커질 가능성이 있다면 좋을 것이라고 말하고 싶습니다. 주된 이유는 앞으로 사이트를 변경하고 유지 관리하는 능력이 향상되고 유지 관리가 대부분의 프로젝트에서 대부분의 작업이기 때문입니다. 관심사, 사이트 구성을 분리하고 반복적이고 혼란스러운 코드를 피할 수 있습니다.
MVC는 잘 알려져 있고 웹 사이트에서 인정되는 패턴으로 다른 사람들을 프로젝트에 데려 오는 경우 도움이됩니다. 이를 위해 시작하기 위해 확립 된 프레임 워크를 선택하고 싶을 것입니다.
답변
질문에 대답하는 데 도움이 될만한 세부 정보는 제공하지 않았지만 이러한 경우의 기본 권장 사항은 “예, MVC 프레임 워크 사용”입니다. 정말로 필요한 경우에만 맞춤형 솔루션을 사용하십시오.
답변
아키텍처로서 MVC는 프로젝트 / 웹 페이지를 여러 부분으로 나누는 데 중점을 둡니다. 이를 통해 코드 나 사용자 인터페이스에서 무언가를 변경해야 할 때 인생을 더 쉽게 만들 수 있습니다.
경험상, 특히 변경 사항이 전체 코드에 영향을 줄 때 프로젝트 사양이 변경 될 것으로 예상되는 경우 코드를 작은 레고 조각으로 나눌 아키텍처를 사용하십시오.
답변
지금은 아닙니다. 사이트가 커지고 지저분해질 때까지 기다리십시오. 당신은 스스로에게 물어볼 것입니다-덜 혼란스럽게 만들려면 어떻게해야합니까? MVC에 대한 기사를 읽고 좋아할 것입니다. 더 이상 사용할지 의문의 여지가 없습니다. 넌 알게 될거야. 그것은 그것을 사용하기 시작하는 순간입니다.