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 보기 로 데 이 터 를 채 워 서 방문객 에 게 되 돌려 주 며 절차 가 끝 납 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel dump 스마트하기 Laravel Dump ServerLaravel 5.7부터 dump-server라는 기능을 사용할 수 있습니다. (참고: ) 이번 이쪽의 도입을 했으므로 가볍게 정리합니다. Laravel dump() 의 결과를 콘솔에 출력시키기 위한 툴입니다. La...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.