本篇文章给大家带来了关于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默认镜像源在国外,链接速度较慢,因此安装的时间可能会比较长,我们建议使用国内镜像(阿里云),代码如下 1 | composer config -g repo.packagist composer https:
|
如果你是第一次安装,或者你需要安装全新框架,在命令行界面,切换到你需要安装的WEB目录,执行如下命令 1 | composer create-project topthink/think tp
|
这里的“tp”是项目的根目录名,你可以任意更改,这个就是我们后边常提到的应用根目录 如果你之前已经安装过,那么切换到你的应用根目录下面,然后执行下面的命令进行更新 1 | composer update topthink/framework
|
三.运行测试在cmd命令行进入项目目录运行命令 在浏览器输入: http://127.0.0.1:8000 或 http://localhost:8000你就会看到欢迎界面 如果 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 访问默认入口文件、默认控制器和默认方法 http://tp.com/index.php 指定index.php入口文件,默认控制器的默认方法 http://tp.com/index.php/index 指定index.php入口文件,index控制器的默认方法 http://tp.com/index.php/index/index 指定index.php入口文件,index控制器的index方法
四.开发规范开发规范没什么好讲直接参考手册官方文档
五.目录结构目录结构也没必要讲直接参考手册官方文档
六.开启调试模式在项目的开发阶段,我们建议开启框架的调试模式 当调试模式开启后,会牺牲一部分执行效率,但能大大提高我们的 开发排错能力 当部署生产环境时,我们再关闭调试模式即可 默认安装的tp6.0框架默认不开启调试模式,这时我们可以在浏览器输入不存在的控制器或错误的地址进行验证
表示调试未开启 通过命令行安装的 TP6.0,会自动在根目录生成一个.example.env 文件,即环境变量示例文件,我们只要把这个文件更名为.env (通常复制一份更名即可), 即可生效,同时开启调试模式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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 1 | show_error_msg => false,
|
七.配置信息配置文件有两种形式:一种是采用.env适用于本地开发,另一种就是在根目录下的config目录下,包含整个项目的配置,适用于生产环境 注意:官方明确表示.env文件部署后会被忽略,所以它仅适用于本地开发 配置优先级,如果在本地测试时 .env 优先于 config,从 config 配置中可以看出,它是先读取 .env 的,然后再默认配置一个自己的,而部署环境则忽略.env,只读取config 开开发项目过程中,我们少不了获取配置文件中的属性值,那么我们怎么能获取到这些值呢?接下来我们以获取数据库的用户名为例 对于.env文件。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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获取方式如下: 1 | use think\facade\Env; return Env::get( database.username ); 我们写一个 getEnv 发方法获取databases下的username,这个比较简单,直接获取.env文件下的,database下的username
|
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php
namespace app\controller;
use app\BaseController;
use think\facade\Env;
class Index extends BaseController
{
public function getEnv (){
return Env::get( database.username );
}
}
|
对于config文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | <?php
return [
default => env( database.driver , mysql ),
time_query_rule => [],
auto_timestamp => true,
datetime_format => Y-m-d H:i:s ,
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 => [],
charset => env( database.charset , utf8 ),
prefix => env( database.prefix ,
),
deploy => 0,
rw_separate => false,
master_num => 1,
slave_no =>
,
fields_strict => true,
break_reconnect => false,
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文件的用户名,所以想要获取正确配置则先关闭开发环境 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?php
namespace app\controller;
use app\BaseController;
use think\facade\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方法判断当前需要获取值是否存在两个文件再决定读取哪一个文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <?php
namespace app\controller;
use think\facade\Config;
use app\BaseController;
use think\facade\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输出 |