ホームページ  >  記事  >  PHPフレームワーク  >  thinkphp3と5の違いは何ですか?

thinkphp3と5の違いは何ですか?

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

thinkphp3と5の違いは何ですか?

#3.X 放棄する必要がある古いアイデア

URL変更

まず、3.「id」の取得に「get」メソッドを使用しているという甘さがあるという誤った指導をお詫びしたいと思います。 , そのような URL は $_GET に属しません。「param」を通じて取得できるようになりました。具体的な用途はリクエスト部分を通じて問い合わせることができます。

モデルの変更点

モデル クエリの新しいバージョンはデフォルトの 'object' を返し、システムはデフォルトで 'toArray' メソッドを追加します。多くの開発者は ' all' または 'select' 'toArray' を使用して配列に変換してみてください。開発者が 'object' の概念を理解し、'object' を使用してデータを使用したり、'db' メソッドを使用して操作したりできることを願っています。 「toArray」を悪用する開発者にとって、「all」または「select」の結果はオブジェクトの配列コレクションとなり、「toArray」を使用して変換することはできません。

関連する推奨事項: 「

ThinkPHP チュートリアル

新しいバージョンの変更点

##命名規則

ディレクトリ名とファイル名は「小文字のアンダースコア」を使用し、小文字で始まります;

クラス ライブラリと関数ファイル接尾辞は .php;

·クラスのファイル名はすべて名前空間で定義されており、名前空間のパスはクラス ライブラリ ファイルのパスと一致しています (大文字と小文字);

·クラス名とクラス ファイル名は一貫しており、キャメル ケースの名前付けを統一して使用する必要があります (最初の文字は大文字になります)

関数

·システムは関数に依存しなくなり、一般的に使用される操作パッケージのヘルパー関数のみを提供します;

· 単一文字関数は廃止され、システムはデフォルトでヘルパー関数をロードします。前の章「ヘルパー関数」を参照してください。

routing

5.0 URL アクセスは通常の URL モードをサポートしなくなり、ルーティングは通常のルーティング定義をサポートしなくなりましたが、すべての変更が行われました。ルール ルーティングの変数ルール (通常の定義) を照合する方法については、ここでは詳しく説明しません。

Controller

コントローラーの名前空間は調整されており、コントローラー クラスを継承する必要はありません。

·アプリケーション クラス ライブラリの名前空間は、モジュール名ではなく app (変更可能) として統合されます。

·デフォルトコントローラーのクラス名 コントローラー サフィックスを使用しない場合は、controller_suffix パラメーターを設定してコントローラー クラス サフィックスを有効にすることができます。

コントローラーの操作メソッドは、直接出力ではなくリターン モードを使用してデータを返します。 ;

従来の操作前・操作後メソッドを廃止;

バージョン比較

3.2 バージョンコントローラーの記述方法

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller 
{
    public function hello()
    {
        echo &#39;hello,thinkphp!&#39;;
    }
}

5.0 バージョン コントロール デバイスの書き込み方法

namespace app\index\controller;
class Index 
{
    public function index()
    {
        return &#39;hello,thinkphp!&#39;;
    }
}

3.2 バージョン コントローラーの名前

IndexController.class.php

5.0 バージョン コントローラーの名前

Index.php
**正しい出力テンプレートコントローラ内**

5.0 コントローラ内にテンプレートを出力します。使用方法は次のとおりです:

think\Controller を継承すると、次のように使用できます:

