>  기사  >  PHP 프레임워크  >  ThinkPHP를 사용하는 방법

ThinkPHP를 사용하는 방법

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼원래의
2019-08-26 15:15:267190검색

ThinkPHP를 사용하는 방법

1. 프로젝트 배포

1. 가상 호스트 배포/로컬 배포

public/index.php를 제거하고 루트 디렉터리/index.php로 변경합니다. 웹사이트 루트 디렉터리에 index.php 파일을 생성하세요. 내용은 다음과 같습니다.

<?php
// 定义应用目录
define(&#39;APP_PATH&#39;, __DIR__ . &#39;/apps/&#39;);
// 加载框架引导文件
require  &#39;./thinkphp/start.php&#39;;

기본적으로는 이것이 가장 간단한 구성입니다.

2. 서버 배포

서버 배포 프로젝트 파일 입구는 공개입니다. 장점: 공개 디렉터리에 있는 파일만 외부 네트워크에서 볼 수 있습니다. , 확장, 테스트, 공급업체. 더 간단한 의미는 이러한 파일 아래의 콘텐츠는 도메인 이름을 통해 액세스할 수 없지만 프레임워크 사용에는 영향을 미치지 않는다는 것입니다.

2. 모듈 생성(모듈 자동 생성)

내 프로젝트는 로컬 www/thinkphp 디렉토리에 배포됩니다. 그렇게 하기 전에 프로젝트를 완료하는 데 필요한 모듈 수를 명확하게 고려하십시오.

예제 시작

1. Common(공용 모듈), Home(프런트엔드 모듈), Admin(백엔드 모듈)의 세 가지 모듈을 만듭니다. 공개 모듈은 필수적입니다.

수정의 경우 public 아래에 index.php 이렇게 열어주세요

// 定义应用目录
define(&#39;APP_PATH&#39;, __DIR__ . &#39;/../application/&#39;);
// 加载框架引导文件
require __DIR__ . &#39;/../thinkphp/start.php&#39;;

맨 마지막에 이 두 문장을 추가해주세요

$build = include &#39;../build.php&#39;;
// 运行自动生成
\think\Build::run($build);

build.php 설정 (디렉토리 자동 생성) 매뉴얼 참고 : http://www kancloud.cn/manual/thinkphp5/118021

프로젝트의 루트 디렉터리에 build.php 파일이 있습니다. 파일을 열면 다음과 같은 내용이 표시됩니다.

<?php
return [
    // 生成应用公共文件
    &#39;__file__&#39; => [&#39;common.php&#39;, &#39;config.php&#39;, &#39;database.php&#39;],
 
    // 定义demo模块的自动生成 (按照实际定义的文件名生成)
    &#39;demo&#39;     => [
        &#39;__file__&#39;   => [&#39;common.php&#39;],
        &#39;__dir__&#39;    => [&#39;behavior&#39;, &#39;controller&#39;, &#39;model&#39;, &#39;view&#39;],
        &#39;controller&#39; => [&#39;Index&#39;, &#39;Test&#39;, &#39;UserType&#39;],
        &#39;model&#39;      => [&#39;User&#39;, &#39;UserType&#39;],
        &#39;view&#39;       => [&#39;index/index&#39;],
    ],
    // 其他更多的模块定义
];

그런 다음 필요한 파일 이름을 지정합니다. 여기에 추가하세요. 다음과 같이 데모를 직접 주석 처리할 수 있습니다.

<?php
return [
    // 生成应用公共文件
    &#39;__file__&#39; => [&#39;common.php&#39;, &#39;config.php&#39;, &#39;database.php&#39;],
    //公共模块目录
    &#39;common&#39; => [
        &#39;__file__&#39;   => [&#39;common.php&#39;],
        &#39;__dir__&#39;    => [&#39;controller&#39;, &#39;model&#39;,&#39;lang&#39;],
        &#39;controller&#39; => [&#39;Index&#39;],
        &#39;model&#39;      => [&#39;Base&#39;],
    ],
    // Index模块
    &#39;home&#39;     => [
        &#39;__file__&#39;   => [&#39;common.php&#39;],
        &#39;__dir__&#39;    => [&#39;behavior&#39;, &#39;controller&#39;, &#39;model&#39;, &#39;view&#39;,&#39;lang&#39;],
        &#39;controller&#39; => [&#39;Index&#39;],
        &#39;model&#39;      => [&#39;Test&#39;],
        &#39;view&#39;       => [&#39;index/index&#39;],
    ],
    // Admin 模块
    &#39;admin&#39;     => [
        &#39;__file__&#39;   => [&#39;common.php&#39;],
        &#39;__dir__&#39;    => [&#39;behavior&#39;, &#39;controller&#39;, &#39;model&#39;, &#39;view&#39;,&#39;lang&#39;],
        &#39;controller&#39; => [&#39;Index&#39;],
        &#39;model&#39;      => [&#39;Test&#39;],
        &#39;view&#39;       => [&#39;index/index&#39;],
    ], 
];

