ThinkPHP6.0 の入門レベルのナレッジポイントの概要

WBOY
リリース: 2022-07-15 20:32:39
転載
3701 人が閲覧しました

この記事では、thinkphp に関する関連知識を提供します。主に、ThinkPHP6.0 の使用開始に関連する関連問題を整理しています。ThinkPHP は、無料でオープン ソースで、高速かつシンプルなオブジェクト指向のライトです。大規模な PHP です。アジャイルな WEB アプリケーション開発と簡素化されたエンタープライズ アプリケーション開発のために生まれた開発フレームワークについて、一緒に見ていきましょう。

ThinkPHP6.0 の入門レベルのナレッジポイントの概要

推奨学習: 「PHP ビデオ チュートリアル

1. フレームワークの紹介

ThinkPHP は無料のオープンソース、高速かつシンプルなオブジェクト指向の 軽量 PHP 開発フレームワーク は、アジャイルな WEB アプリケーション開発と簡素化されたエンタープライズ アプリケーション開発のために誕生しました。 ThinkPHP は誕生以来、シンプルで実用的な設計原則を堅持しており、優れたパフォーマンスと最小限のコードを維持しながら、使いやすさにも重点を置いています。 Apache2 オープン ソース ライセンス契約に基づいて公開するということは、ThinkPHP を無料で使用できることを意味し、ThinkPHP に基づいて開発したアプリケーションをオープン ソースまたは商用製品として公開/販売することもできます。

  1. TP フレームワークは、無料のオープンソースで、軽量、シンプル、高速、機敏な PHP フレームワークです。

  2. ThinkPHP6.0 には PHP バージョン 7.1 以降が必要です。公式推奨は 7.3

  3. PHP7.1 に加えて、PDO データベース エンジンと MBstring 文字列拡張機能も有効にする必要があります。

  4. #2. インストール プロセス

公式 Web サイトではソフトウェア パッケージのダウンロードは提供されていません。公式では、composer を使用してダウンロードして更新することを推奨しています

composer について インストールや使い方については紹介しません

#composer はデフォルトの画像ソースが海外にあり、リンク速度が遅いため、インストールに時間がかかる場合があります。国内イメージ (Alibaba Cloud) のコードは次のとおりです。

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
ログイン後にコピー

これが初めてのインストールである場合、または新しいフレームワークをインストールする必要がある場合は、コマンド ライン インターフェイスで次のように切り替えます。インストールして次のコマンドを実行する必要がある WEB ディレクトリ

composer create-project topthink/think tp
ログイン後にコピー

ここでの「tp」はプロジェクトのルートディレクトリ名です。任意に変更できます。アプリケーションのルートです。後でよく説明するディレクトリ

以前にインストールしたことがある場合は、アプリケーション ルート ディレクトリに切り替えて、次のコマンドを実行して

composer update topthink/framework
ログイン後にコピー
# を更新します##3. テストを実行します。

cmd コマンド ラインでプロジェクト ディレクトリを入力してコマンドを実行します。

php think run
ログイン後にコピー

ブラウザに次のように入力します。

http://127.0.0.1:8000

###または ###

http://localhost:8000 ようこそインターフェイスが表示されます

#########もし ### 80 ポートが占有されていない場合は、直接使用することもできます

php think run -p 80
ログイン後にコピー
その後、http://localhost/ を使用して直接アクセスできます。このとき、ブラウザのデフォルトのアクセス ファイルは次のとおりです。 : アプリケーションのルート ディレクトリ /app/controller/index.php コントローラのインデックス メソッド、および http://localhost/ の実際のパスは http://localhost/index.php/index/index です (具体的な理由は次のとおりです)。

もちろん、アクセス用のローカル ドメイン名として localhost を構成することもできますが、ここでは詳しく説明しません。 3.例として tp .com を示します: インデックス コントローラーのインデックス操作にアクセスしますhttp://tp.com デフォルトのエントリ ファイル、デフォルトのコントローラー、およびデフォルトのメソッドにアクセスします

http://tp.com/ Index.php は、デフォルト コントローラのデフォルト メソッドである、index.php エントリ ファイルを指定します。

http://tp.com/index.php/index INDEX コントローラのデフォルトメソッドである、index.php エントリファイルを指定します。

http://tp.com/index.php/index/index インデックスのインデックスメソッドである、index.php エントリファイルを指定します。コントローラー

# 4. 開発仕様書

# 開発仕様書については特に言うことはありません、マニュアル公式ドキュメントを直接参照

##5. ディレクトリ構造

ディレクトリ構造については、直接参照する必要はありません。マニュアル公式ドキュメント

 

六.开启调试模式

在项目的开发阶段,我们建议开启框架的调试模式

当调试模式开启后,会牺牲一部分执行效率,但能大大提高我们的 开发排错能力

当部署生产环境时,我们再关闭调试模式即可

默认安装的tp6.0框架默认不开启调试模式,这时我们可以在浏览器输入不存在的控制器或错误的地址进行验证

表示调试未开启

通过命令行安装的 TP6.0,会自动在根目录生成一个.example.env 文件,即环境变量示例文件,我们只要把这个文件更名为.env   (通常复制一份更名即可),   即可生效,同时开启调试模式  

//环境变量示例文件

APP_DEBUG = true

[APP]
DEFAULT_TIMEZONE = Asia/Shanghai

