一,安装流程
composer安装
1 下载 composer 并双击安装 选中可以更改php.ini 然后在cmd 中键入composer 测试是否安装好
2 使用国内镜像的composer 在cmd中切换到所要安装位置WWW目录中键入
- composer config -g repo.packagist composer https://packagist.phpcomposer.com
3 安装thinkphp5 cmd中键入
- composer create-project topthink/think=5.0.* tp5 --prefer-dist
目录介绍
- 系统类 WWW\thinkphp5\thinkphp\lilibrary\think
- 系统方法 WWW\thinkphp5\thinkphp\helper.php
- Controller 实例化控制器
- action 调用模块的操作方法
- config 设置和获取配置
- dump 浏览器友好的变量输出
地址简介
开启调试debug
有错误将展示出来
- <php ?
- 'app_debug' =>true;
二,模块 和调用方法
在 application 里面新建一个admin模块 如yii那样新建 mvc三个文件夹
并写相关方法 注意命名空间
- <?php
- namespace app\admin\controller;
- use app\index\controller\Index as Index1; // 防重名
- use think\Controller;
- class Index extends Controller{
- public function Index()
- {
- return view('index');
- }
- public function UseIndexController()
- {
- $admin = new \app\index\controller\User; //后台调用前台方法
- return $admin->index();
- }
- }
- ?>
- ?>
跨控制器调用方法 实例类的两个方法
- <?php
- 方法1
- $admin = new \app\index\controller\User;
- return $admin->index2();
- 方法2
- $admin = controller('index/index');
- return $admin->index2();
直接调用方法
- <?php
- 同一个类里面
- $this->test();
- self::test();
- Index::test();
- action('index'); // 使用当前类方法
- 同模块下不同类
- action('User/index'); // 使用同模块下的不同类方法
- 不同模块下
- action('admin/Index/admintest');
三,配置的介绍
优先级 动态配置 > 模块配置 > 场景配置 > 应用配置 > 惯例配置
其优先级由 WWW\thinkphp5\thinkphp\library\think\App.php中init( )方法 决定
1惯例配置 WWW\thinkphp5\thinkphp\convention.php
2 应用配置 WWW\thinkphp5\application\config.php 指针对 application 所有应用中的 统一配置
3 extra扩展配置 WWW\thinkphp5\application\database.php 和 WWW\thinkphp5\application\extra 文件夹
自定义的扩展配置就在 extra文件夹里面新建
模块也可以支持自己的扩展配置文件,只需要放入 application/模块名/extra下面就可以自动加载。
4 场景配置
说明:譬如公司一套数据库配置 家里一套数据库配置 回到家将 :
1 将 WWW\thinkphp5\application\config.php 'app_status' => 'home',
2 在 WWW\thinkphp5\application 目录下 新建home.php 此后此文件将会覆盖 database.php 里面的配置
- <?php
- return [
- "database"=>[
- // 数据库类型
- 'type' => 'mysql',
- // 服务器地址
- 'hostname' => '127.0.0.1',
- // 数据库名
- 'database' => 'tp5',
- // 用户名
- 'username' => 'root',
- // 密码
- 'password' => 'root',
- // 端口
- 'hostport' => '3306',
- ]
- ];
5 模块配置
1 WWW\thinkphp5\application\index 模块下 新建 config.php 并写入配置如上
2 之后此模块下 获取配置参数 将优先在此文件中 取值
6 动态配置 即设置配置参数值
- <?php
- 使用系统函数
- config('asm.php','赵本山'); // 设置 asm数组中键为php 的值
- 使用系统类
- \think\Config::set('asm.php','刘德华');
7 系统函数和系统类 获取配置参数
我们在 惯例配置 或者 应用配置 中的return[] 里面新增数组
如果是 扩展配置 则需要加上文件名称 如 echo config('database.asm.php');
- <?php
- 'asm'=>[
- 'kouhao'=>'为上市努力',
- 'php' =>'付明皖',
- ],
- 之后在方法里面调用
- $asm = config('asm'); //使用系统函数
- echo $asm['php'];
- echo config('asm.php'); //以点 去取数组值
- 使用系统类
- $asm = \think\Config::get('asm');
- echo $asm['kouhao'];
- echo \think\Config::get('asm.php'); //以点 去取数组值
四,环境变量配置和读取
注意不能读取整个数组
- <?php
- 在网站根目录(public和vender同级目录)下新建 .env 文件
- app_debug=true
- app_status=home
- [database]
- root=root
- password=123456
- 读取
- \think\Env::get('name');
- \think\Env::get('name','没有'); //也可以给不存在时定默认值
- $env = \think\Env::get('database.password'); //获取数组下的值
- var_dump($env);
可以在应用配置里面更改部分经常需要更改的参数放在环境变量里面方便更改
- <?php
- use \think\Env;
- return [
- // +----------------------------------------------------------------------
- // | 应用设置
- // +----------------------------------------------------------------------
- // 应用调试模式
- 'app_debug' => Env::get('app_debug',false),
- // 应用Trace
- 'app_trace' => false,
- // 应用模式状态
- 'app_status' => Env::get('app_status',''),
五,实现前后端分离 并美化url
绑定模块
- 首先保证有两个模块 index admin
- 在public文件夹里新增后台入口文件 admin.php 并将原入口文件拷贝进去
- 在新建的后台入口文件admin.php定义应用目录下面添加 define('BIND_MODULE','admin');
- 在原来的入口文件index.php定义应用目录下面添加 define('BIND_MODULE','index');
- 之后访问 http://www.tp5.com/index.php 将进入index模块
- 而访问 http://www.tp5.com/admin.php 将进入admin模块
隐藏入口文件
apache
- httpd.conf 搜索rewrite
- # LoadModule rewrite_module modules/mod_rewrite.so 去除前面的 #
- 找到相关域名配置文件 设置访问权限
- AllowOverride None 修改为: AllowOverride All
- 最后在入口文件里.htaccess
- <IfModule mod_rewrite.c>
- Options +FollowSymlinks -Multiviews
- RewriteEngine On
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
- </IfModule>
如果想实现隐藏入口的 .php
单入口文件可以这样,否则只能 index模块下隐藏 .php 其他模块依然不可以
将原文件倒数第二行 RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
改成了 RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
就添加了一个 ‘?’ 而已