1) SITE_PATH와 RUNTIME_PATH는 모두 나중에 쉽게 호출할 수 있도록 먼저 index.php에 배치됩니다.

2) 이 두 가지는 함께 사용해야 합니다

$build = include &#39;./build.php&#39;;
// 运行自动生成
\think\Build::run($build);

관련 권장 사항: "ThinkPHP Tutorial"

3. 기본 클래스 만들기

시작하기 전에 먼저 "기본 클래스"를 설정해야 합니다. 왜 모직물인가? 예를 들어, 회원센터 관련 컨트롤러에 접속하려면 해당 컨트롤러에 회원 관련 컨트롤러에 대한 접근을 허용하기 위한 '로그인 제한'이 있어야 하나요? 기본 클래스의 역할이 나옵니다.

1. 세 가지 주요 기본 클래스 생성

원본 기본 클래스

위치: thinkphpappscommoncontrollerbase.php

기능: 기본 모듈, Index 모듈, Admin 모듈 아래의 콘텐츠를 모두 호출할 수 있습니다.

코드:

<?php
/**
 * 原始基类
 * */
namespace app\Common\controller;
use  think\Controller;
class Base extends Controller{
    public function _initialize()
    {
        parent::_initialize();
        echo &#39;原始基类&#39;;
    }
    public function test1(){
        return &#39;test1&#39;;
    }
}

인덱스 모듈 기본 클래스

위치: thinkphpappscommoncontrollerbase.php

기능: 인덱스 모듈 아래의 컨트롤러는 "기본 클래스를 상속"하고 "기본 클래스를 호출"해야 합니다.

코드:

<?php
/**
 * 前端基类
 * */
namespace app\index\controller;
use  app\Common\controller\Base;
class IndexBase extends  Base
{
    public function _initialize()
    {
        parent::_initialize();
    }
    public function index()
    {        
    }
}

관리 모듈 기본 클래스

위치: thinkphpappscommoncontrollerbase.php

기능: 관리 모듈 아래의 컨트롤러는 "기본 클래스를 상속"하고 "기본 클래스를 호출"해야 합니다.

코드:

/**
 * 后台首页
 * */
namespace app\Admin\controller;
use app\Admin\controller\AdminBase;
class Index extends AdminBase
{
    public function _initialize()
    {
        parent::_initialize();
    }
    public function index()
    {
        return $this->fetch();
    }
}

(사용자 모듈 기본 클래스, 멤버가 있으면 이것도 생성해야 함)

기본 클래스를 만드는 주요 목적은 "상속"과 "호출"입니다.

4. 템플릿 경로를 설정하세요

기본 템플릿 경로는 모듈/뷰 파일에 있습니다. 관리하기 불편하다고 생각하셔서 Template 디렉터리에 설정하고 싶으시면 그렇게 하시면 됩니다.

템플릿 매개변수, 영향을 받을 수 있는 매개변수는 현재 모듈 아래의 config.php template->view_path 매개변수입니다.

실제 작업

1. 공유 매개변수 구성

index 또는 Admin 모듈에서 config.php 호출을 용이하게 하기 위해 apps/config.php에서 일부 매개변수를 설정합니다.

apps/config.php, 일부 매개변수를 추가하세요.

&#39;template&#39;               => [// 模板路径
        &#39;view_path&#39;    => &#39;template/&#39;,     // 就是这里
/**
     * 前台文件配置
     * Author: MR.zhou
     * */
    &#39;index&#39; => [
        // 模快名称
        &#39;model_name&#39; =>&#39;index&#39;,
        // 默认模板文件名称
        &#39;default_template&#39; => &#39;default&#39;,       // 这里可以切换模块下的默认模板名称
    ],
    /**
     * 后台文件配置
     * Author: MR.zhou
     * */
    &#39;admin&#39;=>[
        // 模快名称
        &#39;model_name&#39; =>&#39;admin&#39;,
        // 默认模板文件名称
        &#39;default_template&#39; =>&#39;default&#39;,        // 这里可以切换模块下的默认模板名称
],

2. 템플릿 매개변수 설정

index/config.php

&#39;template&#39;=> [
    // 模板路径
    &#39;view_path&#39;=> config(&#39;template.view_path&#39;).config(&#39;index.model_name&#39;).&#39;/&#39;.config(&#39;index.default_template&#39;).&#39;/&#39;,
],

admin/config.php

<?php
//配置文件
return [
    // 模板配置
    &#39;template&#39;               => [
        // 模板路径
        &#39;view_path&#39;    => config(&#39;template.view_path&#39;).config(&#39;admin.model_name&#39;).&#39;/&#39;.config(&#39;index.
        default_template&#39;).&#39;/&#39;,
    ],
];