[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = test
USERNAME = username
PASSWORD = password
HOSTPORT = 3306
CHARSET = utf8
DEBUG = true

[LANG]
default_lang = zh-cn
ログイン後にコピー

不难看出文件APP_DEBUG = true打开调试模式,若要关闭调试模式将true改为false,另外还有应用配置,数据库和语言设置,当然你也可以配置更多内容

现在我们在刷新刚才的页面,会提示控制器不存在,并且右下角会出现 Trace 调试小图标,说明调试开启了

开启调试模式有什么用:

a. 记录系统运行流程的执行过程  

b.   展示错误和调试信息,并开启日志记录  

c.   模版修改可以及时生效   (   不会被缓存干扰   )  

d.   启动右下角的   Trace   调试功能,更加强大  

e.   发生异常时,也会显示异常信息  

还有一种模式,就是关闭调试的时候,也可以显示简要的错误信息,打开根目录下 config 的 app.php 最后一行设置为true

'show_error_msg'   => false,
ログイン後にコピー

 

七.配置信息

配置文件有两种形式:一种是采用.env适用于本地开发,另一种就是在根目录下的config目录下,包含整个项目的配置,适用于生产环境

注意:官方明确表示.env文件部署后会被忽略,所以它仅适用于本地开发

配置优先级,如果在本地测试时   .env   优先于 config,从   config   配置中可以看出,它是先读取   .env   的,然后再默认配置一个自己的,而部署环境则忽略.env,只读取config  

开开发项目过程中,我们少不了获取配置文件中的属性值,那么我们怎么能获取到这些值呢?接下来我们以获取数据库的用户名为例

对于.env文件。

APP_DEBUG = true

[APP]
DEFAULT_TIMEZONE = Asia/Shanghai

[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = test
USERNAME = root
PASSWORD = 123456
HOSTPORT = 3306
CHARSET = utf8
DEBUG = true

[LANG]
default_lang = zh-cn
ログイン後にコピー

比如要获取[DATABASE]下的USERNAME=root获取方式如下:                                                    

use think\facade\Env;                                                            return Env::get('database.username');                                              我们写一个getEnv发方法获取databases下的username,这个比较简单,直接获取.env文件下的,database下的username
ログイン後にコピー
<?php
namespace app\controller;

use app\BaseController;
use think\facade\Env;//引入env类

class Index extends BaseController
{

    public function getEnv(){
        return Env::get(&#39;database.username&#39;);
    }
}
ログイン後にコピー

对于config文件

<?php

return [
    // 默认使用的数据库连接配置
    &#39;default&#39;         => env('database.driver', 'mysql'),

    // 自定义时间查询规则
    'time_query_rule' => [],

    // 自动写入时间戳字段
    // true为自动识别类型 false关闭
    // 字符串则明确指定时间字段类型 支持 int timestamp datetime date
    'auto_timestamp'  => true,

    // 时间字段取出后的默认时间格式
    'datetime_format' => 'Y-m-d H:i:s',

    // 时间字段配置 配置格式:create_time,update_time
    'datetime_field'  => '',

    // 数据库连接配置信息
    'connections'     => [
        'mysql' => [
            // 数据库类型
            'type'            => env('database.type', 'mysql'),
            // 服务器地址
            'hostname'        => env('database.hostname', '127.0.0.1'),
            // 数据库名
            'database'        => env('database.database', ''),
            // 用户名
            'username'        => env('database.username', 'root123'),
            // 密码
            'password'        => env('database.password', ''),
            // 端口
            'hostport'        => env('database.hostport', '3306'),
            // 数据库连接参数
            'params'          => [],
            // 数据库编码默认采用utf8
            'charset'         => env('database.charset', 'utf8'),
            // 数据库表前缀
            'prefix'          => env('database.prefix', ''),

            // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
            'deploy'          => 0,
            // 数据库读写是否分离 主从式有效
            'rw_separate'     => false,
            // 读写分离后 主服务器数量
            'master_num'      => 1,
            // 指定从服务器序号
            'slave_no'        => '',
            // 是否严格检查字段是否存在
            'fields_strict'   => true,
            // 是否需要断线重连
            'break_reconnect' => false,
            // 监听SQL
            'trigger_sql'     => env('app_debug', true),
            // 开启字段缓存
            'fields_cache'    => false,
        ],

        // 更多的数据库配置信息
    ],
];
ログイン後にコピー

比如要获取[DATABASE]下的USERNAME=root获取方式如下:

use think\facade\Config;
return Config::get('database.connections.mysql.username');

我们写一个getConfig发方法获取databases下的username,这个就要麻烦一点,这里获取的顺序依次是:

所在配置文件——>数据库连接配置信息——>mysql数据库——>用户名

需要注意的是:由于config配置文件的优先级低于.env,所以,如果当前是处于开发环境,如下代码并不会获取到config目录下database配置文件的用户名,而是获取.env文件的用户名,所以想要获取正确配置则先关闭开发环境

<?php
namespace app\controller;

use app\BaseController;

use think\facade\Env;//引入env类

class Index extends BaseController
{

    public function hello($name = 'ThinkPHP6')
    {
        return 'hello,' . $name;
    }


    public function getEnv(){
        return Env::get('database.username');
    }


    public function getConfig(){
        return Config::get('database.connections.mysql.username');

    }
}
ログイン後にコピー

对于上边获取config配置有限读取.env文件的问题,我们可以在获取信息之前先使用has方法判断当前需要获取值是否存在两个文件再决定读取哪一个文件

<?php
namespace app\controller;
use think\facade\Config;
use app\BaseController;

use think\facade\Env;//引入env类

class Index extends BaseController
{
   



    public function getEnv(){
        return Env::get('database.username');
    }


    public function getConfig(){
        return Config::get('database.connections.mysql.username');

    }

    public function getSite(){

        echo Env::has('database.username');
        echo Config::has('database.connections.mysql.username');
    }
}
ログイン後にコピー

我们得到的值为字符串用echo输出

推荐学习:《PHP视频教程

以上がThinkPHP6.0 の入門レベルのナレッジポイントの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!