ThinkPHP3.1.2

因工作需要,在2023年要使用Tk3.1.2的框架。使用的平台是VsCode。

1、单入口文件

tp框架是单入口文件,实际上默认的代码是

Isset($_GET['m']) ? $ GET_['m'] : 'Index';

也就是如果没有?传参的话,默认进入index的方法。

或者可以通过display,跳转到自己写的index.html界面。

注意:写项目开发时,最好在index.php里开启调试模式,否则更改后,页面不会实时更新(上线后,就关掉)。

一个控制器里的一个方法,就代表一个业务。

2、数据库连接、操作

1.数据库的连接设置不在当前项目里的配置文件,而是在thinkphp里conf配置文件里的convention.php.  优先级最低,一般不在这配置

2.所以在项目里的conf里配置是最好

3.在html视图里,表单提交数据给Action控制器,在控制器用数据接收,然后实例化对象(数组),调用CURD数据库操作,进行添加,删除,查询。

查询到的数据可以通过

$this -> assign('')

传递给模板

模板的数据通过 $post

传递给控制器

或者这样

扩展:

PHP5中使用mysql_connect()函数进行连接,但实际上,PHP5.5开始,MySQL就不推荐使用了,属于废弃函数

PHP7中已经彻底不支持了,根据官网说明,取而代之的是如下两个:

应使用 MySQLi 或 PDO_MySQL 扩展来替换之。
 

3、 -> 和 => 运算符之间的区别

PHP 中的 =>  称为双箭头运算符

它是用于创建关联数组的赋值运算符。它位于数组键和它的值之间。它为键(左侧引号中的内容)分配右侧内容的值。

句法

"key" => value

 

 

PHP 中的 ->   ,称为对象运算符,有时也称为单箭头运算符。

它是一种访问运算符,用于在面向对象编程 (OOP) 中访问/调用 PHP 对象中的方法和属性。

例子

<?php

class People {

   public $name = 'John Doe';

   public function Developer() {

   }

}

$person = new People();

$person->Developer();

echo $person->name;

?>

复制

上面的例子是 PHP 脚本中的面向对象编程。我们创建了“人”类的“人”对象。代码的输出将是“John Doe”。

我们已经使用人员对象上的对象运算符访问了公共变量“$name”。我们还使用对象运算符来访问方法“Developer”。

除了访问类对象之外,我们还可以使用对象运算符 (->) 来访问 JSON 对象的元素

4、解析

1.地址解析

_URL_  这两个 _ _  会自动帮你解析成当前控制器文件的根目录,必须在模板里使用。

使用框架特定的变量

例如:{:app}、{:group} 、{:module} 和{:action} 分别表示当前项目名、分组名、模块名和操作名

U('Index/index'),自动帮你生成URL地址,不会像_URL_一样如果需要改动,需要修改大量地方。

控制器调用方法和文件不需要加后缀的原因是,配置文件默认使用了

‘URL_HTML_SUFFIX’ => 'html'或'php'

图中的作用是点击后跳转到该控制器的对应方法

2、常用方法

M()

自动实例化一个对象,M方法实例化模型无需用户为每个数据表定义模型类,并可以直接调用简单的CURD数据库操作

D()

相当于升级版的M(),会自动检测模型类,如果没有找到,则会自动使用M().

C()

 ,动态配置,可以用来读取配置文件config的数据,也能 C('参数名称','新的参数值');设置新的值或更改

I()

其命名来自于英文Input(输入),主要用于更加方便和安全的获取系统输入变量,可以用于任何地方,用法格式如下:

I('变量类型.变量名',['默认值'],['过滤方法'])

echo I('get.id'); // 相当于 $_GET['id']

echo I('get.name'); // 相当于 $_GET['name']

echo I('get.id',0); // 如果不存在$_GET['id'] 则返回0

echo I('get.name',''); // 如果不存在$_GET['name'] 则返回空字符串

F()

快速缓存,只能缓存简单数据类型

p()

带格式输出信息

getPk()

ThinkPHP的默认约定每个数据表的主键名采用统一的id作为标识,并且是自动增长类型的。系统会自动识别当前操作的数据表的字段信息和主键名称,所以即使你的主键不是id,也无需进行额外的设置,系统会自动识别。要在外部获取当前数据对象的主键名称,请使用下面的方法:

$pk = $Model->getPk();

注意:目前不支持联合主键的自动获取和操作。

Isset()

判断存在且不为空,

sset()函数是用于确定变量是否已设置且不为空。

