thinkPHP框架使用方法
程序员文章站
2024-03-24 17:46:16
...
title: thinkPHP框架使用方法
date: 2018-01-05 20:30:44
tags:
1. thinkPHP思想
thinkPHP基于MVC思想,MVC是一种设计模式,他强制的使用应用程序的输入、处理和输出分开。MVC应用程序被分为三个核心部分:模型(model)、视图(view)、控制器(control),他们各自处理自己的任务。
例如:
<div align=center>
[图片上传失败...(image-7538ba-1515156835754)]
</div>
2. 单入口创建项目
<?php
//单入口 || 主入口 :路由分配
//开启调试模式:部分做缓存
define("APP_DEBUG",true);
//定义项目名称
define("APP_NAME","Index");
//定义项目路径
define("APP_PATH","Index/");
//引入核心文件
require "ThinkPHP/ThinkPHP.php";
?>
执行上述代码时,系统自动创建一个文件夹,里面包含的内容与系统封装的thinkPHP一样,而这里面的文件就是我们要写的代码。
[图片上传失败...(image-d688cc-1515156835754)]
- thinkPHP官方地址:http://www.thinkphp.cn/
3. 库目录结构(thinkphp)
Lib/Think: 为Thinkphp框架核心目录
Lib/ORG : 为Thinkphp框架自带扩展目录
4. 项目目录结构(home)
- Lib:放置控制层类和模型层类
- Action:相当于controler
- Model: model层 - Tpl:放置着模板(皮肤)文件,相当于view
- Conf:系统项目配置目录
- Common:项目中公共用到的资源,如js,css,图片等
- Runtime:系统运行时临时目录(若运行中产生缓存现象,可以将该目录中内容进行删除)
- Cache:模板页面缓存
- Data:数据字段缓存
- Logs:系统运行日志
- Temp:临时文件缓存
- app:系统配置文件编译缓存
5. thinkPHP的访问规则
- http:localhost/thinkphp/index.php/index/index
- Thinkphp规定:所有的主入口文件默认访问index控制器,且所有的控制器默认是去找index方法(动作)
- 控制器类名必须是于文件名相同(除去.class.php),首字母必须大写,后面加上Action,且要继承Action
// 本类由系统自动生成,仅供测试用途
class IndexAction extends Action {
public function index(){
$name = "DR";
//将变量输出到模板
//1、(不常用)
$this->name = "DR";
//2、(常用)
$this->assign("height","183cm");
$this->assign("showTime",$showTime);
//加载index模板 默认加载
// $this->display();
//加载到指定的模板 不加后缀
$this->display("test");
}
- 方法名通常是public(默认),否则thinkphp无法正常解析
6. 控制器与模板之间的关系
-
- Thinkphp中模板和控制器之间的访问原则
- 加载模板(跨模板): $this->display(Action:模板名称)
- 加载模板(本模板):$this->display([模板名称])
//加载到指定的模板 不加后缀
$this->display("test");
-
- 控制器与模板之间的变量传递
- $this->assign('变量名','变量值')
- 在模板中采用{$变量名}的形式输出变量值
<ul>
<!-- offset="1"从什么位置输出 length="2"输出几条 empty="暂时没有数据" 当数据没有的时候显示 -->
<volist name="arr" id="val" offset="1" length="1" empty="暂时没有数据" >
<li>姓名是:{$val.name},年龄是:{$val["age"]},身高是:{$val.height}</li>
</volist>
<foreach name="arr" item="val">
<p>姓名是:{$val.name},年龄是:{$val.age},身高是:{$val["name"]}</p>
</foreach>
<!--
gt : 大于
egt: 大于等于
lt: 小于
elt: 小于等于
eq: 等于
neq: 不等于
heq: ===
nheq: !==
-->
<if condition="$num gt 5">
num的值大于5
<elseif condition="$num lt 5" />
num的值小于5
<else />
num的值等于5
</if>
</ul>
<!--对str进行加密-->
{$str|md5};
<hr />
当前时间:{$nowTime|date="Y-m-d H:i:s",###}
<hr />
处理之后的时间:{$showTime}
<for start="1" end="10">
{$i} <br />
</for>
<switch name="randNum">
<case value="1" break="1">{$randNum}的值等于1</case>
<case value="2" break="1">{$randNum}的值等于2</case>
<default />{$randNum}的值不是1,2
</switch>
<hr />
<eq name="randNum" value="2">{$randNum}的值等于2</eq>
<hr />
{$randNum > 2 ? "大于2" : "小于2"}
<hr />
<!--in || notin-->
<in name="randNum" value="2,3,4,5">{$randNum}在值里面</in>
<hr />
<!--between-->
<between name="randNum" value="2,5">
{$randNum}在值2~5里面
<else />
{$randNum}的值等于1
</between>
<!--引入外部文件 后面不加后缀-->
<include file="commonView" />
<!--引入外部文件的时候,如果是外部文件夹里面的文件
会生成类,要先引入里面的类
-->
<include file="Public:header" />
<!--也可以用相对路径-->
<include file="../Public/header" />
-
- 控制器调用模板的方式
- URL: 代表当前操作所在木块地址(同控制方法跳转)
- APP:代表当前项目的入口文件的地址(跨控制器方法跳转)
- ROOT:代表网站根目录地址(跨前、后台控制器方法跳转,范围最广)
7. 配置文件
- 属性配置
- 配置文件在config.php文件里
配置的属性通过大C方法来实例化
- 配置文件在config.php文件里
<?php
class ProductAction extends Action{
function getUrlModel(){
//实例化配置项 C()方法调用Conf里面的方法
// echo C("URL_MODEL");
//实例化自定义
// echo C("name");
echo C("height");
}
}
?>
2. 如果有多个配置文件的话,可以通过“LOAD_EXT_CONFIG”=>"user"来进行配置
"LOAD_EXT_CONFIG" => "user", 在config.php里面配置
<?php
return array(
//'配置项'=>'配置值'
// "URL_MODEL" => 0
"name" => "D2222",
"age" => "19",
//加入其他配置项文件
"LOAD_EXT_CONFIG" => "user",
);
?>
8. 连接数据库
//数据库配置信息
'DB_TYPE' => 'mysql', // 数据库类型
'DB_HOST' => 'localhost', // 服务器地址
'DB_NAME' => 'thinkphp', // 数据库名
'DB_USER' => 'root', // 用户名
'DB_PWD' => '', // 密码
'DB_PORT' => 3306, // 端口
'DB_PREFIX' => '', // 数据库表前缀