0

0

PHP开发利器-PRADO 1.6高级主题

php中文网

php中文网

发布时间:2016-06-21 08:58:54

|

1250人浏览过

|

来源于php中文网

原创

ado|高级

第4章 高级主题 

4.1  显示状态的维护

  组件的显示状态是指组件在一系列的postback中应该始终保存的数据。比如,用户在一个页面中更改了一个组件的字体颜色,他希望页面再一次提交显示的时候,依然看到的是已经修改过的颜色。在桌面GUI程序的开发中,这个非常简单。但是在Web编程中就不那么容易了,因为Web服务器并不会一直在内存中保持着页面状态。PRADO借鉴了ASP.NET的显示状态这个概念来解决这个问题。

  如果要通过显示状态来保持一些数据,可以调用TComponent 类中的getViewState() 和  setViewState() 方法。可以在显示状态中保持很多类型的数据,但是不用把它用在资源句柄中,比如数据库联接。

PRADO

  通过一个把限制状态保存在一个隐藏字段中来返回给用户。当用户提交页面并再一次显示页面的时候,显示状态中的数据会从被提交的隐藏域中读出来并用此恢复页面的状态。可以通过重载的方法来自己定制显示状态的存储方法。比如可以把显示状态保存在session中或者数据库中,避免通过隐藏字段要传输大量的数据。

立即学习PHP免费学习笔记(深入)”;

4.2  Session

  Session是用来在不同页面间保存状态的,这和页面的显示状态机制不同,显示状态只能保存本页面的状态。

  如果要使用session, 那么首先在应用的配置文件中定义一个session类。session类必须实现ISession
接口。如果你不想自己写一个session类,那可以使用类System.Security.TSession ,它封装了$_SESSION 变量来实现了ISession 接口。你也可以自己写一个session类来使用不同的方法处理session(比如把session保存到数据库中)。

  如果定义了session类,在请求的页面创建之前,对应的session对象就会被创建。TPage 页面类有一个Session 属性,可以方便的来访问session对象。

4.3  验证和授权

  PRADO 提供了一个验证/授权的框架来支持验证页面的访问者,判断他们是否有权限来访问页面。

  在验证框架中,一个用户类起到了主要作用。访问者如果通过了一定的身份验证(比如登录),并在服务器端获得了一个正确的身份,那么验证就通过了。用户对象代表了这么一个身份识别。除了身份检查外,一些页面也需要额外的权限检查来确保被验证的身份有足够的权限来访问。

  验证框架支持基于角色的验证。一个页面如果在应用的配置页面中指名了需要验证(secured),框架将确保在访问页面前用户必须被验证。如果还指定的角色,那么框架还将确保用户是属于该角色的。最后,还可以定制页面的验证过程。如果验证或者授权失败了,onAuthenticationRequiredonAuthorizationRequired 方法就会被触发,可以在此显示错误信息或者重定向到登录页面。

  用户对象在不同的页面始终存在的,它使用了session。因此如果要使用验证框架则必须申明session类。由于用户对象保存在session中,因此你可以用它来保存一些需要在不同页面访问的数据。

  如果要使用验证框架,需要在应用的配置文件中申明一个用户类。用户类必须实现了IUser接口。框架中已经提供了一个实现了该接口的类System.Security.TUser

php商城系统
php商城系统

PHP商城系统是国内功能优秀的网上商城系统,同时也是一个商业的PHP开发框架,有多套免费模版,强大的后台管理功能,专业的网上商城系统解决方案,快速建设网上购物商城、数码商城、手机商城、办公用品商城等网站。 php商城系统v3.0 rc6升级 1、主要修复用户使用中出现的js未加载完报错问题,后台整改、以及后台栏目的全新部署、更利于用户体验。 2、扩展出,更多系统内部的功能,以便用户能够迅速找到需

下载

  phonebook 这个例子中说明了验证框架是如果使用的。

4.4  Form验证

  PRADO提供了一种简单的方法来进行form的验证,而如果使用传统的PHP编程方式,这个过程是非常重复而且单调的。在PRADO中有一套验证组件。这些验证组件即允许在客户端也允许在服务器端对数据进行验证,下面我们将举一个例子来说明。

  现在我们要创建一个用户注册页面。这个页面要求用户输入一个用户名和一个密码来创建新的帐号。密码要求是被输入两次以防止输入错误。另外用户名和密码都只能包含数字和数字,而且两者的长度分别要求不少于3位和6位。

  要实现这个功能,可以创建这么一个模板: 

 ...

...
Username:

      ControlToValidate="username"
      ErrorMessage="You must choose a username." />
      ControlToValidate="username"
      RegularExpression="[\w]{3,}"
      ErrorMessage="Username must ...." />


Password:

      ControlToValidate="password"
      ErrorMessage="You must choose a password." />
      ControlToValidate="password"
      RegularExpression="[\w]{6,}"
      ErrorMessage="Password must ...." />


Repeat Password:

      ControlToValidate="password2"
ErrorMessage="Please re-type your password." />
      ControlToValidate="password2"
      ControlToCompare="password"
      ErrorMessage="Your password entries did not match." />



...

...

  上面这个模板允许页面执行用户输入的客户端验证和服务器端验证(假定浏览器支持javascript)。不再需要额外的代码了。如果验证失败的话,form是不会被提交的,而同时会显示错误信息。

  可以在模板文件中通过设置验证组件的EnableClientScript 属性来关掉客户端的验证。这时候,你可以在页面的OnLoad 事件中或者之后通过检查页面的IsValid 属性来判断验证是否通过。

4.5  缓存

  PRADO框架提供了一个缓存机制来提高PRADO应用的运行效率。对于每一种组件类型,如果它之前曾经被实例化过,那么就会有一个对应的文件存在缓存目录中。这个文件包含了被序列化的的控件实例。以后一旦需要再创建同样的组件,那么就直接通过这个缓存文件来创建。这将会大大节省组件的创建时间,因为创建组件的过程需要解析好几个XML规格文件和模板文件。

  如果要使用缓存,只需要在应用的配置文件中给的属性设置一个目录即可。这个目录必须是Web服务器可写的。使用的路径可以是绝对路径也可以是相对路径。

  如果要关闭缓存,只需要给属性赋一个空字符串即可。

  注意,如果你修改了组件的文件,那么应该包括所有的缓存文件都删掉或者移走。下一次组件创建的时候会自动重新创建的。因此在开发的时候,应该把缓存关掉。

4.6  定制 TApplication

  TApplication 类是可以被扩充的。 TApplication 有好几个方法可以被重载。比如,你可以重载 beginRequest() 方法来实现对request数据的进行一些自己需要的预处理。如果想进一步了解这些内容,可以参考PRADO 的文档。



PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

705

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

233

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

117

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

22

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

61

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

30

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

669

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

58

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Laravel 5.8 中文文档手册
Laravel 5.8 中文文档手册

共74课时 | 94.3万人学习

SESSION实现登录与验证
SESSION实现登录与验证

共10课时 | 9.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号