在线地址1:https://docs.qq.com/doc/DQUFPcGZHT0phYWZS
在线地址2:https://shimo.im/docs/1f9d4113b7a14cb8/
composer是一个工具,是为php项目准备的软件管家。
官网网址:https://getcomposer.org/
中文网址:http://www.phpcomposer.com/
composer资源仓库或应用市场
网址:https://packagist.org/
因为我们马上要使用的thinkphp5.1需要最低的PHP版本为PHP >= 5.6.0所以,这里你所需要安装的PHP版本一定比这个版本要高。
windows设置环境变量(windows 10)
设置完毕后,重新打开cmd窗口,输入 php –v
同时也要开启如下扩展 php.ini文件
extension=php_openssl.dll
extension=php_pdo_mysql.dll
extension=php_mbstring.dll
extension=php_fileinfo.dll
extension=php_curl.dll
extension=php_gd2.dll
extension=php_soap.dll
extension=php_mysqli.dll
extension=php_sockets.dll 【可选】
注:命令行下则打开后就生效,apache或nginx就需要重启相关的服务。
查看命令行下可用扩展
php –m
加管道过滤
php –m | findstr gd # window
下载composer.phar:https://getcomposer.org/download/
把下载好的composer.phar文件复制到PHP环境变量指定的目录中
命令创建bat文件
echo @php "%~dp0composer.phar" %*>composer.bat
由于众所周知的原因,国外的网站连接速度很慢。因此安装的时间可能会比较长或是安装不成功,我们建议通过切换composer国内镜像来解决此类问题。当然有钱的情况下,可以购买相关的渠道来访问国外网络。
以管理员身份打开cmd命令行窗口(windows用户)或控制台(Linux、Mac 用户)并执行如下命令:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
注意:最近phpcomposer镜像存在问题,可以改成
备选方案
composer config -g repo.packagist composer https://packagist.laravel-china.org
执行完毕,源切换为国内镜像,下载的速度会有所提升。
注:
composer网站问题,一定要切换为国内镜像,如有条件可使用
windows 7以上,mac或linux系统,一定要考虑到权限的问题。
3.1、安装thinkphp5.1
ThinkPHP5.1的环境要求如下:
PHP >= 5.6.0
PDO PHP Extension
MBstring PHP Extension
thinkphp5.1之前可以在thinkphp官方网站进行下载源码包,但是thinkphp5.1版本开始,官网不再提供下载版本,请使用Composer或者git方式安装和更新。
composer create-project [--prefer-dist] topthink/think=[版本号] tp5
如果不写版本号,则下载 php版本所支持的最高的稳定版本
例:
composer create-project --prefer-dist topthink/think=5.0.* tp5
注:
composer 表示执行composer程序
create-project 通过composer去创建项目
topthink/think 框架的名称
--prefer-dist 优先下载压缩包方式,而不是直接从github上下载源码
~5.1 >=5.1 < 6.0
^5.1 >=5.1 < 6.0
~5.1.0 >=5.1.0 < 5.2.0
^5.1.0 >=5.1.0 < 6.0
最终方案
composer create-project --prefer-dist topthink/think tp5.1
https://www.kancloud.cn/manual/thinkphp5_1/353950
runtime目录在linux和mac下面一定要设置可写的权限
重点的目录和文件
目录 |
功能 |
application |
应用目录,MVC就在此目录中,也是实现业务代码的所在的目录 |
application/common |
公共模块目录,在application可以自定创建自己的模块,但在common定义的函数和模型都是公用的 |
application/common.php |
公共函数库文件 |
config/app.php |
应用主配置文件 |
route |
路由文件目录 |
public |
虚拟主机指向的目录 |
application/[index或admin] |
表示index模块和admin模块 [自定义创建的] |
什么是路由
将用户的请求按照事先规划的方案提交给指定的控制器和 方法来进行处理。
Thinkphp框架提供了两种路由规则
进而可以让URL更规范以及优雅,提高网站的安全和网站URL访问的友好度。
Route类注册使用think\facade\Route类静态调用 think\Route.php
注:ThinkPHP5.1的路由定义更加对象化,并且默认开启路由(不能关闭),如果一个URL没有定义路由,则采用默认的PATH_INFO 模式访问URL。
打开apache重写模块
配置虚拟主机中允许重写
在入口文件中要有.htaccess文件
重启apache服务,让配置生效。访问时就可以不用带index.php文件了。
强制路由
在config/app.php配置文件中设置
'url_route_must' => true,
注:将开启强制使用路由,这种方式下面必须严格给每一个访问地址定义路由规则(包括首页),否则将抛出异常。
路由缓存
对于路由规则较多的应用可以大幅提升路由性能(仅部署模式有效)
'route_check_cache' => true,
注:如果路由定义中,有某个路由规则的路由地址使用了闭包的方式,那么路由缓存将会失效。
完全匹配
'route_complete_match' => true,
路由文件的位置:项目目录/routes/route.php文件中进行如下格式的定义
Route::请求方式('路由表达式',匿名函数);
Route::请求方式('路由表达式','[@]模块名/控制器名/方法名'); # 后讲到控制器时使用
注:给控制器方法设置好了请求的路由规则后,原来的pathinfo请求则失效,请求就会报异常,只能通过自定义路由规则来请求
Route::get('new/:id','News/read'); // 定义GET请求路由规则 查询
Route::post('new/:id','News/update'); // 定义POST请求路由规则 添加
Route::put('new/:id','News/update'); // 定义PUT请求路由规则 修改
Route::delete('new/:id','News/delete'); // 定义DELETE请求路由规则 删除
Route::any('new/:id','News/read'); // 所有请求都支持的路由规则 框架提供 不推荐
测试定义好的请求路由规则类型,使用postman软件来测试
# 必填参数
Route::请求方式('路由表达式/:参数',匿名函数);
# 可选参数
Route::请求方式('路由表达式/[:参数]',匿名函数);
路由分组功能允许把相同前缀的路由定义合并分组,这样可以简化路由定义,并且提高路由匹配的效率。
Route::group('分组名(字符串)或者分组路由参数(数组)','分组路由规则(数组或者闭包)');
Route::group('blog', function () {
Route::get(':id', 'read');
Route::post(':id', 'update');
Route::delete(':id', 'delete');
})->pattern(['id' => '\d+']);
# 分组的嵌套
Route::group(['method'=>'get'], function () {
Route::group('blog',function(){
Route::get(':id', 'read');
Route::post(':id', 'update');
Route::delete(':id', 'delete');
});
})->pattern(['id' => '\d+']);
打开配置文件application/app.php,有如下配置
'controller_suffix' => false,
# 表示默认情况下,控制器无特殊后缀。例如 Index控制器,文件名为Index.php
如果需要进行设置,可以设置为
'controller_suffix' => 'Controller',
# 表示控制器以Controller为后缀。例如Index控制器,文件名为IndexController.php
注:一般不建议进行修改,保持默认,框架默认给我们的配置。
php think build --module 分组名称
创建控制器的方式有两种:
#手动创建
application/模块目录/controller/目录下
命名规则:控制器名称(首字母大写) + (控制器后缀,默认没有) + .php
#命令行方式创建【推荐】
php think make:controller --plain 模块名/控制器名
# 参数说明
--plain 标准控制器 (默认创建的控制器是一个资源控制器,所以一般加上此选项)
如果创建时,没有在模块名称,则默认创建到公共模块中 【common】
默认情况下,错误描述比较模糊,不方便进行错误调试。这种模式通常叫做“部署模式”。
开发阶段可以将框架设置为调试模式,便于进行错误调试:
修改项目目录 config/app.php文件
实际开发中,使用第2种方案
可以为某个或者某些操作指定前置执行的操作方法,设置 beforeActionList属性可以指定某个方法为其他方法的前置操作,数组键名为需要调用的前置方法名,无值的话为当前控制器下所有方法的前置方法。
在应用开发中,经常会遇到一些带有提示信息的跳转页面,例如操作成功或者操作错误页面,并且自动跳转到另外一个目标页面。系统的\think\Controller类内置了两个跳转方法success和error,用于页面跳转提示。
此方法可根据不同的请求方式http标准请求还是ajax请求会自动返回数据(html/json)