ThinkPHP6起步
下载与安装
官方API:https://www.kancloud.cn/manual/thinkphp6_0/1037538
tp6官网不提供软件包下载,采用Composer 下载和更新。
windows中安装composer:https://www.wubin.work/blog/articles/484
下载好后使用cmd一路cd
D:\phpstudy\phpstudy_pro\WWW>cd xuexi
然后创建项目:
composer create-project topthink/think tp6(文件夹名称)
如果要更新你的项目版本,直接进入项目根目录,然后直接如下代码:
composer update topthink/framework
下载好之后,在浏览器中,直接访问/tp6/public即可,打开网站目录。
或者使用php think run
D:\phpstudy\phpstudy_pro\WWW\xuexi\tp6>php think run
使用启动域名直接访问,可以避免掉一些资源路径的问题。
如果80 端口没有被占用的情况下,使用如下命令直接访问http://localhost;
php think run -p 80
开启调试与配置文件
开启调试模式
在项目根目录下,如果是通过命令行安装,则会有一个.example.env文件,将文件名重命名为.env,然后确保文件中APP_DEBUG= true,即可打开调试模式。
.env 环境变量用于本地开发测试,部署后会被忽略
这里如果不进行“伪静态”的配置,大概率会提示:No input file specified.
这时候就是我们本地的服务器没有开启伪静态,以apache服务器为例,开启方法如下:
0、在httpd.conf配置文件中加载了mod_rewrite.so模块,找到:
# LoadModule rewrite_module modules/mod_rewrite.so
找到上面这句话,如果前面有#一定要把#去掉。
LoadModule rewrite_module modules/mod_rewrite.so
1、我们打开httpd.conf文件,在里面搜索“AllowOverride”
2、将里面搜索到的 AllowOverride: None改为All
实际上还有第三处,建议也改为:All
<Directory />
AllowOverride All # None改为All
</Directory>
主要有如下两处:
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All
和
#
# "${SRVROOT}/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "${SRVROOT}/cgi-bin">
AllowOverride All # None改为All
Options None
Require all granted
</Directory>
然后保存,重启服务器。
3、生成.htaccess文件放到应用入口文件的同级目录下,即在public文件夹里面的.htaccess文件里面加入(注意,在项目目录下也有个htaccess文件,一定要修改public文件夹里面的htaccess文件才有用),并加入如下配置:
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>
保存,然后修改app/controller/index.php,给它添加一个方法
class Index extends BaseController
{
public function index()
{
return '...';
}
public function config() {
return '123';
}
}
然后访问http://localhost/xuexi/tp6/public/index/config即可,如果发现屏幕上输出了123,那么证明已经配置成功。
获取Env文件中的配置值与config目录中配置文件的值
// config文件夹中的database.php文件
return [
// 数据库连接配置信息
'connections' => [
'mysql' => [
// 数据库类型
'type' => env('database.type', 'mysql'),
// 服务器地址
'hostname' => env('database.hostname', '127.0.0.1'),
],
// 更多的数据库配置信息
],
];
// 获取config文件夹中的database.php文件中的connections属性中的mysql字段里hostname项的值
return Config::get('database.connections.mysql.hostname');
获取.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
// 判断是否存在
echo Env::has('database.hostname');
获取[database]下hostname中的值
Env::get('database.hostname')
url
url访问规则:单应用:http://serverName/index.php/控制器/操作/参数/值…;
TP6.0 默认是单应用模式,多应用需要作为扩展安装。
根目录下public/下的index.php(入口文件);
控制器:app 目录下有一个controller 控制器目录,其中每一个文件都是控制器文件;
比如我创建controller/Test.php【注意,控制器文件名必须首字母大写】
并输入以下内容
<?php
namespace app\controller;
class Test {
public function hello()
{
return '123';
}
}
这时浏览器访问:
http://localhost/xuexi/tp6/public/index.php/test/hello
http://localhost/xuexi/tp6/public/test/hello
【public/index.php 中的index.php 可以省略,只要设置URL 重写即可;具体操作参考《二》】
都会输出123,以上两个url都指向同一个结果,都一样。
这里的hello对应的就是叫“操作”。
我们再修改一下类:
class Test {
public function hello($value = '')
{
return '123' . $value;
}
}
那么我们访问:http://localhost/xuexi/tp6/public/index.php/test/hello/value/world
这里的value就是参数,world就是值,最终输出:123world
所以test:控制器,hello:操作(方法),value:参数,world:值
当方法中对value设置了默认值时候,不传入world也不会出错。
http://localhost/xuexi/tp6/public/test/hello/value =》输出123
兼容模式
如果上面那种形式的URL 不支持的话,可以使用兼容模式的方式来访问:
http://localhost/xuexi/tp6/public/?s=test/hello/value/world
就是将index.php替换为?s=即可。
文件目录名等开发规范
文件的规范如下:
a. 目录名(小写+下划线);
b. 类库和函数文件统一以.php 为后缀;
c. 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致;
d. 类(包含接口和Trait)文件采用驼峰式命名(首字母大写),其它采用小写+下划线命名;
e. 类名(包括接口和Trait)和文件名保持一致,统一采用驼峰式命名(首字母大写);
函数和类、属性命名规范如下:
a. 类的命名采用驼峰法(首字母大写),如:User、UserType;
b. 函数的命名使用小写字母和下划线(小写字母开头)的方式,如:get_client_ip;
c. 方法的命名使用驼峰法(首字母小写),如:getUserName;
d. 属性的命名使用驼峰法(首字母小写),如:tableName;
e. 特例:以双下划线__打头的函数或方法作为魔术方法,如:__call 和__autoload;
常量与配置的规范如下:
a. 常量以大写字母和下划线命名,如:APP_PATH;
b. 配置参数以小写字母和下划线命名,如:url_convert;
c. 环境变量定义使用大写字母和下划线命名,如:APP_DEBUG;
数据表和字段的规范如下:
a. 数据表和字段采用小写加下划线方式命名;
b. 并注意字段名不要以下划线开头,如: think_user 表和user_name
c. 字段不建议使用驼峰和中文作为数据表及字段命名;
目录结构
ThinkPHP6.0 支持多应用模式部署,app 是应用目录,默认情况下,是采用的单模式;
单模式目录结构如下:
www web部署目录
|-- app 应用目录
|--controller 控制器目录
|--model 模型目录
|--..
|--common.php 公共函数文件
|--event.php 事件定义文件
多应用模式下,结构如下(了解)
www web部署目录
|-- app 应用目录
|--app_name 应用目录
|--controller 控制器目录
|--model 模型目录
|--view 视图目录
|--common.php 公共函数文件
|--..
|--common.php 公共函数文件
|--event.php 事件定义文件