溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ThinkPHP6.0入門(mén)知識(shí)點(diǎn)有哪些

發(fā)布時(shí)間:2022-07-16 09:41:21 來(lái)源:億速云 閱讀:146 作者:iii 欄目:編程語(yǔ)言

本篇內(nèi)容主要講解“ThinkPHP6.0入門(mén)知識(shí)點(diǎn)有哪些”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“ThinkPHP6.0入門(mén)知識(shí)點(diǎn)有哪些”吧!

一.框架介紹

ThinkPHP是一個(gè)免費(fèi)開(kāi)源的,快速、簡(jiǎn)單的面向?qū)ο蟮?strong>輕量級(jí)PHP開(kāi)發(fā)框架,是為了敏捷WEB應(yīng)用開(kāi)發(fā)和簡(jiǎn)化企業(yè)應(yīng)用開(kāi)發(fā)而誕生的。ThinkPHP從誕生以來(lái)一直秉承簡(jiǎn)潔實(shí)用的設(shè)計(jì)原則,在保持出色的性能和至簡(jiǎn)代碼的同時(shí),更注重易用性。遵循Apache2開(kāi)源許可協(xié)議發(fā)布,意味著你可以免費(fèi)使用ThinkPHP,甚至允許把你基于ThinkPHP開(kāi)發(fā)的應(yīng)用開(kāi)源或商業(yè)產(chǎn)品發(fā)布/銷(xiāo)售。

  1. TP 框架是免費(fèi)開(kāi)源的、輕量級(jí)的、簡(jiǎn)單快速且敏捷的 PHP 框架

  2. ThinkPHP6.0 要求 PHP 版本是 7.1+以上,官方推薦 7.3

  3. 除了 PHP7.1+,還需要開(kāi)啟 PDO 數(shù)據(jù)庫(kù)引擎和 MBstring 字符串?dāng)U展

二.安裝過(guò)程

官網(wǎng)不提供軟件包下載,官方推薦使用composer下載和更新

關(guān)于composer的安裝和使用不做介紹

由于composer默認(rèn)鏡像源在國(guó)外,鏈接速度較慢,因此安裝的時(shí)間可能會(huì)比較長(zhǎng),我們建議使用國(guó)內(nèi)鏡像(阿里云),代碼如下  

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

如果你是第一次安裝,或者你需要安裝全新框架,在命令行界面,切換到你需要安裝的WEB目錄,執(zhí)行如下命令    

composer create-project topthink/think tp

這里的“tp”是項(xiàng)目的根目錄名,你可以任意更改,這個(gè)就是我們后邊常提到的應(yīng)用根目錄

如果你之前已經(jīng)安裝過(guò),那么切換到你的應(yīng)用根目錄下面,然后執(zhí)行下面的命令進(jìn)行更新

composer update topthink/framework

三.運(yùn)行測(cè)試

在cmd命令行進(jìn)入項(xiàng)目目錄運(yùn)行命令

php think run

在瀏覽器輸入:   http://127.0.0.1:8000   或   http://localhost:8000你就會(huì)看到歡迎界面  

如果   80   端口沒(méi)有被占用的情況下,你也可以直接使用    

php think run -p 80

然后你就可以直接使用http://localhost/ 直接訪問(wèn)了,這時(shí)瀏覽器默認(rèn)訪問(wèn)文件是:應(yīng)用根目錄/app/controller/index.php控制器的index方法,而http://localhost/的實(shí)際路徑是http://localhost/index.php/index/index,(具體原因這里不做詳細(xì)解釋,后邊在進(jìn)行探討)

當(dāng)然你現(xiàn)在可以把localhost配置為本地域名進(jìn)行訪問(wèn),這里不做贅述

3.這里以tp.com為例:訪問(wèn)index控制器的index操作

http://tp.com                                     訪問(wèn)默認(rèn)入口文件、默認(rèn)控制器和默認(rèn)方法

http://tp.com/index.php                     指定index.php入口文件,默認(rèn)控制器的默認(rèn)方法

http://tp.com/index.php/index           指定index.php入口文件,index控制器的默認(rèn)方法

