저는 백 엔드 용 PHP를 사용하여 AJAX 웹 응용 프로그램을 구축하고 있습니다. 나는 쉽게 새 페이지를 놓을 수있는 라우팅 시스템을 디자인하려고 노력 중이며 자바 스크립트에 집중하겠습니다. PHP가 제공 할 실제 페이지는 단순한 것으로, 자바 스크립트 차트 (기본적으로 d3.js으로 작성)의 컨테이너 인 뷰입니다. 따라서 AJAX 호출을 만들기 전까지 컨트롤러가 내 모델과 상호 작용할 필요조차 없습니다.컨트롤러가 언제 인스턴스화되어야합니까?
저는 OOP를 처음 접했습니다. 특히 백엔드에서. 나는 자바 스크립트를 조금 해왔지만, MVC & 라우팅 문제를 해결하면서 OOP를 통합하는 것은 아주 새로운 것이다. 라우팅 클래스를 작성한 모듈/플러그인이 있다는 것을 알고 있지만이 프로젝트의 백 엔드 부분은 매우 간단합니다. 기본적으로 블로그의 '정보'페이지를 제공하는 것이 가장 좋습니다. 이 기회를 통해 철저히 배울 수 있습니다.
<?php
//controller.php
include 'views/view.php';
class Controller
{
public function homeAction() {
$view = new View();
$view->setTemplate('views/home.php');
$view->render();
}
public function categoryAction($category) {
$view = new View();
$view->setTemplate("views/Monitor/{$category}/{$category}.php");
$view->setCategory($category);
$view->render();
}
public function monitorAction($category, $monitor) {
$view = new View();
$view->setTemplate("views/Monitor/{$category}/{$monitor}.php");
$view->setCategory($category);
$view->setMonitor($monitor);
$view->render();
}
}
?>
는 지금, 나는 index.php
의 시작 부분에 내 컨트롤러의 인스턴스 :
나는 하나의 컨트롤러가 나는 PHP의 자동 로더에 대해 조금 읽었습니다
<?php
// Load libraries
require_once 'model.php';
require_once 'controller.php';
$controller = new Controller();
$uri = str_replace('?'.$_SERVER['QUERY_STRING'], '', $_SERVER['REQUEST_URI']);
// home action
if ($uri == '/') {
$controller->homeAction();
// /{category}/{monitor}
} elseif (preg_match("#/(.+)/(.+)#", $uri, $matches)) {
$category = $matches[1];
$monitor = $matches[2];
$controller->monitorAction($category, $monitor);
// /{category}
} elseif (preg_match("#/([^/.]+)#", $uri, $matches)) {
$category = $matches[1];
$controller->categoryAction($category);
// 404
} else {
header('Status: 404 Not Found');
echo '<html><body><h1>Page Not Found</h1></body></html>';
}
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && (!empty($_GET)) && $_GET['action'] == 'get_data') {
$function = $_GET['chart'] . "_data";
$dataJSON = call_user_func($function);
header('Content-type: application/json');
echo $dataJSON;
}
?>
을하지만, 내가 좋아하는 것 처음부터 수동으로 내려야합니다. 왜냐하면 제가 기본을 확실히 이해하고 싶기 때문입니다.
내 Controller
개체를 인스턴스화하는 적절한 위치입니까?
이 문제의 조금 더 설명 할 수 :
이것은 내가 삭제 결코 금 링크를입니까? 어떤 종류의 응용 프로그램입니까? – ZanattMan