thinkphp5 router.php,后端_ThinkPHP5

这篇博客详细介绍了ThinkPHP5框架的使用,包括其轻量级特性、懒加载、灵活路由、依赖注入、请求缓存和查询语法。还探讨了数据库操作,如Db类的查询构造器,支持原生SQL和参数绑定,以及模型和关联的运用。此外,还提到了API开发中的JSON数据输出和应用的多入口配置。
摘要由CSDN通过智能技术生成

简介

免费开源,面向对象的轻量级PHP开发框架,实现懒性加载,灵活的路由,依赖注入,请求缓存,查询语法,支持Composer.

Git安装:

git clone https://github.com/top-think/think 再 clone https://github.com/top-think/framework 将名称改为thinkphp

运行环境: PHP >= 5.4.0 (完美支持PHP7), PDO PHP Extension, MBstring PHP Extension ,CURL PHP Extension

目录命名:

|─application 应用目录(可设置)

│ ├─common 公共模块目录(可更改)

│ │ ├─config.php 模块配置文件

│ │ ├─common.php 模块函数文件

│ │ ├─controller 控制器目录

│ │ ├─model 模型目录

│ │ ├─view 视图目录

│ │ └─ ... 更多类库目录

│ ├─command.php 命令行工具配置文件

│ ├─common.php 应用公共(函数)文件

│ ├─config.php 应用(公共)配置文件

│ ├─database.php 数据库配置文件

│ ├─tags.php 应用行为扩展定义文件

│ └─route.php 路由配置文件

├─extend 扩展类库目录(可定义)

├─public WEB 部署目录(对外访问目录)

│ ├─static 静态资源存放目录(css,js,image)

│ ├─index.php 应用入口文件

│ ├─router.php 快速测试文件

│ └─.htaccess 用于 apache 的重写

├─runtime 应用的运行时目录(可写,可设置)

├─vendor 第三方类库目录(Composer)

├─thinkphp 框架系统目录

│ ├─lang 语言包目录

│ ├─library 框架核心类库目录

│ │ ├─think Think 类库包目录

│ │ └─traits 系统 Traits 目录

│ ├─tpl 系统模板目录

│ ├─.htaccess 用于 apache 的重写

│ ├─.travis.yml CI 定义文件

│ ├─base.php 基础定义文件

│ ├─composer.json composer 定义文件

│ ├─console.php 控制台入口文件

│ ├─convention.php 惯例配置文件

│ ├─helper.php 助手函数文件(可选)

│ ├─LICENSE.txt 授权说明文件

│ ├─phpunit.xml 单元测试配置文件

│ ├─README.md README 文件

│ └─start.php 框架引导文件

├─build.php 自动生成定义文件(参考)

├─composer.json composer 定义文件

├─LICENSE.txt 授权说明文件

├─README.md README 文件

├─think 命令行入口文件

注意,如果是mac/linux环境下,请确保runtime目录有可写权限,建议public目录作为web目录访问内容.

命名规范:

目录使用小写+下划线,类库,函数文件统一以.php为后缀;

类名和文件名保持一致,以骆驼峰命名法(首字母大写);

函数的命名使用小写字母和下划线的方式,方法的命名

使用骆驼峰法(首字母小写),属性的命名使用骆驼峰(首字母小写);

常量以大写字母和下划命名,配置参数以小写字母和下划线命名.

数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头.

调试模式和日志

建议在开发阶段一直开启,正式部署关闭调试模式.'app_debug' =>false, 可配置.env文件的格式 app_debug = true 但定义之后,配置文件中定义app_debug将无效.

ThinkPHP配置的加载顺序为惯例配置>应用配置>模块配置>动态配置

URL和路由:

路由让URL更加规范,隐式传入额外请求参数,统一拦截并进行权限检查等操作.绑定请求参数,使用请求缓存,路由中间件支持.

采用单一入口模式访问应用,对应用的所有请求都定向到应用的入口文件,系统会从URL参数解析当前请求的模块,控制器和操作.路由功能由thinkRouter类完成。

路由具有URL规范,实现验证,权限,参数绑定以及响应设置等功能.

路由解析的过程: 路由定义-->路由检测-->路由解析->路由调度

格式:http://serverName/index.php/module/controller/action/param/value/...

