安装与配置
单一入口
访问网站应用程序时,所有的请求都指向同一个文件.
好处:
项目结构规范,控制灵活,而且也更加安全.
文件夹
Appliication 相当于一个网站 可以有多个
Public 多个网站会有公共资源 这些公共资源就放在Public里面 比如图标等
ThinkPHP 框架目录,框架的核心程序包
.htaccess 用于伪静态的配置文件
index.php 入口文件,所有程序都通过这里访问
/Application/Home 主模块 包含MVC
index.php
1.define(‘APP_DEBUG’, true); 开启调试模式,开发阶段开启,开发结束后要去关闭
2.define(‘APP_PATH’, ‘./Application/’) 定义应用程序
3.require ‘./ThinkPHP/ThinkPHP.php’; 引入ThinkPHP入口文件
4.如果想按照自己的意愿设置应用目录名称,可以修改成这样
define(‘APP_PATH’, ‘./save/’);
5.默认会生成一个防止看结构目录的index.html 也可以自己修改.
define('DIR_SECURE_FILENAME', 'default.html'); 不建议修改
define('DIR_SECURE_CONTENT', '目录禁止'); 可以填充文字
运行流程
- 加载thinkPHP.php
require (‘./ThinkPHP/ThinkPHP.php’);
2.加载核心文件
通过URL访问控制器的方法
http://www.save.com/index.php?m=Home&c=Index&a=test
其中,m代表模块 c代表控制器 a代表方法
Nginx好像默认不支持pathinfo模式,但可以修改nginx.conf文件来达到目的.
模块化和URL模式
模块化
之前将Admin与Save当成了两个应用程序,也就是两个站.
但实际上这两个应该合起来成为一个站,因此需要模块化.
将Home模块复制一份,改名字为Admin模块,发现并不能访问,
排查原因,是命名空间的问题,将命名空间改成Admin\Controller 即可.
可以通过配置来控制 禁止访问哪些模块 和 允许访问哪些模块.
可以设置默认访问的模块,以及设置单模块
多入口模块
新建一个admin.php入坑模块
输入
// 定义应用目录
define(‘APP_PATH’, ‘./Save/’);
//加载Admin模块
$_GET['m'] = 'Admin'; //这句好像是3.2.2版本的.
$_GET['c'] = 'Index'; //默认指定控制器.可以不指定.
$_GET['s'] = 浏览器的URI. 这样可以写的时候可以不加s=
define('BIND_MODULE','Admin');
// 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php';
URL模式.
PATH_INFO 默认分隔符是/ 可以修改
'URL_PATHINFO_DEPR' => '_'
m c a 也是可以改的. 叫做修改键的名称
'VAR_MODULE' => 'mm',
'VAR_CONTROLLER' => 'cc',
'VAR_ACTION' => 'aa'
URL 重写 看手册. 可以省去index.php
模型初步
基类模型
$user = new Model(‘[moode_table]’,’[表前缀]’,’[数据库连接信息]’); //这里的表前缀,会覆盖掉配置的表前缀.
使用new Model的方法 还需要导入命名空间.
$user = M(‘User’); //使用M的方法 不需要导入命名空间
$user = new UserModel(); 这个写法是与User表直接对应的.
使用M()方法的时候,不会去加载具体的模型类,只是加载Model基类.
使用D()方法,能够加载具体的模型类
1.而且,在当前模块找不到该模型类时,会去Common/Model/找.
2.如果这里也找不到,会直接实例Model基类,相当于M();
3.也可以跨模块调用.D('Admin/User');
4.想要使用原生的SQL,只需要调用空的M方法.
$user = M();
print_r($user -> query('SELECT * FROM user'));