Header()

七种用法

1. 跳转页面

1

header('Location:'.$url);  //Location和":"之间无空格。

2. 声明content-type

1

header('content-type:text/html;charset=utf-8');

3. 返回response状态码

1

header('HTTP/1.1 404 Not Found');

4. 在某个时间后执行跳转

1

header('Refresh: 10; url=http://www.baidu.com/');  //10s后跳转。

5. 控制浏览器缓存

1

2

3

4

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");

header("Cache-Control: no-cache, must-revalidate");

header("Pragma: no-cache");

6. . 执行http验证

1

2

header('HTTP/1.1 401 Unauthorized');

header('WWW-Authenticate: Basic realm="Top Secret"');

7. 执行下载操作

1

2

3

4

header('Content-Type: application/octet-stream'); //设置内容类型

header('Content-Disposition: attachment; filename="example.zip"'); //设置MIME用户作为附件

header('Content-Transfer-Encoding: binary'); //设置传输方式

header('Content-Length: '.filesize('example.zip')); //设置内容长度

$e[ ]

给错误页面传递信息等,不支持文本解析,必须原生的传值。

3.函数

{$v.time|date='y-m-d H:I',###}

可以将传来的时间戳通过date转成正常时间, 使用 | 和 ###  ,| 表示调用函数,###代表前面的$v.time

{:mt_rand(1,5)}

冒号代表调用函数,在这里是调用随机函数,1~5

isset()检查该变量是否存在,返回值是布尔

PHP代码注意事项

+------------------------------------------------------------------- | 感谢您使用ThinkPHP开发框架 ^_^ +------------------------------------------------------------------- | 大道至简 开发由我 WE CAN DO IT,JUST THINK +------------------------------------------------------------------- | 版本信息:ThinkPHP 3.1 Release 2012/9/5 +------------------------------------------------------------------- | Copyright(c) 2006-2012 http://thinkphp.cn All rights reserved. +------------------------------------------------------------------- [ 简介 ] ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架, 遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而 诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性 能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在 社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,众多 的典型案例确保可以稳定用于商业以及门户级的开发。 经过6年的不断积累和重构,3.0版本在框架底层的定制和扩展方面趋于完善, 使得应用的开发范围和需求适应度更加扩大,能够满足不同程度的开发人员的 需求。而且引入了全新的CBD(核心+行为+驱动)架构模式,旨在打造DIY框架 和AOP编程体验,让ThinkPHP能够在不同方面都能快速满足项目和应用的需求, 并且正式引入SAE、REST和Mongo支持。 使用ThinkPHP,你可以更方便和快捷的开发和部署应用。当然不仅仅是企业级 应用,任何PHP应用开发都可以从ThinkPHP的简单和快速的特性中受益。 ThinkPHP本身具有很多的原创特性,并且倡导大道至简,开发由我的开发理念, 用最少的代码完成更多的功能,宗旨就是让WEB应用开发更简单、更快速。 为此ThinkPHP会不断吸收和融入更好的技术以保证其新鲜和活力,提供WEB应 用开发的最佳实践!经过6年来的不断重构和改进,ThinkPHP达到了一个新的 阶段,能够满足企业开发中复杂的项目需求,足以达到企业级和门户级的开 发标准。 [ 协议 ] ThinkPHP遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP, 甚至允许把你的ThinkPHP应用采用商业闭源发布。 具体参考LICENSE.txt内容 [ 特性 ] CBD架构:ThinkPHP3.0版本引入了全新的CBD(核心+行为+驱动)架构模式, 打造框架底层DIY定制和类AOP编程体验。利用这一新的特性,开发人员可以 方便地通过模式扩展为自己量身定制一套属于自己或者企业的开发框架。 编译机制:独创的项目编译机制,有效减少OOP开发中文件加载的性能开销。 改进后的项目编译机制,可以支持编译文件直接作为入口载入,并且支持常量 外部载入,利于产品发布。 类库导入:采用基于类库包和命名空间的方式导入类库,让类库导入看起来更 加简单清晰,而且还支持自动加载和别名导入。为了方便项目的跨平台移植, 系统还可以严格检查加载文件的大小写。 URL和路由:系统支持普通模式、PATHINFO模式、REWRITE模式和兼容模式的 URL方式,支持不同的服务器和运行模式的部署,配合URL路由功能,让你随心 所欲的构建需要的URL地址和进行SEO优化工作。支持灵活的规则路由和正则路 由,以及路由重定向支持,带给开发人员更方便灵活的URL优化体验。 调试模式:框架提供的调试模式可以方便用于开发过程的不同阶段,包括开发、 测试和演示等任何需要的情况,不同的应用模式可以配置独立的项目配置文件。 只是小小的性能牺牲就能满足调试开发过程中的日志和分析需要,并确保将来的 部署顺利,一旦切换到部署模式则可以迅速提升性能。 ORM :简洁轻巧的ORM实现,配合简单的CURD以及AR模式,让开发效率无处不在。 数据库:支持包括Mysql、Sqlite、Pgsql、Oracle、SqlServer、Mongo等数据库, 并且内置分布式数据库和读写分离功能支持。系统支持多数据库连接和动态切换 机制,犹如企业开发的一把利刃,跨数据库应用和分布式支持从此无忧。 查询语言:内建丰富的查询机制,包括组合查询、快捷查询、复合查询、区间 查询、统计查询、定位查询、多表查询、子查询、动态查询和原生查询,让你的 数据查询简洁高效。 动态模型:无需创建任何对应的模型类,轻松完成CURD操作,支持多种模型之间 的动态切换,让你领略数据操作的无比畅快和最佳体验。 扩展模型:提供了丰富的扩展模型,包括:支持序列化字段、文本字段、只读字 段、延迟写入、乐观锁、数据分表等高级特性的高级模型;可以轻松动态地创建 数据库视图的视图模型;支持关联操作的关联模型;支持Mongo数据库的Mongo模 型等等,都可以方便的使用。 模块分组:不用担心大项目的分工协调和部署问题,分组帮你解决跨项目的难题, 还可以支持对分组的二级域名部署支持。 模板引擎:系统内建了一款卓越的基于XML的编译型模板引擎,支持两种类型的 模板标签,融合了Smarty和JSP标签库的思想,并内置布局模板功能和标签库扩展 支持。通过驱动还可以支持Smarty、EaseTemplate、TemplateLite、Smart等其他第 三方模板引擎。 AJAX支持:内置和客户端无关的AJAX数据返回方法,支持JSON、XML和EVAL类型 返回客户端,而且可以扩展返回数据格式,系统不绑定任何AJAX类库,可随意使 用自己熟悉的AJAX类库进行操作。 SAE支持:提供了新浪SAE平台的强力支持,具备“横跨性”和“平滑性”,支持本地化 开发和调试以及部署切换,让你轻松过渡到SAE开发,打造全新的SAE开发体验。 RESTFul支持:REST模式提供了RESTFul支持,为你打造全新的URL设计和访问体验, 同时为接口应用提供了支持。 多语言支持:系统支持语言包功能,项目和分组都可以有单独的语言包,并且可以 自动检测浏览器语言自动载入对应的语言包。 模式扩展:除了标准模式外,还提供了AMF、PHPRpc、Lite、Thin和Cli模式扩展支 持,针对不同级别的应用开发提供最佳核心框架,还可以自定义模式扩展。 自动验证和完成:自动完成表单数据的验证和过滤,新版新增了IP验证和有效期验 证等更多的验证方式,配合自动完成可以生成安全的数据对象。 字段类型检测:系统会自动缓存字段信息和字段类型,支持非法字段过滤和字段类 型强制转换,确保数据写入和查询更安全。 缓存机制:系统支持包括文件方式、APC、Db、Memcache、Shmop、Sqlite、Redis、 Eaccelerator和Xcache在内的动态数据缓存类型,以及可定制的静态缓存规则,并 提供了快捷方法进行存取操作。 扩展机制:系统支持包括模式扩展、行为扩展、类库扩展、驱动扩展、模型扩展、 控制器扩展、Widget扩展在内的强大灵活的扩展机制,让你不再受限于核心的不足 和无所适从,随心DIY自己的框架和扩展应用,满足企业开发中更加复杂的项目需求。 [ 要求 ] ThinkPHP3.1需要PHP5.2.0以上版本支持,可以运行在任何系统环境下面。 [ 安装 ] ThinkPHP无需安装,下载ThinkPHP核心包或者完整版之后,把解压后的目录拷贝到 你的WEB服务器或者WEB目录即可。 [ 鸣谢 ] 特别要鸣谢ThinkPHP团队和所有关注和支持ThinkPHP的用户。 [ 支持 ] 更多内容和支持请访问ThinkPHP官方网站http://thinkphp.cn/ 和论坛 http://bbs.thinkphp.cn。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值