return $this->fetch(&#39;index/hello&#39;);

コントローラーが think\Controller を継承しない場合は、次を使用します。

return view(&#39;index/hello&#39;);
Model

改善点を古いバージョンと比較する必要がある場合は、モデルはデータベース、モデル、バリデータの 3 つの部分に分かれており、それぞれ M メソッド、モデル、自動検証に対応しており、それぞれが強化されています。

データベース

5.0ではデータベースクエリ機能が強化され、本来モデル経由で使用する必要があったチェーンクエリをDbクラス経由で直接呼び出せるようになりました。元の M 関数呼び出しは変更できます。db 関数を使用します。例:

3.2 version

M(&#39;User&#39;)->where([&#39;name&#39;=>&#39;thinkphp&#39;])->find();

5.0 version

db(&#39;User&#39;)->where(&#39;name&#39;,&#39;thinkphp&#39;)->find();
model

モデル クエリの新しいバージョンでは、静的メソッドが追加されています。例:

User::get(1); 
User::all();
User::where(&#39;id&#39;,&#39;>&#39;,10)->find();

モデル部分には多くの機能が強化されています。詳細については、「モデルの章」を参照してください。

自動検証

旧バージョンと比較すると、以前の自動検証とは異なるものとして理解できます;

ThinkPHP5。 0 検証が使用されます 独立した \think\Validate クラスまたはバリデーターが検証に使用されます。これはモデルに適用されるだけでなく、コントローラーで直接呼び出すこともできます。具体的な使用規則については、「検証」の章を参照してください。ここでは繰り返しません。

構成ファイル

新しいバージョンには、以前とは異なる多くの構成パラメーターまたは構成レベルが含まれています。コードを確認するか、注意深く確認することをお勧めします。公式開発マニュアルをよく読んで、設定の問題で 1 日を無駄にしないでください。

Exception

5.0 では、エラーに対する許容度がゼロです。デフォルトでは、あらゆるレベルのエラーに対して例外がスローされ、詳細なエラーを表示するために例外ページが再設計されました。 . デバッグを容易にするための情報。

システム定数の破棄

以前のバージョンと比較して、バージョン 5.0 ではシステムの変更が大幅に破棄されています。関連するニーズがある場合は、ユーザーが自分で定義できます。 ###

下面是废除常量

REQUEST_METHOD IS_GET IS_POST IS_PUT IS_DELETE IS_AJAX __EXT__ COMMON_MODULE MODULE_NAME CONTROLLER_NAME ACTION_NAME 
APP_NAMESPACE APP_DEBUG MODULE_PATH等

部分常量可以在Request里面进行获取,具体参考“请求章节”。

注:再次说明本章节仅仅为之前使用3.X版本开发者快速理解5.0所写,具体5.0的功能还需要开发者通读手册。

助手函数

5.0 助手函数和 3.2 版本的单字母函数对比如下:

thinkphp3と5の違いは何ですか?

1、过去的单字母函数已完全被替换掉,如下:

S=>cache,C=>config,M/D=>model,U=>url,I=>input,E=>exception,L=>lang,A=>controller,R=>action

2、模版渲染:

$this->display() => return view()/return $this->fetch();

3、在model中调用自身model:

$this => Db::table($this->table)

4、在新建控制器与模型时的命名:

①控制器去掉后缀controller:UserController => User

②模型去掉后缀model:UserModel => User

5、url访问:

如果控制器名使用驼峰法,访问时需要将各字母之间用下划线链接后进行访问。

eg:控制器名为AddUser,访问是用add_user来进行访问

6、在TP5中支持配置二级参数(即二维数组),配置文件中,二级配置参数读取:

①Config::get('user.type');

②config('user.type');

7、模板中支持三元运算符的运算:{$info.status ? $info.msg : $info.error}还支持这种写法:{$varname.aa ?? 'xxx'}或{$varname.aa ?: 'xxx'}

8、TP5内置标签:

系统内置的标签中,volist、switch、if、elseif、else、foreach、compare(包括所有的比较标签)、(not)present、(not)empty、(not)defined等。

9、TP5数据验证:

$validate = new Validate([&#39;name&#39; => &#39;require|max:25&#39;,&#39;email&#39; => &#39;email&#39;]);
$data = [&#39;name&#39; => &#39;thinkphp&#39;,&#39;email&#39; => &#39;thinkphp@qq.com&#39;];
if(!validate->check($data)){
debug::dump($validate->getError());
}

注:使用助手函数实例化验证器——$validate = validate('User');

10、TP5实现了内置分页,使用如下:

查询状态为1的用户数据,且每页显示10条数据

$list = model(&#39;User&#39;)->where(&#39;status&#39;,1)->paginate(10);
$page = $this->render();
$this->assign(&#39;_list&#39;,$list);
$this->assign(&#39;_page&#39;,$page);
return $this->fetch();

模板文件中分页输出代码如下:

<div>{$_page}</div>

以上がthinkphp3と5の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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