시작하기: MVC 패턴
ThinkPHP6 시작하기
ThinkPHP는 기존 MVC(
Model-View-Controller
) 모드와 인기 있는 MVVM(Model-View-ViewModel
)의 애플리케이션 개발을 지원합니다. modeModel-View-Controller
)模式以及流行的MVVM(Model-View-ViewModel
)模式的应用开发
一、MVC
MVC 软件系统分为三个基本部分:模型(
Model
)、视图(View
)和控制器(Controller
- 1 MVC
Model
), 뷰(View
) 및 컨트롤러()의 세 가지 기본 부분으로 나뉩니다. > 컨트롤러
)ThinkPHP는 일반적인 MVC 아키텍처
컨트롤러 - 요청 전달 및 처리를 담당합니다.
View - 인터페이스 디자이너가 그래픽 인터페이스 디자인. 모델 - 프로그래머는 프로그램이 가져야 할 기능(알고리즘 구현 등)을 작성하고, 데이터베이스 전문가는 데이터 관리 및 데이터베이스 설계(특정 기능 구현 가능)를 수행합니다.ThinkPHP6에는 ThinkTemplate 템플릿 엔진이라는 독립적인 템플릿 세트가 있습니다. think-템플릿 템플릿 엔진을 사용하려면 think-view를 설치해야 합니다.index.php 항목 파일
index 컨트롤러
index 작업 p APP 애플리케이션 디렉토리
─ CONTROLLLER 컨트롤러 디렉토리
─ 모델 모델 디렉토리
│ ├ ─ ... 더 많은 유형의 라이브러리 디렉토리
│ ├─Common.php 공용 함수 파일
│ └─event.php 이벤트 정의 파일
│
├─config 구성 디렉터리
│ ├─app.php 애플리케이션 구성
│ ├─cache.php 캐시 구성
│ ├─ console.php 콘솔 구성
│ ├─cookie.php 쿠키 구성
│ ├─database.php 데이터베이스 구성
│ ├─filesystem.php 파일 디스크 구성
│ ├─lang.php 다중 언어 구성
│ ├─log.php │ 로그 구성
│ ├ ─middleware.php 미들웨어 구성
│ ├─route.php URL 및 라우팅 구성
│ ├─session.php 세션 구성
│ ├─trace.php 추적 구성
│ └─view.php 보기 구성
│
├─view 디렉토리 보기
🎜├─route 경로 정의 디렉토리 🎜│ ├─route.php 경로 정의 파일
│ └─ ...
│
├─public 항목 파일
│ ├─router.php 빠른 테스트 파일
│ └─.htaccess Apache 재작성에 사용됩니다.
│
├─extend 확장 클래스 라이브러리 디렉토리
├─runtime 애플리케이션 런타임 디렉토리(쓰기 가능, 사용자 정의 가능)
├─ 공급업체 Composer 클래스 라이브러리 디렉토리
├─.example.env 환경 변수 예제 파일
├─ Composer.json 작곡가 정의 파일
├─LICENSE.txt 권한 설명 파일
├─README.md README 파일
├─ think > 출력), 다른 템플릿을 사용해야 하는 경우
- composer require topthink/think-view
thinkView类
配合视图驱动(也即模板引擎驱动)类一起完成,新版仅内置了PHP原生模板引擎(主要用于内置的异常页面输出),如果需要使用其它的模板引擎需要单独安装相应的模板引擎扩展
ThinkPHP6已独立出一套模版,命名为:ThinkTemplate模板引擎;
使用think-template模板引擎,需安装think-view;
composer require topthink/think-view
视图目录可以在根目录,也可以在app应用目录
四、模版渲染
要使用View,必须先引入
thinkfacadeView
뷰 디렉터리는 루트 디렉터리나 앱 애플리케이션 디렉터리에 있을 수 있습니다.- 4. 템플릿 렌더링
View를 사용하려면 먼저 페이지를 렌더링하기 위한 thinkfacadeView
파사드 클래스
fetch 메소드를 소개합니다매개변수: 정적 페이지의 경로, 기본 해당 정적 페이지컨트롤러 코드class Index{ Public function index(){ } return View::fetch(); }}
<? php
namespace appcontroller;
use thinkfacadeView;
코드 보기
참고: Index 클래스는 view아래의 디렉터리에 해당합니다. 참고: index 메서드는 view
5 아래 디렉터리의 정적 파일에 해당합니다. 템플릿 변수
할당 메서드 할당은 전역 변수 할당에 속합니다. 템플릿 출력 { $name}controller code🎜namespace appcontroller;🎜🎜use thinkfacadeView;🎜🎜class Index{🎜🎜 public function index(){🎜🎜 // 템플릿 변수 할당🎜<head> <meta charset="UTF-8"> ;보기::할당('이름','Ouyang Ke');
보기::할당('email','oyk@php.cn') [
'이름' = & gt; ,
'이메일' = & gt;'oyk@php.cn'
])
}
}
코드 보기<!DOCTYPE html>
<html>
< title>ThinkPHP6</title>
</head>
<body>
이름: {$name}
<br>
이메일: {$email}
</body&g t;
</html>
6. 항목 공용 디렉토리는 웹에서 액세스할 수 있는 유일한 디렉토리입니다
리소스 파일을
에 넣습니다.- 항목 파일, 기본값은 index.php
-
public/static
- 7. 예제
이 페이지 정적 파일입니다.
- <!DOCTYPE html>
- <html> < head>
public function index(){ ~ ~ ~ ~ ~ ~ '제목' = >> ~ 사용자 목록',<link rel="stylesheet" 유형 ="text/css" href="layui/css/layui.css">
<script type="text/javascript" src="layui/layui.js"></script>
< ;style type="text/css">
.header{width:100%;height: 50px ;line-height: 50px;ground: #2e6da4;color:#ffffff;}
.title{margin-left : 20px;글꼴 크기: 20px;}
.userinfo{float: 오른쪽;여백-오른쪽: 10px ;}
.userinfo a{color:#ffffff;}
.menu{너비: 200px;배경:# 333744;위치:절대;}
.main{위치: 절대;왼쪽:200px;오른쪽:0px; }
.layui-collapse{border: none;} .layui-colla-item{border -top:none;} .layui-colla-title{배경:#42485b;색상:#ffffff ;}.layui-colla-content{border-top:none;padding:0px;}
.content 범위{배경: #009688;여백 왼쪽: 30px;padding: 10px;color:#ffffff;}
.content div{border-bottom: solid 2px #009688;margin-top: 8px;}
.content 버튼{float: right;margin-top: -5px;}
</style>
< /head>
<body>
<div>
<span><span style="font-size: 20px;">XXX</span>--后台管理系统</span> ;
<span>【欧阳克】<span><a href="javascript:;">退출</a></span></span>
</div>
<div id="menu">
<divlay-accordion>
<div>
<h2>商城管리< /h2>
<div class="layui- colla-contentlayui-show">
<ul class="layui-navlayui-nav-tree"lay-filter="test">
<li><a href="list.html ">商品列表</a></li>
<li><a href="list.html">商品列表</a></li>
<li> ;<a href="list.html">商product列表</a></li>
<li><a href="list.html">商product列表</a>
</ul>
</div>
</div>> "> 상품 목록</a></li>
lt;li> ;< a href="list.html">제품 목록</a></li>
div>
> <a href="list.html"> ;제품 목록</li> ;/li> ~ > ;
</div>
</div>
<div style="padding:10px;">
<div>
<span> ;商品列表</span>
<div></div>
</div>
번째> > > lt;/td>
> 드롭 숄더 소매 도톰한 스웨트 BF 스타일 ~ <td>2019-12-12< /td>
d>2</td> 화려한 울 코트의 새로운 여성 기질 슈트 칼라 & lt;/td & gt;
& lt; td & gt; ;
& lt; td & gt;ㅋㅋㅋ > 새 여성복의 대비되는 울 코트 & lt;/td & gt; & lt; td & gt; gt; 699 & lt;/td & lt; td & gt; 열기 & lt;/ td>
> 겨울 의류 2019 새로운 스타일의 여성 정장 칼라 대비 컬러 울 코트 코트 td> </td> ; ~ > td>닫기</td>ㅋㅋㅋ > 새 여성복의 대비되는 울 코트 & lt;/td & gt;
& lt;/TD & gt; gt; 699 & lt;/td & lt; td & gt; 열기 & lt;/ td> ~ </table>;</body>
</html>
<script>
layui.use(['element','layer','laypage'], function(){
var 요소 = layui.element;
var laypage = layui.laypage;
$ = layui.jquery;
layer = layui.layer; documentElement.clientHeight - 50;
$('#menu').height(height);
}
</script>
컨트롤러 코드, 이 데이터는 테스트 데이터이며 나중에 데이터베이스에서 읽혀집니다.
namespace appcontroller;
use thinkfacadeView;
class Index{
ㅋㅋㅋ '제목' => '장바구니', '제목' => 사용자 주소', > ~ ~ ~ '제목' = > '개인 센터' '제목' '제목' => '왼쪽 메뉴 모음', ㅋㅋㅋ 긴팔 살구탑 후드 루즈한 자수 아트 드롭숄더 소매 두꺼운 스웨트셔츠 BF style', '고양이' => '여성의류', '가격' => 189, '할인' => 6,'상태' => 1 , 8080000' ], [ 'ID' = & gt; 2, '제목' = & gt; 'Qiushui Yiren 양면 모직 겨울 2019 신상 여성 기질 양복 콜라보레이션 대비 울 코트 아우터 재킷', '고양이' = & gt; '여성복 여성 의류', ~ ~ ~ -12', > '마이크로-미들 하이-웨이스트 스트레이트 발 청바지 남성', '고양이' = & gt; '남성 의류', '가격' = & gt; 179, '할인' = & gt; 8, '상태' = > 2,
00'
'id'= & gt; ' = & gt; '남성 의류',
’ ’ s s ’ s ’ // '상태' => '열림', 'add_time' => ; 019-12- ~ ~ > '로그인' = & gt; $ 로그인, '왼쪽' = & gt; $ 왼쪽, '오른쪽' = & gt $ 오른쪽;]; 코드, 컨트롤러 데이터는 view
<!DOCTYPE html>
<html>
<head>
<title>{$title}--백엔드 관리 시스템</title>
<link rel="stylesheet" type="text/css" href="/static/layui/css/layui.css">
<script type="text/javascript " src="/static/ layui/layui.js"></script>
<style type="text/css">
.header{width:100%;height: 50px;line-height: 50px; background: # 2e6da4;color:#ffffff;}
.title{margin-left: 20px;font-size: 20px;}
.userinfo{float: right;margin-right: 10px;}
.userinfo a{color: #ffffff;}
.menu{폭: 200px;배경:#333744;위치:절대;}
.main{위치: 절대;왼쪽:200px;오른쪽:0px;}
.layui-collapse{경계: 없음; }
.layui-colla-item{border-top:none;}
.layui-colla-title{배경:#42485b;color:#ffffff;}
.layui-colla-content{border-top: none;padding:0px;}
.contentspan{배경: #009688;margin-left: 30px;padding: 10px;color:#ffffff;}
.content div{border-bottom: solid 2px # 009688;margin-top: 8px;}
.content 버튼{float: right;margin-top: -5px;}
</style>
</head>
<body>
< ;div>
<span><span style="font-size: 20px;">{$title}</span>--后台管理系统</span>
<span>【 {$login}】<span><a href="javascript:;">退출</a></span></span>
</div>
<div id ="menu">
<divlay-accordion>
<div>
<h2>{$left.0.title}</h2>
<div class="layui- colla-contentlayui-show">
<ul class="layui-navlayui-nav-tree"lay-filter="test">
<li><a href="index.html ">{$left.0.lists.0.title}</a></li>
<li><a href="index.html">{$left.0.lists .1.title}</a></li>
</ul>
</div>
</div>
<div>
<h2>{$left[1]['title']}</h2>
<div>
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li><a href="index.html">{$left.1.lists.0.title}</a></li>
<li><a href="index.html">{$left.1.lists.1.title}</a></li>
<li><a href="index.html">{$left.1.lists.2.title}</a></li>
<li><a href="index.html">{$left.1.lists.3.title}</a></li>
</ul>
</div>
</div>
<div>
<h2>{$left.2.title}</h2>
<div>
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li><a href="index.html">{$left.2.lists.0.title}</a></li>
<li><a href="index.html">{$left.2.lists.1.title}</a></li>
<li><a href="index.html">{$left.2.lists.2.title}</a></li>
</ul>
</div>
</div>
</div>
</div>
<div style="padding:10px;">
<div>
<span> ;商品列表</span>
<div></div>
</div>
<테이블>
<머리>
<번째>ID ;
<번째>商品标题</th>
<번째>分类
<번째>价格
<번째>折扣
<일>状态</일>
<일>添加时间< ;/th>
</tr>
</thead>
<tbody>
<tr>
<td>{$right.0.id}</td>
ㅋㅋㅋ <td>{$right.0.price }</td> <td>{$right.0.discount}</td> <td>{$right.0.status}</td><td> {$right.0.add_time}</td> </tr> <tr>
<td> ;{$right.1.title}</td> <td>{$right.1.cat}</td> <td>{$right.1.price}</ ㅋㅋㅋ> ㅋㅋㅋ <td>{$right.1.add_time }</td>
</tr> <tr> <td>{$right.2.id}</td> ; <td>{$right.2. title}</td> <td>{$right.2.cat}</td> <td>{$right.2.price}</td><td> ;{$right.2.status}</td> <td>{$right.0.discount}</td> <td>{$right.2.add_time}</ td> </tr> <tr> <td>{$right.3.id}</td>
<td>{$right.3.title}< /td> <td>{$right.3.cat}</td> <td>{$right.3.price}</td> <td>{$right ... </tr> </tbody> </table> </div>
</body>
</html>
<script>
layui.use(['element','layer','laypage'], function(){
var 요소 = layui.element;
varlaypage =layui.laypage;
$ =layui.jquery;
layer =layui.layer;
ResetMenuHeight();
});
// 새로워진 设置菜单容器고도
ㅋㅋㅋ