tp 框架开发整理总结

tp 框架开发整理总结

tp3.2文档 http://www.php.cn/xiazai/shouce/31

大写字母的用法A函数用于实例化控制器格式:[资源://][模块/]控制器 A($name,$layer=”,$level=”)@param string $name 资源地址@param string $layer 控制层名称@param integer $level 控制器层次@return Controller|false

B执行某个行为 B($name,$tag=”,&$params=NULL)

@param string $name 行为名称@param string $tag 标签名称(行为类无需传入)@param Mixed $params传入的参数 @return void

这是随着行为应运而生的新生函数,可以执行某个行为,例如B(‘app_begin’);
就是在项目开始之前,执行这个行为定义的所有函 数,支持2个参数,第二个参数支持需要接受一个数组

例如

B('app_begin',array("name"=>"tdweb","time"=>time()));

C 读取及设置配置参数C($name=null,$value=null,$default=null)

@paramstring|array $name 配置变量@param mixed $value 配置值@param mixed $default 默认值@return mixed

获取值:  

获取所有设置:C(); 不传递任何参数,返回一个包含所有设置的数组。获取指定配置:C(‘URL_MODEL’) 这样就能得到URL_MODEL的配置信息获取指定二维数组配置:C(“array.name”),这样就返回数组array下的key为name所对应的值

设置值:

为二维数组赋值C(“array.name”,”value”),原理同上(获取array.name的值),后边的value是值批量赋值:

$test=array("URL_MODEL"=>1,"THIN_MODEL"=>true");C($test);  这样直接将数组里的值赋值了

判断是否赋值:

C("?URL_MODEL")这样前边加个"?",如果已经赋值,则返回true

需要说明的是,这里虽然更改了配置的值,但是仅仅是这个页面做了更改,到下个页面就不起作用了,
如果想改就永久更改,那么需要配合F函数,将配置文件写入config.PHP才行。

D函数用于实例化模型类格式 [资 源://][模块/]模型 D($name=”,$layer=”)

@param string $name 资源地址@param string $layer 模型层名称@return Model

D函数有2个优点:

一是如果之前实例化过这个Model,那么就不再实例化了,省资源;二是方便调试,如果不存在 这个Model,会抛出TP异常,非常人性化。
如果访问本项目的Model直接D(“Model名称”);就可以了,如果打算跨项目访问,就使用 D(“Model名称”,”项目名称”);

E抛出异常处理 E($msg, $code=0)

@param string $msg异常消息@param integer $code 异常代码默认为0@return void

F快速文件数据读取和保存针对简单类型数据字符串、数组 F($name, $value=”,$path=DATA_PATH)

@param string $name 缓存名称@param mixed $value 缓存值@param string $path 缓存路径@return mixed

快速保存数据:F(“mydata”,”这里是要保存的数据”),这样就在项目Data目录下保存了一个名叫mydata.php的文件,里边的内容是该函数的第二个参数。指定保存时间 :F(“mydata”,”这里是要保存的数据”,”60″),这样,如果下次再访问,间隔大于60秒则删除次缓存文件。指定保存目录:F(“mydata”,”这里是要保存的数据”,”60″,DATA_PATH) ,这样就指定保存在data目录下立即删除缓存:F(“mydata”,null),第二个参数传递一个null值,这样就删除了mydate这个缓存读取缓存数据:F(“mydata”),这样就读取这个缓存了

G记录和统计时间(微秒)和内存使用情况

G($start,$end='',$dec=4)

使用方法:

G('begin'); // 记录开始标记位 // ... 区间运行代码G('end'); // 记录结束标签位echo G('begin','end',6); //统计区间运行时间精确到小数后6位echo G('begin','end','m'); // 统计区间内存使用情况 如果end标记位没有定义,则会自动以当前作为标记位

其中统计内存使用需要 MEMORY_LIMIT_ON 常量为true才有效

@param string $start 开始标签@param string $end 结束标签@paraminteger|string $dec小数位或者m@return mixed

I获取输入参数支持过滤和默认值

I($name,$default='',$filter=null)

使用方法:

I('id',0); //获取id参数自动判断get或者postI('post.name','','htmlspecialchar s'); //获取$_POST['name']I('get.'); //获取$_GET

L()获取和设置语言定义(不区分大小 写)

L($name=null,$value=null)
@paramstring|array $name 语言变量@param mixed $value 语言值或者变量@return mixed

语言定义函数,L(“intro”)获取定义成intro的语言,l(“intro”,”介绍”)为intro赋值

M函数用于实例化一个没有模型文件的Model

BibiGPT-哔哔终结者 BibiGPT-哔哔终结者

B站视频总结器-一键总结 音视频内容

BibiGPT-哔哔终结者 28 查看详情 BibiGPT-哔哔终结者

M($name='',$tablePrefix='',$connection='')
@param string $name Model名称支持指定基础模型例如MongoModel:User@param string $tablePrefix表前缀@param mixed $connection  数据库连接信息@return Model

N设置和获取统计数据

N($key,$step=0,$save=false)

使用方法:

N('db',1); // 记录数据库操作次数N('read',1); // 记录读取次数echo N('db'); // 获取当前页面数据库的所有操作次数echo N('read'); // 获取当前页面读取次数
@param string $key 标识位置@param integer $step 步进值@return mixed

R远程调用控制器的操作方法 URL 参数格式 [资源://][模块/]控制器/操作

R($url,$vars=array(),$layer='')
@param string $url调用地址@paramstring|array $vars调用参数支持字符串和数组@param string $layer 要调用的控制层名称@return mixed

T获取模版文件格式资源://模块@ 主题/控制器/操作

T($template='',$layer='')
@param string $name 模版资源地址@param string $layer 视图层(目录)名称@return string

U()URL组装支持不同URL模式

U($url='',$vars='',$suffix=true,$domain=false)
@param string $url URL表达式,格式:'[模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2...'@paramstring|array $vars传入的参数,支持数组和字符串@param string $suffix 伪静态后缀,默认为true表示获取配置值@paramboolean $domain 是否显示域名@return string

使用方法:

取得当前模块的Action地址 :U(“/nowMethod”);取得当前模块的Action地址,并传递参数:U(“/nowMethod?params=test”);(如果不习惯上边那种方式,可以使用U(“/nowMethod”,array(“params”=>”test”);这样的数组方式传递参数,效果是一样的)访问其他模块的方法:U(“Other/otherMethod”),这样就是访问Other模块下的otherMethod方法

跨项目访问:

U("appname://Other/otherMethod");

使用路由访问:

U("appName://routeName@moduleName/actionName?params");

另外,如果想直接跳转,那么就在第二个参数写1

U("/nowMethod",1)

这样就直接调转到指定URL了

W渲染输出Widget

W($name,$data=array())
@param string $name Widget名称@param array $data 传入的参数@return void

S缓存管理

S($name,$value='',$options=null)
@param mixed $name 缓存名称,如果为数组表示进行缓存设置@param mixed $value 缓存值@param mixed $options 缓存参数@return mixed

全局缓存读写函数,和C类似,不过是直接写成文件,写在Temp目录下,不过在缓存有一点需要注意,如果缓存名称是aaa,那么缓存生成的文件名称就是md5(“aaa”)的值。

技术

防止xss攻击

简单的防止

当网站不涉及复杂的用户交互时,可以对用户所有提交的文本进行htmlspecialchars函数处理。

版本为:3.2步骤:一:在项目配置文件中添加配置: ‘DEFAULT_FILTER’ => ‘htmlspecialchars’, //默认过滤函数二: 使用框架带的I方法获取来自用户提交的数据;

例子

M('Member')->save(array('content'=>I('post.content')));

对COOKIE进行IP绑定

cookie的信息一但被别人通过XSS攻击获取后也一样等同于把自己的帐号密码给了别人。对cookie进行IP绑定,(当然也可以获取用户客户端更多的其它信息进行同时绑定)可以根据用户的IP来判断这个cookie是不是来原始授权用户。

示例

用户设置了自动登录时保存自动登录信息:

$auto=I('post.auto');//用户设置了自动登录if(!empty($auto)){cookie('auto',encrypt(serialize($data)));//将登录信息保存到cookie,其中$data里含有加密后的帐号,密码,和用户的IP,这里的cookie已在全局中设置过期日期为一周}

用户关闭浏览器再次访问网站时,进行自动登录

if (!is_login()) {//是否未登录状态?$auth=cookie('auto');    if(!empty($auth)){//是否未有自动登录cookie?        $data=unserialize(decrypt($auth));            if(!empty($data) && !empty($data['username']) && !empty($data['password']) && !empty($data['last_login_ip'])){                $user=M('Member')->where(array('username'=>$data['username'],'password'=>$data['password']))->find();                    if(!empty($user['id'])&&($user['last_login_ip']==get_client_ip())){//cookie帐号密码是否有效?//IP来源是否相同?                        login_session($user['id'], $user['username'], $data['last_login_ip']);//用户自动登录成功                    }            }    }}

优点:大多数场景下可使被XSS攻击盗取的cookie失效。缺点:由于IP存在多台电脑共用的可能,对绑定做不到十分精细

为COOKIE添加httponly配置

可以保证cookie只在http请求中被传输,而不被页面中的脚本获取,现市面上绝大多数浏览器已经支持。

HTML5的新特性:


为iframe的增加的sandbox属性,可以防止不信任的Web页面执行某些操作.相信这个方法以后会被广泛使用。

富文本过滤

5.0文档 

http://www.php.cn/xiazai/shouce/32

以上就是tp 框架开发整理总结的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/499103.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 19:24:10
下一篇 2025年11月8日 19:27:48

相关推荐

  • Laravel 速成指南:快速掌握Laravel框架

    Laravel 速成指南:快速掌握Laravel框架 引言:Laravel 是一款流行的PHP开发框架,因其简单易用、功能丰富和高效而备受开发者的青睐。本文旨在为初学者提供一个快速入门 Laravel 的指南,通过实际的代码示例帮助读者快速掌握 Laravel 框架的基本概念和使用方法。 Larav…

    2025年12月4日
    400
  • Java 框架的响应式编程架构:实现和注意事项

    响应式编程架构在 java 中通过 rxjava、reactor 和 vert.x 等框架实现。rxjava 以可观察序列处理数据流。reactor 基于 reactor 模式实现非阻塞事件驱动架构。vert.x 提供全面功能,包括事件总线和 websockets 支持。 Java 框架的响应式编程…

    2025年12月2日 java
    000
  • 「人车交互」新突破!普渡大学发布Talk2Drive框架:可学习/定制的「指令识别」系统

    在普渡大学数字孪生实验室的最新研究中,科学家们采用了一项革命性技术——利用大型语言模型(llm)来增强自动驾驶汽车的智能指令解析能力。这一创新为自动驾驶技术的发展带来了新的可能性,有望提高车辆对驾驶指令的理解和响应速度。 这项技术的关键是Talk2Drive框架,旨在利用人类自然语言来操控自动驾驶汽…

    2025年12月2日 科技
    000
  • Java 框架的性能指标有哪些,如何进行比较?

    java框架的性能指标包括:吞吐量、延迟、内存消耗和cpu消耗。比较不同框架的性能时,可按以下步骤进行:确定基准、选择框架、部署框架、执行基准测试、收集数据、分析结果。实战案例为比较spring boot和jakarta ee的性能,可按上述步骤执行基准测试并分析数据。 Java 框架的性能指标: …

    2025年12月2日 java
    000
  • java高频率基础面试题——集合框架部分

    1、ArrayList和Vector的区别 (更多面试题推荐:java面试题及答案) 这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位置索引号取出某个元素,并且其中的数据…

    2025年12月2日 java
    000
  • java框架的性能趋势和未来方向

    java 框架的性能趋势注重异步和云原生技术,未来发展方向包括:反应式编程:采用异步和非阻塞操作。微服务和分布式系统:提高效率和可管理性。无服务器计算:简化服务器管理。优化内存使用:提高内存效率。人工智能和机器学习:支持数据驱动的应用程序。 Java 框架的性能趋势和未来方向 引言随着 Java 应…

    2025年12月2日 java
    000
  • java框架选择指南

    选择 java 框架时,需考虑项目规模、需求、团队技能和社区支持。流行的 java 框架包括:spring framework:全栈框架,涵盖数据库访问、web 服务。hibernate:面向对象的持久化框架,用于管理数据库交互。struts 2:mvc web 应用程序框架,提供易用 api。ja…

    2025年12月2日 java
    000
  • java框架学习难度排行

    排行榜:1. spring:简单;2. spring boot:简单;3. hibernate:中等;4. junit:中等;5. mockito:中等;6. selenium:困难;7. apache maven:困难;8. gradle:困难。例如,使用 spring boot 创建 restf…

    2025年12月2日 java
    000
  • java框架有哪些优势和劣势?

    java框架提供结构,简化开发、提高代码质量和促进代码重用。优势包括:1. 简化开发;2. 加快开发;3. 提高代码质量;4. 代码重用;5. 社区支持。劣势包括:1. 灵活性受限;2. 学习曲线;3. 性能开销;4. 依赖性;5. 缺乏控制。例如,spring framework 提供了广泛的组件…

    2025年12月2日 java
    000
  • java框架有哪些异步编程最佳实践?

    在 java 中进行异步编程时,最佳实践包括利用非阻塞 i/o、拥抱反应式编程和使用异步方法。通过这些实践,开发人员可以在现代 web 开发中构建更响应、更可扩展的应用程序。例如,使用 spring webflux 构建的异步 rest api 可以通过反应式编程和异步方法有效地处理用户请求。 Ja…

    2025年12月2日 java
    000
  • 不同 Java 框架的优缺点有哪些?

    在 java 框架中:spring:轻量级、模块化,提供广泛的功能,但复杂性高;hibernate:强大的 orm 框架,简化数据库访问,但性能可能较低;struts:基于 mvc 的轻量级框架,适用于 web 应用程序,但可扩展性有限;vert.x:非阻塞、反应式框架,适用于高性能应用程序,但社区…

    2025年12月2日 java
    000
  • Java 框架的社区支持和文档资源

    java 框架的社区支持至关重要,包括论坛、文档、博客和技术支持。这些资源提供丰富的学习、故障排除和技术支持选项,使开发人员能够充分利用 java 框架创建健壮的应用程序。 Java 框架的社区支持和文档资源 Java 框架以其丰富的功能、稳定性和强大的社区支持而闻名。社区提供广泛的资源,包括论坛、…

    2025年12月2日 java
    000
  • java框架的未来发展方向是什么?

    java 框架发展方向包括:云原生:支持云环境特性,如弹性、可扩展性和可管理性。全栈开发:使用单一框架构建整个应用程序,简化开发和提升用户体验。微服务:提供构建和管理微服务所需的工具和库。响应式编程:非阻塞编程范例,创建高性能和可扩展的应用程序。ai 和机器学习:支持机器学习模型训练和部署。 Jav…

    2025年12月2日 java
    000
  • 如何根据业务需求选择合适的java框架?

    在选择 java 框架时,首先需要确定应用程序类型、业务功能、性能要求和技术限制。然后,探索 spring framework、hibernate 和 jakarta ee 等可用框架。通过评估功能、学习曲线、社区支持、性能和文档,将框架与业务需求进行比较,选择最合适的框架。例如,对于高并发电子商务…

    2025年12月2日 java
    000
  • Java 框架的演进和未来展望

    java 框架经过不断演进,以满足现代应用程序的需求。早期框架 struts 和 spring 提供了 mvc 架构和依赖注入等概念。持久化框架 hibernate 和 jpa 简化了与数据库的交互。spring boot 是一个全栈框架,简化了 spring 应用程序的开发。微服务框架支持微服务开…

    2025年12月2日 java
    000
  • 最新 Java 框架趋势及最佳实践

    摘要:最新的 java 框架趋势包括微服务架构、无服务器计算、反应式编程、云原生开发和人工智能集成。最佳实践涉及选择合适的框架、采用微服务架构、使用反应式编程、拥抱云原生开发以及集成人工智能和机器学习。通过结合这些趋势和实践,可以开发出高效、可扩展且云原生的 java 应用程序。 最新 Java 框…

    2025年12月2日 java
    000
  • 为什么 Java 框架如此受欢迎?

    java 框架深受开发人员欢迎,因为它提供了多种优势:加快开发速度:提供开箱即用的功能,省时省力。增强代码可重用性:模块化设计,组件可轻松重新用于多个项目。提高代码质量:遵循最佳实践和设计模式,确保代码质量高。 为什么 Java 框架如此受欢迎? 简介 Java 框架是预构建的软件组件,它们为开发人…

    2025年12月2日 java
    000
  • 用AI短视频「反哺」长视频理解,腾讯MovieLLM框架瞄准电影级连续帧生成

    在视频理解这一领域,尽管多模态模型在短视频分析上取得了突破性进展,展现出了较强的理解能力,但当它们面对电影级别的长视频时,却显得力不从心。因而,长视频的分析与理解,特别是对于长达数小时电影内容的理解,成为了当前的一个巨大挑战。 模型在理解长视频方面的困难主要源自于长视频%ignore_a_1%资源的…

    2025年12月1日 科技
    000
  • 上海交大新框架解锁CLIP长文本能力,多模态生成细节拿捏,图像检索能力显著提升

    clip长文本能力被解锁,图像检索任务表现显著提升! 一些关键细节也能被捕捉到。上海交大联合上海AI实验室提出新框架Long-CLIP。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ △棕色文本为区分两张图的关键细节 Long-CLIP基于…

    2025年12月1日 科技
    000
  • 让视频姿态Transformer变得飞速,北大提出高效三维人体姿态估计框架HoT

    当前,Video Pose Transformer(VPT)在基于视频的三维人体姿态估计领域取得了最领先的性能。近年来,这些VPT的计算量变得越来越大,这些巨大的计算量同时也限制了这个领域的进一步发展。对那些计算资源不足的研究者十分不友好。例如,训练一个243帧的VPT模型通常需要花费好几天的时间,…

    2025年12月1日 科技
    000

发表回复

登录后才能评论
关注微信