확장:

1. 템플릿 접미사 view_suffix, 그 영향

http://localhost/thinkphp/index / news/index/id/1212

http://localhost/thinkphp/index/news/index/id/1212.html

5. 데이터 폴더를 구성하세요

프로젝트 아래에 다양한 파일들을 보면 , 조금 지저분하다고 느껴지면 다음 구성을 수행할 수 있습니다.

데이터 폴더를 구성하고 다양한 파일을 정리하여 더욱 편안하게 보이도록 하세요.

1. 런타임 폴더를 설정하세요

index.php

define(&#39;RUNTIME_PATH&#39;, __DIR__ . &#39;/data/runtime/&#39;);

2. 업로드된 이미지와 파일을 저장하도록 업로드를 설정하세요

3. jquery.js, 부트스트랩, 일부 효과 플러그인 등을 저장하도록 설정하세요. on

// 视图输出字符串内容替换
&#39;view_replace_str&#39;       => [
    &#39;__DATA__&#39; => SITE_PATH.&#39;data/&#39;,
    // 上传文件路径
    &#39;__UPLOAD__&#39; =>SITE_PATH.&#39;data/upload/&#39;,
    //  静态文件路径 (如bootshop,js,css)
    &#39;__STATIC__&#39; =>SITE_PATH.&#39;data/upload/&#39;,    
],

4 , 템플릿 아래에 CSS, js, 이미지를 쉽게 호출할 수 있도록 템플릿 파일 경로를 정의하세요.

&#39;view_replace_str&#39;       => [
    // 模板文件路径
    &#39;__TEMPLATE__&#39; => config(&#39;template.view_path&#39;).config(&#39;index.model_name&#39;).&#39;/&#39;.config(&#39;index.default_template&#39;)
    .&#39;/&#39;,
    // 模板下的共享文件路径(css,js,images...)
    &#39;__PUBLIC__&#39; => SITE_PATH.&#39;/&#39;.config(&#39;template.view_path&#39;).config(&#39;index.model_name&#39;).&#39;/&#39;.config(&#39;index.
    default_template&#39;).&#39;/public/&#39;,
],

템플릿 페이지 참조:

<script src=__PUBLIC__js/jqueyr.js”>
<link href=”__PUBLIC__css/style.css”>
<img src="__PUBLIC__images/1.png">

5 원하는 것을 넣을 수 있으며 직접 설정하세요

6. 공용 모듈 common

common 이 모듈은 Thinkphp 프레임워크인 공용 모듈에 속하며 기본적으로 호출될 수 있습니다.

실용: 모든 모듈에서 사용할 수 있는 모델, 컨트롤 및 이벤트를 추출하여 공개 모듈 아래에 배치합니다.

1. 공개 이벤트 appscommoncommon.php

기능: 일반적으로 비밀번호 암호화 저장, 드롭다운 상자 캡슐화, 폴더에 파일 읽기

/**
 * 密码加密
 * @param string $password
 * @param string $password_salt
 * @return string
 */
function password($password, $password_salt){
    return md5(md5($password) . md5($password_salt));
}

2 공개 구성 appscommonconfig.php

인덱스 모듈과 관리 모듈의 공통 부분 추출하여 여기에 넣습니다. 예: 공개 템플릿 경로

&#39;template&#39;               => [
    // 模板路径
    &#39;view_path&#39;    => &#39;template/&#39;,
]

3, 공개 언어 패키지 appscommonlangzh-cn.php

比如经常用到的词 提交成功、提交失败、执行成功、执行错误、添加成功、添加失败、修改成功、修改失败、删除成功、删除失败... 可以放到公共语言包,在Index模块、Admin模块都可以用的到。

<?php
/**
 * 全局语言包
 * zh-cn
 * */
return [
    &#39;success&#39;          => &#39;执行成功&#39;,
    &#39;error&#39;            => &#39;执行失败&#39;,
    &#39;add_success&#39;      => &#39;添加成功&#39;,
    &#39;add_error&#39;        => &#39;添加失败&#39;,
    &#39;edit_success&#39;     => &#39;修改成功&#39;,
    &#39;edit_error&#39;       => &#39;修改失败&#39;,
    &#39;delete_success&#39;   => &#39;删除成功&#39;,
    &#39;delete_error&#39;     => &#39;删除失败&#39;,
];

php页面调用:$lang = lang('success')

html页面调用:{:lang('success')}

4、公共控制器 apps\common\common.php

跟上面差不多个意思 Index模块、Admin模块都能用到的放这里。

5、公共模块 apps\common\common.php

跟上面差不多个意思 Index模块、Admin模块都能用到的放这里。

