thinkphp概述,thinkphp项目构建流程,thinkphp项目结构,thinkphp配置,thinkphp控制器,thinkphp模型,thinkphp视图,thinkphp的内置模板引擎。

thinkphp是一个免费开源的,快速,简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了web应用开发和简化企业级引用开发而诞生的。

thinkPHP的特点,环境要求等。

官方网址:

http://thinkphp.cn

svn的下载地址:
完整版:

http://thinkphp.googlecode.com/svn/trunk

核心版本:

http://thinkphp.googlecode.com/svn/trunk/ThinkPHP

thinkphp遵循简单实用的设计原则,thinkphp框架思想和结构体系进行详细的介绍:

thinkphp的目录结构,自动生成目录,项目目录部署方案,命名规范,项目构建流程。

thinkphp的目录结构:
系统目录和项目目录

系统目录:
common包含框架的一些公共文件,系统定义和惯例配置等。
lang目录语言文件。
lib系统的基类库目录。
tpl系统的模板目录。
mode框架模式扩展目录。
vendor第三方类库目录。

项目目录:
index.php项目入口文件
common项目公共目录
lang项目语言包目录
conf项目配置目录
lib项目基目录
tpl项目模板目录
runtime项目运行时目录

<?php
define('THINK_PATH','ThinkPHP'); // 定义thinkphp框架路径 define('APP_NAME', 'test'); // 定义项目名称 define('APP_PATH', '.'); // 定义项目路径 require(THINK_PATH."/ThinkPHP.php"); // 加载框架入口文件 App::run(); // 实例化一个网站应用实例 ?>

thinkphp自动生成的目录:

common, conf, lang, lib, runtime, tpl;

项目目录:

admin:admin后台管理项目目录
home:home项目目录
common:项目公共目录,放置项目公共函数
conf:项目配置目录,放置配置文件
lang:项目语言包目录
lib:项目基目录,通常包括action和model目录
runtime:项目运行时目录,包括cache,temp,data和log
tpl:项目模板目录
thinkphp: thinkPHP系统目录
admin.php: admin.php网站的后台入口文件
index.php: index.php网站的入口文件

分组模块:

app: app项目目录
common: 项目公共目录
conf: 项目配置目录
lang: 项目语言包目录
lib: 项目基目录
runtime: 项目运行时目录
tpl: 项目模板目录
public: public网站公共目录
css: css样式文件夹
images: 图片文件夹
js: js脚本文件夹

thinkphp系统目录
index.php网站入口文件

thinkphp创建项目流程:

创建数据库,数据表,项目命名创建入口文件,项目配置,创建控制类,创建模型类,创建模板文件,运行测试。

