php框架是许多代码的集合,这些代码是程序结构的代码(并非业务代码)代码中有许多函数、类、功能类包,框架的代码按必定的标准组成一个有机的功能体,这个功能体里边有许多设计模式如MVC 、单例、AR等等php
快速
、稳定
、高效
搭建程序系统ThinkPHP3.2工程目录html
www WEB部署目录(或者子目录) ├─index.php 入口文件 ├─README.md README文件 ├─Application 应用目录 ├─Public 资源文件目录 └─ThinkPHP 框架目录 TP框架结构 ├─ThinkPHP 框架系统目录(能够部署在非web目录下面) │ ├─Common 核心公共函数目录 │ ├─Conf 核心配置目录 │ ├─Lang 核心语言包目录 │ ├─Library 框架类库目录 │ │ ├─Think 核心Think类库包目录 │ │ ├─Behavior 行为类库目录 │ │ ├─Org Org类库包目录 │ │ ├─Vendor 第三方类库目录 │ │ ├─ ... 更多类库目录 │ ├─Mode 框架应用模式目录 │ ├─Tpl 系统模板目录 │ ├─LICENSE.txt 框架受权协议文件 │ ├─logo.png 框架LOGO文件 │ ├─README.txt 框架README文件 │ └─ThinkPHP.php 框架入口文件web
Application(程序在第一运行会自动建立) ├─Common 应用公共模块 │ ├─Common 应用公共函数目录 │ └─Conf 应用公共配置文件目录 ├─Home 默认生成的Home模块 │ ├─Conf 模块配置文件目录 │ ├─Common 模块函数公共目录 │ ├─Controller 模块控制器目录 │ ├─Model 模块模型目录 │ └─View 模块视图文件目录 ├─Runtime 运行时目录 │ ├─Cache 模版缓存目录 │ ├─Data 数据目录 │ ├─Logs 日志目录 │ └─Temp 缓存目录sql
<?php
// 使用thinkphp框架开发shop商城项目
// 框架两种模式:[默认]生产(线上)开发(调试)
defined('APP_DEBUG',true);
defined('APP_DEBUG',false);
// 引用框架的接口文件
include ("../ThinkPHP/ThinkPHP.php")
复制代码
什么是路由: 答:系统从URL参数中分析出当前请求的分组
、控制器
和操做
的过程就是路由thinkphp
http://网址/index.php?m=分组&c=控制器&a=操做方法
该方式是最底层的get形式,传统的参数传递方式,不时尚、不安全。数据库
默认方式
]http://网址/index.php/分组/控制器/操做方法
http://网址/index.php/Home/Index/advert
设计模式
http://网址/分组/控制器/操做方法
数组
http://网址/index.php?s=/分组/控制器/操做方法
缓存
// 命名空间
namespace Home\Controller
use Think\Controller
class UserController extends Controller {
function login() {
echo "登陆";
}
}
复制代码
function login() {
echo "登陆";
$this->display(); // 展示视图(视图文件名字(login.html)要与当前操做方法名字一致)
$this->display('register'); // 访问其它模板
$this->display('Goods/register'); // 访问其它控制器的具体文件
}
}
复制代码
原则上每一个数据表,都对应一个Model模型类 注意:实例化一个对象,要跟上命名空间php框架
$goods = new \Model\GoodsModel();
var_dump($goods);
复制代码
####### 2.1实例化普通的Model对象
<?php
namespace Model
use Think\Model
class GoodsModel extends Model {
}
复制代码
####### 2.2实例化基类Model对象 2.2.1实例化父类Model对象
$model = D(); // new Model()
var_dump($model); // 能够用于执行原生sql语句(普通的Model对象也能够执行原生的sql语句)
复制代码
2.2.2实例化父类Model对象,同时指定操做的数据表 该方式使得一个数据表即便没有对应的Model模型类,也不影响咱们直接操做该表
$goods1 = new D('Goods');
var_dump($goods1);
复制代码
调用方法:select();
$goods = new \Model\GoodsModel();
$goods->select(); // 查询并返回数据表的所有记录信息
$goods->select(主键id值); // 查询主键信息等于id值的记录
$goods->select('id1,id2,id3...'); // 查询主键信息在条件范围内的记录
// 使用select()查询,始终返回一个二维数组信息
var_dump($goods);
复制代码
$goods = new \Model\GoodsModel();
$info = $goods->select(); // 查询并返回数据表的所有记录信息
// 把得到的数据传给模板使用
$this->assin('info',$info);
复制代码
$goods1 = new D('Goods');
// 1.第一方式
$z = $goods1->where("password='2345")->delete();
// 2.第二种方式
$goods1->user_id = 8;
$z = $goods1->delete();
// 3.第三种方式
$z = $goods1->delete(10);
$z = $goods1->delete("10,21");
复制代码
$goods2 = new D('Goods');
// 执行原生的sql语句
$sql = "insert select update delete...";
// 1.查询 (返回一个二维数组结果)
$goods2->query($sql);
// 2.插入 更新 删除(返回受影响记录条数)
$goods2->execute($sql);
复制代码
VC eg:
function register() {
$user = new \Model\UserModel();
if (!empty($_POST)) {
$shuju=$user->create();
if ($shuju) {
if ($user->add($shuju)) {
echo "数据添加成功";
}
}else {
dump($user->getError());
}
}
$this->display();
}
复制代码
Model eg:
<?php
namespace Model;
use Think\Model;
class UserModel extends Model {
protected $validate = array(
//array(字段,验证规划,错误提示【验证提示,附加规划,验证时间】),
// 1.验证用户名不能为空
array('userName','require','用户名不能为空'),
// 2.验证密码不能为空
array('password','require','密码不能为空'),
);
}
复制代码
涉及技术点
<form enctype="multipart/form-date">
<input type="file">
</form>
复制代码
$_FILES接收附件信息
<?php
namespace Tools;
class Page {
static $name = "添加分页处理";
}
复制代码
RBAC: role base access control 基于角色的用户访问权限控制
该方式权限设置特色:
用户在哪一个组便可
,操做很是容易、高效、简便。