http://tp.com/index.php/index/index 指定index.php入口文件,index控制器的index方法

四.開(kāi)發(fā)規(guī)范

開(kāi)發(fā)規(guī)范沒(méi)什么好講直接參考手冊(cè)官方文檔

五.目錄結(jié)構(gòu)

目錄結(jié)構(gòu)也沒(méi)必要講直接參考手冊(cè)官方文檔

六.開(kāi)啟調(diào)試模式

在項(xiàng)目的開(kāi)發(fā)階段,我們建議開(kāi)啟框架的調(diào)試模式

當(dāng)調(diào)試模式開(kāi)啟后,會(huì)犧牲一部分執(zhí)行效率,但能大大提高我們的 開(kāi)發(fā)排錯(cuò)能力

當(dāng)部署生產(chǎn)環(huán)境時(shí),我們?cè)訇P(guān)閉調(diào)試模式即可

默認(rèn)安裝的tp6.0框架默認(rèn)不開(kāi)啟調(diào)試模式,這時(shí)我們可以在瀏覽器輸入不存在的控制器或錯(cuò)誤的地址進(jìn)行驗(yàn)證

ThinkPHP6.0入門(mén)知識(shí)點(diǎn)有哪些表示調(diào)試未開(kāi)啟

通過(guò)命令行安裝的 TP6.0,會(huì)自動(dòng)在根目錄生成一個(gè).example.env 文件,即環(huán)境變量示例文件,我們只要把這個(gè)文件更名為.env   (通常復(fù)制一份更名即可),   即可生效,同時(shí)開(kāi)啟調(diào)試模式  

//環(huán)境變量示例文件

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打開(kāi)調(diào)試模式,若要關(guān)閉調(diào)試模式將true改為false,另外還有應(yīng)用配置,數(shù)據(jù)庫(kù)和語(yǔ)言設(shè)置,當(dāng)然你也可以配置更多內(nèi)容

現(xiàn)在我們?cè)谒⑿聞偛诺捻?yè)面,會(huì)提示控制器不存在,并且右下角會(huì)出現(xiàn) Trace 調(diào)試小圖標(biāo),說(shuō)明調(diào)試開(kāi)啟了ThinkPHP6.0入門(mén)知識(shí)點(diǎn)有哪些

開(kāi)啟調(diào)試模式有什么用:

a. 記錄系統(tǒng)運(yùn)行流程的執(zhí)行過(guò)程  

b.   展示錯(cuò)誤和調(diào)試信息,并開(kāi)啟日志記錄  

c.   模版修改可以及時(shí)生效   (   不會(huì)被緩存干擾   )  

d.   啟動(dòng)右下角的   Trace   調(diào)試功能,更加強(qiáng)大  

e.   發(fā)生異常時(shí),也會(huì)顯示異常信息  

還有一種模式,就是關(guān)閉調(diào)試的時(shí)候,也可以顯示簡(jiǎn)要的錯(cuò)誤信息,打開(kāi)根目錄下 config 的 app.php 最后一行設(shè)置為true

'show_error_msg'   => false,

七.配置信息

配置文件有兩種形式:一種是采用.env適用于本地開(kāi)發(fā),另一種就是在根目錄下的config目錄下,包含整個(gè)項(xiàng)目的配置,適用于生產(chǎn)環(huán)境

注意:官方明確表示.env文件部署后會(huì)被忽略,所以它僅適用于本地開(kāi)發(fā)

配置優(yōu)先級(jí),如果在本地測(cè)試時(shí)   .env   優(yōu)先于 config,從   config   配置中可以看出,它是先讀取   .env   的,然后再默認(rèn)配置一個(gè)自己的,而部署環(huán)境則忽略.env,只讀取config

開(kāi)開(kāi)發(fā)項(xiàng)目過(guò)程中,我們少不了獲取配置文件中的屬性值,那么我們?cè)趺茨塬@取到這些值呢?接下來(lái)我們以獲取數(shù)據(jù)庫(kù)的用戶名為例

對(duì)于.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');                                              我們寫(xiě)一個(gè)getEnv發(fā)方法獲取databases下的username,這個(gè)比較簡(jiǎn)單,直接獲取.env文件下的,database下的username
<?php
namespace app\controller;

