Composer 로 자신의 PHP 프레임 워 크 를 구축 하 는 디자인 MVC

돌이켜보다
이전 튜 토리 얼 에서 우 리 는 codingbean/macaw 라 는 Composer 패 키 지 를 사용 하여 두 가지 간단 한 경 로 를 구축 했다.첫 번 째 는 GET'/fuck'에 응 하 는 것 이 고 다른 하 나 는 모든 요 구 를 hold 할 것 이다.사실 PHP 프레임 워 크 에 있어 서 는 경로 가 있 으 면 모든 것 이 있다.그래서 앞으로 우리 가 해 야 할 일 은 MFCC 프레임 워 크 를 더욱 규범화 시 키 고 풍만 하 게 하 는 것 이다.
이것 은 PHP 프레임 워 크 의 또 다른 가치 와 관련 이 있다.'여러 사람 이 협력 할 수 있 도록 개발 규범 을 확립 하고 ORM','템 플 릿 엔진 등 도 구 를 사용 하여'개발 효율 을 높 인 다'.
본 격 적 으로 폴 더 계획 시작
새 MFCC/app 폴 더 를 만 들 고 app 에 controllers,models,views 세 개의 폴 더 를 만 들 고 MVC 의 여정 을 본 격 적 으로 시작 합 니 다.
(누가 내 가 Laravel 을 베 꼈 다 고 했 어?내 가 베 낀 것 은 분명히 Rails:-D)
네 임 스페이스 사용
새 controllers/BaseController.php 파일:

<?php
/**
* BaseController
*/
class BaseController
{
 
  public function __construct()
  {
  }
}
새 controllers/HomeController.php 파일:

<?php

/**
* \HomeController
*/
class HomeController extends BaseController
{
 
  public function home()
  {
    echo "<h1> !</h1>";
  }
}
경로 추가:Macaw:get(',')HomeController@home');`,브 라 우 저 열기 직접 접근http://127.0.0.1:81/`,다음 과 같은 힌트 가 나타 납 니 다.

Fatal error: Class 'HomeController' not found in /Library/WebServer/Documents/wwwroot/MFFC/vendor/codingbean/macaw/Macaw.php on line 93
왜 HomeController 류 를 찾 지 못 했 습 니까?우 리 는 그 에 게 자동 으로 불 러 오 라 고 하지 않 았 기 때문에,composer.json 을 다음 과 같이 수정 합 니 다.

{
  "require": {
    "codingbean/macaw": "dev-master"
  },
  "autoload": {
    "classmap": [
      "app/controllers",
      "app/models"
    ]
  }
}
composer dump-autoload 를 실행 합 니 다.잠시 만 기 다 려 주세요.새로 고침 하면 다음 내용 을 볼 수 있 습 니 다.(인 코딩 조절 잊 지 마 세 요~)

축하합니다.네 임 스페이스 사용 성공!
데이터베이스 연결
새 models/Article.php 파일,내용(데이터베이스 비밀 번 호 는 스스로 변경 하 십시오):

<?php
/**
* Article Model
*/
class Article
{
  public static function first()
  {
    $connection = mysql_connect("localhost","root","password");
    if (!$connection) {
      die('Could not connect: ' . mysql_error());
    }

    mysql_set_charset("UTF8", $connection);

    mysql_select_db("mffc", $connection);

    $result = mysql_query("SELECT * FROM articles limit 0,1");

    if ($row = mysql_fetch_array($result)) {
      echo '<h1>'.$row["title"].'</h1>';
      echo '<p>'.$row["content"].'</p>';
    }

    mysql_close($connection);
  }
}
controllers/HomeController.php 파일 수정:

<?php/*** \HomeController*/class HomeController extends BaseController{  public function home() {  Article::first(); }}
새로 고침,이 때 Article 클래스 에서 찾 을 수 없 는 정 보 를 얻 을 수 있 습 니 다.자동 로 딩 설정 을 업데이트 하지 않 았 기 때 문 입 니 다.

composer dump-autoload
기다 리 는 시간 동안,우 리 는 데이터베이스 mffc 를 만 들 고,그 안에 표 articles 를 만 들 고,두 필드 의 title,'content 를 설계 하여 정 보 를 기록 하고,적어도 하나의 데 이 터 를 채 웁 니 다.mffc 데이터 베 이 스 를 만 든 후에 다음 SQL 문 구 를 실행 할 수 있 습 니 다.

DROP TABLE IF EXISTS `articles`;
CREATE TABLE `articles` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT NULL,
  `content` longtext,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