<?php
return array('APP_DEBUG' => true, // 开启调式模式 'DB_TYPE' => 'mysql', // 数据库类型 'DB_HOST' => 'localhost', // 数据库服务器地址 'DB_NAME' => 'db_database', // 数据库名称 'DB_USER' => 'root', // 数据库用户名 'DB_PWD' => 'root', // 数据库命名 'DB_PORT' => '3306', // 数据库端口 'DB_PREFIX' => 'think_', // 数据表前缀 ); ?>
<?php
class IndexAction extends Action{ public function index(){ $db = new Model('user'); // 实例化模型类,参数数据表名称,不包含前缀 $select = $db -> select(); // 查询数据 $this -> assign('select', $select); // 模板变量赋值 $this -> dispaly('index.html'); // 输出模板 } } ?>

模板文件:

<body>
<volist name="select" id="user"> id:{$uer.id}<br/> 用户名:{$user.user}<br/> 地址:{$user.address}<hr> </volist> </body>

thinkphp配置

配置文件时thinkphp框架程序得以运行的基础文件。

惯例配置,项目配置,调式配置,分组配置,模块配置,动态操作配置。

返回PHP数组的方式,所有配置文件的定义格式

<?php
return array(
);
?>

进行二维数组进行配置

<?php
return array(
'APP_DEBUG' => true, 'USER_CONFIG' =>array( 'USER_AUTH' => true, ... ), ); ?>

调试配置

配置文件位于 think\common\debug.php

配置文件存储位置,调式配置文件位于项目配置目录下
系统默认的调试配置文件:
开启日志记录
关闭模板缓存
记录sql日志
关闭字段缓存
开启运行时间详细显示
开启页面trace信息展示
严格检查文件大小写

thinkPHP的控制器

模块类,存储于lib\action目录下:
控制器类必须继承系统的action基础类

跨模块调用

$User = A("User"); // 实例化UserAction控制器对象
$User -> insert(); // 调用User模块的importUser操作方法
A("User")是一个快捷方法
等效于:
import("@.Action.UserAction"); $User = new UserAction(); 还有比A更好的方法为: R("User","insert"); // 远程调用UserAction控制器的insert操作方法 $User = A("User","Admin"); // 实例化Admin项目的UserAction控制器对象 $User -> insert(); // 调用Admin项目UserAction控制器的insert操作方法 R("User", "insert", "Admin"); // 远程调用admin项目的useraction控制器的insert操作方法
<?php
header("Content-Type:text/html; charset=uft-8"); // 设置页面编码格式
class IndexAction extends Action { public function index() { $db = new Model('user'); // 实例化模型类,参数数据表名称,不包括前缀 $select = $db->select(); // 查询数据 $this -> assign("select", $select); // 模板变量赋值 $this -> dispaly(); // 输出模板 } } ?>
<?php
header("Content-Type:text/html; charset=utf-8"); // 设置页面编码格式
class UserAction extends Action{ public function insert(){ $ins = new Model("user"); // 实例化模型类,传递参数为没有前缀的数据表名称 $ins -> Create(); // 创建数据对象 $result = $ins -> add(); // 写入数据库 $this -> redirect('Index/index', '', 5, '页面跳转中'); // 页面重定向 } } ?>
<?php
header("Content-Type:text/html; charset=utf-8"); // 设置页面编码格式
class IndexAction extends Action{ public function index() { $db = new Model('user'); // 实例化模型类,参数数据表名称,不包含前缀 $select = $db -> select(); // 查询数据 $this->assign('select',$select);//模板变量赋值 $this->display(); // 输出模板 } public function insert(){ $ins = R("User", "insert", "Admin"); // 远程调用admin项目useraction控制器的insert操作方法 $ins->Create(); // 创建数据对象 $result = $ins->add(); // 写入数据库 } } ?>

thinkphp的模型

模型是按照某一个形状进行操作的代名词。
模型的主要作用就是封装数据库的相关逻辑。
主要内容:
模型的命名
实例化模型
属性访问
连接数据库
创建数据
连贯操作
curd操作

实例化基础模型类

$User = new Model('User');
$User -> select();
$User = M('User');
$User -> select();

m方法默认是实例化model类,如果需要实例化其他模型类:

$User = M('User', 'CommonModel');
$User = new CommonModel('User');

实例化用户定义的模型类

// 定义的模型类放到项目lib\model目录下面
class UserModel extends Model{ public function myfun() { // 。。。 } }

实例化自定义模型类的方式:

$User = new UserModel();
$User->select(); // 进行其他的数据操作
$User = D('User');
$User -> select(); // 进行其他的数据操作

D方法可以自动检测模型类,不存在时系统会抛出异常,同时对于实例化过的模型,不会重复去实例化。

$User = D('User','Admin'); // 实例化admin项目下面的User模型
$User->select(); 如果启动模块分组功能,还能使用: $User=D('Admin.User');

实例化空模型类

$Model = new Model();
// $Model = M();
$Model -> query('SELECT *FROM think_user where status=1');
<?php
$User = new Model('User');
$User -> find(1); echo $User -> name; $User -> name = 'ThinkPHP'; ?> 操作方法是通过返回数组的方式: <?php $Type=D('Type'); // 返回的type数据是一个数组 $type= $Type->find(1); echo $type['name']; // 获取type属性的值 $type['name'] = 'ThinkPHP'; // 设置type属性的值 ?>

连接数据库:
thinkphp内置抽象数据库访问层,把不同的数据库操作封装起来,只需要使用公共的Db类进行操作。

<?php
return array(
'APP_DEBUG' => false, // 关闭调用模式 'DB_TYPE' => 'mysql', // 数据库类型 'DB_HOST' => 'localhost', // 数据库服务器地址 'DB_NAME' => ‘db_database’, // 数据库名称 'DB_USER' => 'root', // 数据库用户名 'DB_PWD' => 'root', // 数据库密码 'DB_PORT' => '3306'; // 数据库端口 'DB_PREFIX' => 'think_', ); ?>

连接数据库

使用dsn方式在初始化db类的时候传参数。

$db_dsn="mysql://root:admin@127.0.0.1:3306/db_database";//定义dsn
$db = new Db();// 执行类的实例化
$conn=$db->getInstance($db_dsn);// 连接数据库 数组传参 $dsn = array( 'dbms' => 'mysql', 'username' => 'username', 'password' => 'password', 'hostname' => 'localhost', 'hostport' => '3306', 'database' => 'dbname' ); $db = new Db(); $conn = $db->getInstance($dsn); // 连接数据库,返回数据库驱动类

模型类里面定义参数:

protected $connection = array('dbms' => 'mysql','username' => 'username', 'password' => 'password', 'hostname' => 'localhost', 'hostport' => '3306', 'database' => 'dbname' ); //或者使用下面的方式: protected $connection = "mysql://username:password@localhost:3306/DbName";

使用pdo方式连接数据库:

return array('DB_TYPE' => 'pdo','DB_DSN'=>'mysql:host=localhost;dbname=db_database', 'DB_USER'=>'root', 'DB_PWD'=>'root', 'DB_PREFIX'=>'think_', 'APP_DEBUG' => false, // 关闭调试模式 );

自动根据表单数据创建数据对象

class UserAction extends Action { // 定义类,继承基础类 public function insert() { // 定义方法 $ins = new Model('user'); // 实例化模型类 $ins -> Create(); // 创建数据库 $result = $ins -> add(); // 写入数据库 $this-> redirect('Index/index', '', 5, '页面跳转中'); // 页面重定向 } }

curd操作

thinkphp提供了灵活和方便的数据库操作方法,curd创建,更新,读取,和删除。

$User = M("User"); // 实例化对象
$data['name'] = 'ThinkPHP'; $data['email'] = 'ThinkPHP@gamil.com'; $User -> add($data); $User->data($data)->add();

读取数据的方法:

读取字段的值使用getField方法
读取数据使用find方法
读取数据集使用select方法

getField方法读取某个字段的值

$User = M('User');
$nickname = $User->where('id=3') -> getFielde(‘nickname’); $list = $User->getField('id, nickname');

select 方法的返回值是一个二维数组,如果没有查询到如何结果的话,返回一个空的数组

$User=M('User');
$list = $User->where('status=1') -> order('create_time') -> limit(10) -> select();

find()方法

$User = M("User");
$User->where('status=1 and name="think" ')->find();
<?php
header("Content-Type: text/html; charset=utf-8"); // 设置页面编码格式
class IndexAction extends Action{ public function index(){ $db=M('User'); $select = $db->where('user="mr"')->order('id desc')->limit(3)->select(); $this->assign('select',$select); // 模板变量赋值 $this->display(); // 指定模板页 } public function insert() { $dba = M('User'); $data['user'] = 'fs'; $data['pass'] = md5('gdsoft'); $data['address'] = 'dashu'; $result = $dba -> add($data); if($result) { $this->redirect('Index/index', '', 2, '页面跳转中');//页面重定向 } } ?>
$User = M("User");
$data['name'] = 'ThinkPHP'; $data['email']='ThinkPHP@mail.com'; $User -> where('id=5') -> save('data');
$User = M('User');
$User -> where('id=5') -> delete();  $User = M('User'); $User -> where('status=0') ->order('create_time')->limit('5')->delete();

thinkphp框架的特点

什么是mvc?

mvc是一种经典的程序设计理念,分3部分:
模型层,视图层,控制层。

什么是模型层?
模型层是应用程序的核心部分,可以是一个实体对象或一种业务逻辑。

视图层提供应用程序与用户之间的交互界面。

控制层用于对程序中的请求进行控制。

什么是CURD?

C为创建,U为更新,R为读取,D为删除。

thinkphp使用add(),save(),select(),和delete()

什么是单一入口?

自动生成项目目录:

<?php
define('THINK_PATH','ThinkPHP'); // 定义ThinkPHP框架路径 define('APP_NAME', '1'); // 定义项目名称 define('APP_PATH', '.'); // 定义项目路径 require(THINK_PATH."/ThinkPHP.php"); // 加载框架入口文件 App::run(); // 实例化一个网站应用实例 ?>

项目流程:

<?php
define('THINK_PATH', '../ThinkPHP/'); // 定义ThinkPHP框架路径 define('APP_NAME', '2'); // 定义项目名称和路径 define('APP_PATH', '.'); // 定义项目名称和路径 require(THINK_PATH."/ThinkPHP.php"); // 加载框架入口文件 App::run(); // 实例化一个网站应用实例 ?>

config.php

<?php
return array('APP_DEBUG' => true, // 开启调试模式 'DB_TYPE'=> 'mysql', // 数据库类型 'DB_HOST'=> 'localhost', // 数据库服务器地址 'DB_NAME'=>'db_database', // 数据库名称 'DB_USER'=>'root', // 数据库用户名 'DB_PWD'=>'rot', // 数据库密码 'DB_PORT'=>'3306', // 数据库端口 'DB_PREFIX'=>'think_', // 数据表前缀 ); ?>
<?php
class IndexAction extends Action{ public function index() { $db = new Model('user'); // 实例化模型类,参数数据表名称,不包含前缀 $select = $db->select(); // 查询数据 $this->assign('select',$select); // 模板变量赋值 $this->display(); // 输出模板 } } ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>ThinkPHP开发流程</title> </head> <body> <!--循环输出查询结果数据集--> <volist name='select' id='user' > ID:{$user.id}<br/> 用户名:{$user.user}<br/> 地址:{$user.address}<hr> </volist> </body> </html>
<?php
define('THINK_PATH', '../ThinkPHP');        //定义ThinkPHP框架路径(相对于入口文件) define('APP_NAME', '3'); //定义项目名称 define('APP_PATH', '.'); //定义项目路径 require(THINK_PATH."/ThinkPHP.php"); //加载框架入口文件 App::run(); //实例化一个网站应用实例 ?>

smarty模板技术

什么是smarty,特点,模板的安装和配置的方法,设计方法等

<?phpinclude_once("../config.php");$arr = array('computerbook','name' => 'PHP','unit_price' => array('price' => '¥65.00','unit' => '本')); $smarty->assign('title','使用Smarty读取数组'); $smarty->assign('arr',$arr); $smarty->display('02/index.html'); ?>
<?phpinclude '../config.php';$smarty->assign('title','Smarty保留变量'); $smarty->display('03/index.html'); ?>
<?phpinclude_once '../config.php';$smarty->display('04/index.html'); ?>
<?phpinclude_once "../config.php";$smarty->assign("title","if条件判断语句"); $smarty->display("06/index.html"); ?>

转载于:https://www.cnblogs.com/daofaziran/p/11571981.html

thinkphp概述2相关推荐

  1. thinkphp概述

    thinkphp框架是一个免费的,开源,快速,简单的面向对象的轻量级PHP开发框架. 了解什么是thinkphp概述,thinkphp项目目录结构,thinkphp的控制器,视图,thinkphp项目 ...

  2. PHP全栈学习笔记20

    thinkphp概述,thinkphp项目构建流程,thinkphp项目结构,thinkphp配置,thinkphp控制器,thinkphp模型,thinkphp视图,thinkphp的内置模板引擎. ...

  3. php api开发书籍,概述 · ThinkPHP API开发入门 · 看云

    [![邀请链接](https://img.kancloud.cn/bd/9e/bd9ee1bb6c29f7cad10b6e069b1907da_728x90.jpg)](https://www.kan ...

  4. ThinkPHP 3.2.3 简单后台模块开发(一)常用配置

    一.项目分组 下载解压 ThinkPHP 3.2.3,在默认的应用 Application(./Application) 中,包含一个默认的模块 Home(./Application/Home). 需 ...

  5. 数据更新播报php程序,使用thinkPHP实现数据更新一例【原创】

    在上一篇文章中我们实现了数据的删除和批量删除,这一篇文章我们将实现数据的更新. 首先依然是预期效果图: 点击修改后进入modi.html页面,然后进行修改,如此处修改了真实姓名这一属性: 点击保存: ...

  6. 浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)

    系统默认的缓存方式是采用File方式缓存,我们可以在项目配置文件里面定义其他的缓存方式,例如,修改默认的缓存方式为Xcache(当然,你的环境需要支持Xcache) 对于File方式缓存下的缓存目录下 ...

  7. PHP(一)——概述及服务器配置

    PHP概述 PHP定义 PHP是Hypertext Preprocessor(超文本预处理器)的缩写,是服务器端的.跨平台的.HTML嵌入式的脚本语言,尤其适合Web开发. 优势 PHP是一种很有前景 ...

  8. ThinkPHP 5.0.x、5.1.x、5.2.x 全版本远程命令执行漏洞

    ThinkPHP 5.0.x.5.1.x.5.2.x 全版本远程代码执行漏洞 漏洞概述: ThinkPHP是一个快速.兼容而且简单的轻量级国产PHP开发框架.借鉴Struts框架的Action对象,同 ...

  9. thinkphp中I方法

    概述 正如你所见到的一样,I方法是ThinkPHP众多单字母函数中的新成员,其命名来自于英文Input(输入),主要用于更加方便和安全的获取系统输入变量,可以用于任何地方,用法格式如下: I('变量类 ...

最新文章

  1. 网络标准和OSI模型(1)
  2. SQL语言之数据导入导出(Oracle)
  3. python安装mysql数据库教程,Python配置mysql的教程(必看)
  4. 数学建模国赛 常考赛题类型(模拟退火算法、粒子群算法、遗传算法)
  5. 《Java 核心技术卷1 第10版》学习笔记------ -理解方法调用【重载解析、静态绑定、动态绑定】
  6. 珠海 第十届亚洲机器人锦标赛_2016年第十届亚洲机器人锦标赛在广东珠海成功举办...
  7. [Cocos2d-x For WP8]Menu菜单
  8. 游侠联机显示无法链接服务器,我的世界用游侠联机时连接不上
  9. Rest Framework
  10. 设计模式常见面试真题详解
  11. UART/I2C/SPI/1-wire四大通信接口的神解释
  12. 面试官:int和Integer有什么区别?为什么要有包装类?
  13. 一个简单的PHP购物车系统
  14. 用php远程获取MySQL到本地,mysql本地从远程数据库导数据_MySQL
  15. 软工网络15团队作业8——Beta阶段敏捷冲刺(Day3)
  16. SPT20 协议_【推荐】协议离婚协议书范文7篇
  17. python基础学习-斐波那契数列实现
  18. Python飞机大战(究极迫害版)
  19. 任务管理器在打开的瞬间是CPU占用过大
  20. 声智科技亮相小米新品发布会

热门文章

  1. iOS:自定义模态动画 --UIPresentationController
  2. 结构体内字节手动对齐(#pragam pack)
  3. 【网络基础】02、IP地址
  4. 数据产品设计专题(4)- 程序化交易业务架构模型
  5. 一次完整的HTTP请求所经历的7个步骤
  6. [转]C++基础:C++的结构struct
  7. [七月挑选]使用idea创建spring boot 项目
  8. 【题解】 [HNOI2015]落忆枫音 (拓扑排序+dp+容斥原理)
  9. linux中典型文件档案分析
  10. dex文件结构(三):dex文件差分包分成