ホームページ  >  記事  >  PHPフレームワーク  >  thinkphpの使い方

thinkphpの使い方

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼オリジナル
2019-08-26 15:15:267122ブラウズ

thinkphpの使い方

#1. プロジェクトのデプロイメント

1. 仮想ホストのデプロイメント/ローカル デプロイメント

public/index.php を削除し、ルート ディレクトリの /index.php に変更します。

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

という内容で、Web サイトのルート ディレクトリにファイルindex.php を作成します。これが最も単純な構成です。

2. サーバー展開

サーバー展開プロジェクト ファイルの入り口はパブリックです。利点: パブリック ディレクトリ内のファイルは部外者のみが参照できます。パブリックと同じレベルのファイルは外部では隠されます。ネットワーク: thinkphp、アプリ、拡張、テスト、ベンダーなど。簡単に言うと、これらのファイルの下のコンテンツにはドメイン名を介してアクセスできないということですが、フレームワークの使用には影響しません。

2. モジュールの作成 (モジュールの自動生成)

私のプロジェクトはローカルの www/thinkphp ディレクトリにデプロイされます。そうする前に、プロジェクトを完了するために必要なモジュールの数を明確に検討してください。

例の開始

1. Common (パブリック モジュール)、Home (フロントエンド モジュール)、および Admin (バックエンド モジュール) の 3 つのモジュールを作成します。パブリックモジュールは必須です。

修正の場合はpublic配下のindex.phpですので、このように開きます

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

この2文を最後に追加します

$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) これら 2 つは一緒に使用する必要があります

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

関連する推奨事項: 「

ThinkPHP チュートリアル

3. 基本クラスを作成する

開始する前に、まず「基本クラス」を設定する必要があります。たとえば、メンバー センターに関連するコントローラーにアクセスしたい場合、これらのコントローラーにはメンバー関連のコントローラーへのアクセスを許可する「ログイン制限」が必要ですか?基底クラスの役割が出てきます。

1. 3 つの主要な基本クラスを作成します

元の基本クラス

場所: thinkphp\apps\common\controller\base.php

関数: Baseモジュール、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;;
    }
}

インデックス モジュールの基本クラス

場所: thinkphp\apps\common\controller\base.php

関数: Index モジュールの下コントローラーは「基本クラスを継承」し、「基本クラスを呼び出す」必要があります。

コード:

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

管理モジュールの基本クラス

場所: thinkphp\apps\common\controller\base.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;,
    ],
];

Extension:

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、ブートストラップ、一部のエフェクト プラグインなどを保存します

// 视图输出字符串内容替换
&#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. 共通モジュールの使用方法

共通モジュールは次のとおりですパブリック モジュールである Thinkphp フレームワークに追加し、デフォルトは [呼び出すことができます] です。

実際の使用法: 任意のモジュールで使用される可能性のあるモデル、コントロール、イベントを抽出し、パブリック モジュールの下に置きます。

1. パブリック イベント apps\common\common.php

関数: 通常、パスワードの暗号化、ドロップダウン ボックスのカプセル化を保存し、特定のフォルダーの下にあるファイルを読み取ります

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

2 、パブリック構成 apps\common\config.php

Index モジュールと Admin モジュールの共通部分を抽出し、ここに配置します (例: パブリック テンプレート パス

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

3、パブリック言語パッケージ) apps \common\lang\zh-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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。