LOCK TABLES `articles` WRITE;
/*!40000 ALTER TABLE `articles` DISABLE KEYS */;
INSERT INTO `articles` (`id`, `title`, `content`)
VALUES
 (1,' ','<h3> ~~</h3><p> , , ~ O(∩_∩)O</p>'),
 (2,' ','<h3> ~~</h3><p> , , ~ O(∩_∩)O</p>');
/*!40000 ALTER TABLE `articles` ENABLE KEYS */;
UNLOCK TABLES;
그리고 리 셋!다음 페이지 를 볼 수 있 습 니 다:

축하 해!MVC 의 M 과 C 는 모두 실현 되 었 습 니 다!이어서 우 리 는 V(보기)를 호출 하기 시작 했다.
보기 호출
models/Article.php 를 다음 과 같이 수정 합 니 다.

<?php
/**
* Article Model
*/
class Article
{
  public static function first()
  {
    $connection = mysql_connect("localhost","root","C4F075C4");
    if (!$connection) {
      die('Could not connect: ' . mysql_error());
    }
    mysql_set_charset("UTF8", $connection);
    mysql_select_db("mffc", $connection);
    $result = mysql_query("SELECT * FROM articles limit 0,1");
    if ($row = mysql_fetch_array($result)) {
      return $row;
    }
    mysql_close($connection);
  }
}
검색 결 과 를 포함 하 는 그룹 을 되 돌려 줍 니 다.HomeController 수정:

<?php
/**
* \HomeController
*/
class HomeController extends BaseController
{
  public function home()
  {
    $article = Article::first();
    require dirname(__FILE__).'/../views/home.php';
  }
}
저장,새로 고침,위 와 같은 페이지 를 얻 을 수 있 습 니 다.보기 호출 성공!
거의 모든 사람들 이 특정한 구 조 를 배 워 서 MVC 를 알 게 되 었 습 니 다.그러면 구 조 를 잘 사용 할 수 있 습 니 다.구조 에서 벗 어 나 간단 한 페이지 를 쓸 수 없 으 면 자신 이 MVC 구 조 를 디자인 했다 고 말 할 필요 도 없습니다.사실은 이 안에 도 그렇게 많은 방법 이 없고 원리 가 매우 뚜렷 합 니 다.저 는 제 깨 달 음 을 말 하 겠 습 니 다.
1.PHP 프레임 워 크 가 아무리 강해 도 그 는 PHP 이 고 PHP 의 운영 원리 와 기본 철학 을 따라 야 한다.이 점 을 잡 으 면 우 리 는 많은 일 을 쉽게 이해 할 수 있다.
2.PHP 가 만 든 사 이 트 는 논리 적 으로 phop test.php 와 다 를 것 이 없 으 며,모두 하나의 문자열 을 매개 변수 로 PHP 해석 기 에 전달 할 뿐이다.복잡 한 사 이 트 는 URL 에 따라 실행 해 야 할 파일 과 코드 를 호출 한 다음 에 해당 하 는 결 과 를 되 돌려 줍 니 다.
3.CodeIgniter 와 같은 180 개의 파일 로 구 성 된'작은 프레임 워 크'를 보 든 Laravel 과 같은'vendor 모두 3700 여 개의 파일'의'큰 프레임 워 크'를 보 든 그들 은 모든 URL 의 구동 하에 실행 가능 한 문자열 을 조립 하여 PHP 해석 기 에 전달 하고 PHP 해석 기 에서 돌아 온 문자열 을 방문객 의 브 라 우 저 에 전송 합 니 다.
4.MVC 는 논리 적 인 구조 로 본질 적 으로 사람의 뇌 와 같은 초 저 RAM 의 컴퓨터 로 하여 금 원 거리 슈퍼맨 뇌 RAM 의 대형 소프트웨어 를 만 들 수 있 게 하기 위해 서 이다.사실은 MVC 구 조 는 GUI 소프트웨어 가 등장 하기 전에 이미 형성 되 었 고 명령 행 출력 도 보기 이 잖 아.
5.MFCC 에서 URL 구동 프레임 워 크 가 하 는 일 은 기본적으로 다음 과 같 습 니 다.입구 파일 require 컨트롤 러,컨트롤 러 require 모델,모델 과 데이터 베 이 스 를 상호작용 하여 데 이 터 를 컨트롤 러 에 되 돌려 주 고 컨트롤 러 는 require 보기 로 데 이 터 를 채 워 서 방문객 에 게 되 돌려 주 며 절차 가 끝 납 니 다.

좋은 웹페이지 즐겨찾기