七、设置错误页面①

设置网站的错误提示页面,也是一个很重要的环节。

1、空操作

在当前控制器里面增加_empty操作

public function _empty(){
    $this->error(&#39;方法不存在&#39;);
}
Public function index(){       
}

测试方法:

正常:

http://localhost/thinkphp/index/index/index

错误: 会提示“方法不存在”

http://localhost/thinkphp/index/index/df

2、空控制器

在模块下建立Error控制器,

位置: index/error.php 相关参数:empty_controller

代码:

<?php
/**
 * 前端首页
 * */
namespace app\index\controller;
use app\index\controller;
class Error extends IndexBase
{
    public function index(){
        echo &#39;访问的控制器不存在&#39;;
    }
}

测试:http://localhost/thinkphp/index/inde3dfx/index

3、异常错误抛出

能够影响它的是,当前模块下的配置文件。如果当前配置文件无效,则会自动锁定公共模块下的配置参数。

相关参数:exception_tmpl,error_message

// 异常页面的模板文件
&#39;exception_tmpl&#39;=> THINK_PATH . &#39;tpl&#39; . DS . &#39;think_exception.tpl&#39;,

八、设置错误页面②

完美的去设置错误页面

1、准备一个错误页面 error.html,位置:thinkphp\template\index\default\error.html ,准备把前段所有的错误提示都指向这里。

2、空操作指向

在apps\index\controller\Indexbase.php,“基类”里面设置_empty。

<?php
/**
 * 前端基类
 * */
namespace app\index\controller;
use  app\Common\controller\Base;
class IndexBase extends  Base
{
    public function _initialize()
    {
        parent::_initialize();
    }
    /**
     * 空操作 跳转
     * */
    public function _empty(){
        //abort();     
        exception();     //  这两种方法都可以
    }
}

3、空控制器指向

在apps\index\controller\Error.php

<?php
/**
 * 空控制器跳转
 * */
namespace app\index\controller;
use app\index\controller;
class Error extends IndexBase
{
    public function index(){
        abort();
    }
}

4、异常错误指向 

在 index/config.php exception_tmpl 参数

&#39;exception_tmpl&#39;         => THINK_PATH . &#39;tpl&#39; . DS . &#39;think_exception.tpl&#39;,
 //&#39;exception_tmpl&#39; =>&#39;E:/wamp/www/thinkphp/template/index/default/error.html&#39;,

注意:地址一定要绝对路径。

拓展,

401,404,500等错误页面自定义

相关参数:http_exception_template

手册地址:http://www.kancloud.cn/manual/thinkphp5/163256

代码:

config.php

&#39;http_exception_template&#39;    =>  [
        // 定义404错误的重定向页面地址
        404 =>  ROOT_PATH.config(&#39;template.view_path&#39;).config(&#39;index.model_name&#39;).&#39;/&#39;.config
        (&#39;index.default_template&#39;).&#39;/404.html&#39;,
        // 还可以定义其它的HTTP status
        401 =>  ROOT_PATH.config(&#39;template.view_path&#39;).config(&#39;index.model_name&#39;).&#39;/&#39;.config
        (&#39;index.default_template&#39;).&#39;/401.html&#39;,
    ],

控制器调用

abort(404,'错误信息')

error.html,404.html 页面代码,可以参考thinkphp\thinkphp\tpl\think_exception.tpl

九、路由别名Route

主要作用:隐藏自己的真实路由名称

Route.php

方法一:

<?php
use think\Route;
Route::alias(&#39;home&#39;,&#39;index/index&#39;);
Route::alias(&#39;admin&#39;,&#39;admin/index&#39;);

方法二:

<?php
return [
    &#39;__pattern__&#39; => [
        &#39;name&#39; => &#39;\w+&#39;,
    ],
    &#39;[hello]&#39;     => [
        &#39;:id&#39;   => [&#39;index/hello&#39;, [&#39;method&#39; => &#39;get&#39;], [&#39;id&#39; => &#39;\d+&#39;]],
        &#39;:name&#39; => [&#39;index/hello&#39;, [&#39;method&#39; => &#39;post&#39;]],
    ],
    &#39;__alias__&#39; =>  [
        &#39;home&#39;  =>  &#39;index/index&#39;,
       &#39;admin&#39;=> &#39;admin/index&#39;
    ],
];

http://localhost/thinkphp/index.php/home/test 同等与http://localhost/thinkphp/index.php/index/index/test

http://localhost/thinkphp/index.php/admin/edit/ 同等与http://localhost/thinkphp/index.php/admin/index/edit

注释:别名 => ‘模型/控制器’ ( 别名等于模块+控制器)

十、路由设置,隐藏indx.php

网站根目录下.htaccess

<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

위 내용은 ThinkPHP를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.