入口文件:可以去掉URl地址里面的入口文件index.php,使用PHPStudy则修改Public下的.htaccess文件.

Options +FollowSymlinks -Multiviews

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]

参数传入,通过操作方法的参数绑定功能,可以实现自动获取URL的参数.

public function hello($name = 'world')

{

return $name;

}

视图

新建一个view/index.html 在控制器做一下修改.

use think\Controller;

class Index extends Controller

{

public function hello($name = 'thinkphp')

{

$this->assign('name', $name);

return $this->fetch();

}

}

控制器

每个模块都有独立的类库以及配置文件,一个模块下面有多个控制器负责响应请求,而每个控制器就是一个独立的控制器类.

控制器主要负责请求的接收,并调用相关的模型处理,并通过视图输出.

请求和响应:

Request请求对象和Response响应对象的基本用法与获取请求变量,以及进行不同的输出响应,跳转,和页面重定向.

Request对象的作用是与客户端交互,收集客户端的Form,Cookies,超链接,或者收集服务器的环境变量.ThinkPHP5的Request对象由thinkRequest类完成.

数据库: Db类操作数据库。

类拆分为Connection(连接器)/Query(查询器)/Builder(SQL生成器),查询语法,闭包查询和闭包事务,链式操作,数据分批处理和数据库SQL执行监听.

数据查询由低到高分三个层次:数据库原生查询(SQL查询),数据库链式查询(查询构造器),模型的对象化查询;

ThinkPHP内置抽象数据库访问层,把不同的数据库封装起来,只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现.

使用数据库必须配置数据库链接信息,有多种方法定义,如配置文件定义(database.php),方法配置,模型类定义.如果使用多个模块,不同模块采用不同的数据库连接,每个模块下面单独定义数据库配置

配置链接数据库之后,可以使用数据库运行原生SQL操作,支持query(查询操作)和excute(写入操作)方法并且支持参数绑定.

查询构造器: 查询数据,添数据加,更新数据,删除数据,查询方法,查询语法,链式操作,聚合查询,时间查询,高级查询,视图查询,子查询,原生查询.

查询数据:

CREATE TABLE IF NOT EXISTS `think_data`(

`id` int(8) unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(255) NOT NULL COMMENT '名称',

`status` tinyint(2) NOT NULL DEFAULT '0' COMMENT '状态',

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;

INSERT INTO `think_data`(`id`,`name`,`status`) VALUES

(1,'thinkphp',1),

(2,'onethink',1),

(3,'topthink',1);

本地新建数据库,再新建数据表:

原生查询,两个方法query和execute,分别用于查询操作和写操作.数据库查询构造器,方便执行数据库操作,构造器基于PDO实现,使用PDO参数绑定,保护应用程序免于SQL注入.

//插入记录

#result = Db:execute('insert into think_data (id,name,status) values (5,"thinkphp",1)');

dump($result);

//更新记录

$result = Db::excute('update think_data set name = "framework" where id = 5 ');

dump($result);

//读取

$result = Db::query('select * form think_data where id = 5');

dump($result);

//query方法返回一个数据集(数组),如果没有查询到数据则返回空数组.

//删除delete

$result = Db::excute('delete form think_data where id =5');

dump($result);

// 显示数据库列表

$result = Db::query('show tables from demo');

dump($result);

// 清空数据表

$result = Db::execute('TRUNCATE table think_data');

dump($result);

//切换数据库操作: 略.

查询语言

ThinkPHP5.0的查询语法,以及如何使用查询构建器进行查询操作,

模型和关联

ThinkPHP采用ORM的封装,基本特性就是表映射到模型,记录映射到模型对象实例,字段映射到对象属性.Db类的查询默认返回的是数组(或者集合),模型类返回的是当前的模型对象实例(或者集合)

API开发

接口数据统一以JSON格式数据输出到客户端.

注意

不要在public目录之外的任何位置放置资源文件,包括application目录,web目录要放到i

入口文件可以被隐藏.

php think build --module demo 快速新建模块

架构

应用在ThinkPHP中是一个管理系统架构和生命周期的对象,由系统的thinkApp类完成,应用通常在入口文件中被调用和执行,一个应用可能存在多个入口文件(绑定不同的模块或使用不同的设置),

路由用来规划请求的访问地址.

应用具有自己独立的配置文件、公共(函数)文件和路由定义文件。

路由

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值