use app\BaseController;
use think\facade\Env;//引入env類(lèi)

class Index extends BaseController
{

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

對(duì)于config文件

<?php

return [
    // 默認(rèn)使用的數(shù)據(jù)庫(kù)連接配置
    'default'         => env('database.driver', 'mysql'),

    // 自定義時(shí)間查詢規(guī)則
    'time_query_rule' => [],

    // 自動(dòng)寫(xiě)入時(shí)間戳字段
    // true為自動(dòng)識(shí)別類(lèi)型 false關(guān)閉
    // 字符串則明確指定時(shí)間字段類(lèi)型 支持 int timestamp datetime date
    'auto_timestamp'  => true,

    // 時(shí)間字段取出后的默認(rèn)時(shí)間格式
    'datetime_format' => 'Y-m-d H:i:s',

    // 時(shí)間字段配置 配置格式:create_time,update_time
    'datetime_field'  => '',

    // 數(shù)據(jù)庫(kù)連接配置信息
    'connections'     => [
        'mysql' => [
            // 數(shù)據(jù)庫(kù)類(lèi)型
            'type'            => env('database.type', 'mysql'),
            // 服務(wù)器地址
            'hostname'        => env('database.hostname', '127.0.0.1'),
            // 數(shù)據(jù)庫(kù)名
            'database'        => env('database.database', ''),
            // 用戶名
            'username'        => env('database.username', 'root123'),
            // 密碼
            'password'        => env('database.password', ''),
            // 端口
            'hostport'        => env('database.hostport', '3306'),
            // 數(shù)據(jù)庫(kù)連接參數(shù)
            'params'          => [],
            // 數(shù)據(jù)庫(kù)編碼默認(rèn)采用utf8
            'charset'         => env('database.charset', 'utf8'),
            // 數(shù)據(jù)庫(kù)表前綴
            'prefix'          => env('database.prefix', ''),

            // 數(shù)據(jù)庫(kù)部署方式:0 集中式(單一服務(wù)器),1 分布式(主從服務(wù)器)
            'deploy'          => 0,
            // 數(shù)據(jù)庫(kù)讀寫(xiě)是否分離 主從式有效
            'rw_separate'     => false,
            // 讀寫(xiě)分離后 主服務(wù)器數(shù)量
            'master_num'      => 1,
            // 指定從服務(wù)器序號(hào)
            'slave_no'        => '',
            // 是否嚴(yán)格檢查字段是否存在
            'fields_strict'   => true,
            // 是否需要斷線重連
            'break_reconnect' => false,
            // 監(jiān)聽(tīng)SQL
            'trigger_sql'     => env('app_debug', true),
            // 開(kāi)啟字段緩存
            'fields_cache'    => false,
        ],

        // 更多的數(shù)據(jù)庫(kù)配置信息
    ],
];

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

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

我們寫(xiě)一個(gè)getConfig發(fā)方法獲取databases下的username,這個(gè)就要麻煩一點(diǎn),這里獲取的順序依次是:

所在配置文件——>數(shù)據(jù)庫(kù)連接配置信息——>mysql數(shù)據(jù)庫(kù)——>用戶名

需要注意的是:由于config配置文件的優(yōu)先級(jí)低于.env,所以,如果當(dāng)前是處于開(kāi)發(fā)環(huán)境,如下代碼并不會(huì)獲取到config目錄下database配置文件的用戶名,而是獲取.env文件的用戶名,所以想要獲取正確配置則先關(guān)閉開(kāi)發(fā)環(huán)境

<?php
namespace app\controller;

use app\BaseController;

use think\facade\Env;//引入env類(lèi)

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');

    }
}

對(duì)于上邊獲取config配置有限讀取.env文件的問(wèn)題,我們可以在獲取信息之前先使用has方法判斷當(dāng)前需要獲取值是否存在兩個(gè)文件再?zèng)Q定讀取哪一個(gè)文件

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

use think\facade\Env;//引入env類(lèi)

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輸出

到此,相信大家對(duì)“ThinkPHP6.0入門(mén)知識(shí)點(diǎn)有哪些”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI