這篇文章為大家帶來了關於thinkphp的相關知識,其中主要整理了ThinkPHP6.0入門的相關問題,ThinkPHP是一個免費開源的,快速、簡單的面向對象的輕量級PHP開發框架,是為了敏捷WEB應用開發簡化企業應用開發而誕生的,下面一起來看一下,希望對大家有幫助。
推薦學習:《PHP影片教學》
ThinkPHP是一個免費開源的,快速、簡單的物件導向的輕量級PHP開發框架,是為了敏捷WEB應用開發和簡化企業應用開發而誕生的。 ThinkPHP從誕生以來一直秉持簡潔實用的設計原則,在保持出色的效能和至簡程式碼的同時,更注重易用性。遵循Apache2
開源授權協議發布,意味著你可以免費使用ThinkPHP,甚至允許把你基於ThinkPHP開發的應用開源或商業產品發布/銷售。
TP 框架是免費開源的、輕量級的、簡單快速且敏捷的 PHP 框架
ThinkPHP6.0 要求 PHP 版本是 7.1 以上,官方推薦 7.3
除了 PHP7.1 ,還需要開啟 PDO 資料庫引擎與 MBstring 字串擴充
官網不提供軟體包下載,官方推薦使用composer下載和更新
關於composer的安裝和使用不做介紹
由於composer預設鏡像來源在國外,連結速度較慢,因此安裝的時間可能會比較長,我們建議使用國內鏡像(阿里雲),程式碼如下
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
如果你是第一次安裝,或者你需要安裝全新框架,在命令列介面,切換到你需要安裝的WEB目錄,執行以下命令
composer create-project topthink/think tp
這裡的「tp」是專案的根目錄名,你可以任意更改,這個就是我們後邊常提到的應用根目錄
如果你之前已經安裝過,那麼切換到你的應用根目錄下面,然後執行下面的命令進行更新
composer update topthink/framework
在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控制器的index方法,而http://localhost/的實際路徑是http://localhost/index.php/index/index,(具體原因這裡不做詳細解釋,後邊在進行探討)
當然你現在可以把localhost配置為本地域名進行訪問,這裡不做贅述
3.這裡以tp .com為例:存取index控制器的index操作
http://tp.com 選取中使用index.php 指定index.php入口文件,預設控制者的預設方法
http://tp.com/index.php/index #
#http://tp.com/index.php/index/index 指定index.php入口文件,index控制器的index方法 ##四.開發規格發展規格沒什麼好講直接參考手冊官方文件
五.目錄結構目錄結構也沒必要講直接參考手冊官方文件
#
在项目的开发阶段,我们建议开启框架的调试模式
当调试模式开启后,会牺牲一部分执行效率,但能大大提高我们的 开发排错能力
当部署生产环境时,我们再关闭调试模式即可
默认安装的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('database.username'); } }
对于config文件
<?php return [ // 默认使用的数据库连接配置 'default' => 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中文網其他相關文章!