1)封装一个自己的时间类CMyTime,实现类似于MFC中CTime类的大部分功能。请建立Win32或者MFC工程,并通过工作区新建CMyTime类(无基类),编写以下每个函数的函数体实现代码。2)在基于对话框的Win32工程中,编辑资源管理器。加入图标和关于对话框,在对话框初始化WM_INITDIALOG消息中,实现以下功能。在MFC中设置断点,按<F11>键可以查看CWnd::SetIcon的源代码,并查阅MSDN中的以下函数。......
2023-11-25
网站开发都离不开临时会话(Session)功能。这些数据是临时性的,但也是非常重要的,例如记录登录用户数据、用户爱好,统计网站数据等都离不开Session。在PHP开发中使用Session是非常简单的,开发人员只需要使用session_start()函数开启即可。虽然如此,但在实际应用开发中通常是不能满足要求的,ThinkPHP一共内置了两种Session封装操作,分别为Session函数及Session扩展类库。这两种封装操作都是高效、灵活的。下面首先介绍Session函数。
1.Session函数
Session函数是ThinkPHP 3.x提供的一个功能完善的Session管理函数,它封装了所有Session常规操作,例如session_start初始化、session_id增、删、改、查等。Session函数还提供了Session Hander驱动扩展功能,开发人员可以轻易地利用该驱动扩展,编写高效的Session储存机制(例如存放到内存数据库、Memcache、NoSQL等)。Session函数格式如下所示。
session($name,$value='')
其中参数name是一个比较特殊的变量,一般情况下用于表示Session存放名称(即key);value表示key对应的值,支持中文。Session函数是系统内置的核心函数,使用时不需要额外引入,一个最简单的Session声明如以下代码所示。
Session声明之后,可以在同域下使用,如以下代码所示。
可以使用dump($_SESSION)函数输出当前域下的所有Session。参数name是一个特殊的变量,之所以特殊是因为该变量是多变的,当变量值为字符串时,将作为Session存放key;当值为关联数组时,将作为Session初始化的环境配置。name数组的配置信息如表9-8所示。
表9-8 参数name数组值配置选项
事实上,在实际应用开发中极少使用参数name来初始化Session环境,因为该参数只针对当前Session声明生效,如果在其他地方继续声明Session,所有配置将不起作用,所以更通用的办法是在配置文件中配置,如以下代码所示。
配置项SESSION_OPTIONS定义的值即为参数name的值。初始化完成后,就可以实现对Session的增、删、改、查了,如表9-9所示。
表9-9 Session常规操作
前面提到过,Session函数支持hander驱动扩展,接下来将首先介绍hander驱动机制,然后结合示例代码介绍驱动控制的实战应用。
PHP内置的Session处理机制都是由session_set_save_handler函数来完成增、删、改、查的,PHP允许开发人员重载该函数,这就意味着只要掌握session_set_save_handler函数的使用,就可以将Session的存放环境改变为PHP所支持的环境,例如大型数据库、Hadoop、NoSQL等,这样不仅带来性能的提升,还能实现Session跨网站应用,防止CC攻击等。session_set_save_handler函数参数表现形式如下所示。
每个参数由一个关联数组组成。数组中的“__CLASS_”表示操作类,对应的值即为Session操作标识,6个参数表示6个成员方法,分别为open(初始化Session)、close(删除Session)、read(获取Session)、write(Session写入)、destroy(全部销毁Session)、gc(垃圾回收)。根据这些方法声明,开发人员只需要在对应的类中实现这6个成员方法,即可实现高级的Session功能定制。
ThinkPHP内置的Session驱动扩展也是基于session_set_save_handler接口函数的。驱动类库默认存放于ThinkPHP/Extend/Driver/Session目录;类库命名规则为“Session+类库名”(类库名必须首字母大写),该名称即为SESSION_TYPE配置项中指定的名称,例如SessionDb。
接下来将以系统内置的SessionDb驱动扩展为例,详细介绍Session数据转存MySQL数据库的过程。要开启Session驱动扩展,首先需要在配置文件中配置相应选项,如以下代码所示。
SESSION_TABLE指定的是Session存放表,SQL代码如下所示。(www.chuimin.cn)
当然,读者也可以使用其他数据表作为Session存放表,只需要确保结构如图9-10所示即可。
图9-10 Session数据存放表结构
通过上述步骤,现在再使用Session函数操作Session时,将全部转存到数据表,例如增加一条Session数据,如以下代码所示。
存放到数据表中的Session数据如图9-11所示。
2.Session类
系统提供了一个Session扩展类,该类在ThinkPHP 2.x中是默认的Session处理机制。Session类只是对PHP原有的Session操作机制进行了封装,让其更加适合MVC开发。在ThinkPHP 3.x中使用时,需要额外手动引入该类。下面将结合示例代码,演示Sesson类的使用。
(1)增加Session
(2)删除Session
图9-11 Session数据存放表
(3)修改Session
(4)获取Session
(5)判断Session是否过期
(6)删除所有Session
有关PHP MVC开发实战的文章
1)封装一个自己的时间类CMyTime,实现类似于MFC中CTime类的大部分功能。请建立Win32或者MFC工程,并通过工作区新建CMyTime类(无基类),编写以下每个函数的函数体实现代码。2)在基于对话框的Win32工程中,编辑资源管理器。加入图标和关于对话框,在对话框初始化WM_INITDIALOG消息中,实现以下功能。在MFC中设置断点,按<F11>键可以查看CWnd::SetIcon的源代码,并查阅MSDN中的以下函数。......
2023-11-25
下面通过示例代码,演示Cookie函数的实际应用。Cookie能够存放包括中文在内的字符,但长度需要控制在225个字符之内。通过前面的学习,相信读者已经能够掌握Session及Cookie的操作了。虽然Cookie存放于客户端,但是并不意味着Cookie不适合用于会员验证等场景。所以很多网站会使用加密的方式存放Cookie用户名及密码,甚至结合软件与硬件签名实现高度安全的Cookie。总而言之,使用Cookie存放登录数据是可行的,但要做好加密与解密相关操作。......
2023-11-04
对于LED,0级封装的晶片互连已在第4章进行了讨论。本章将主要介绍1级封装,即用1个或几个LED芯片制作出一个独立的器件。在5.3节中将讨论与热管理相关的问题。实际上,尽管LED的光输出效率显著高于白炽灯或荧光灯,但LED输入电功率的80%仍以热的形式消耗。......
2023-06-15
特殊的封装环境某些MEMS器件的工作环境是气体、液体或透光的环境,MEMS封装必须构成稳定的环境,并能使气体、液体稳定流动,使光纤输入低损耗。低应力在MEMS器件中,具有微米/纳米级尺寸的部件精度要求高,但结构脆弱易断裂,因此封装所产生的应力应尽可能小。近年来,随着科学技术的发展,在MEMS封装中已广泛采用喷印工艺[23],这种工艺无需掩膜,经济有效,不涉及湿法工艺。......
2023-06-15
由于Cu和超低k材料间热膨胀系数差异导致了热应力问题的出现,因此需要关注超低k材料的力学性能,但是更严重的热应力则来自芯片与封装的相互作用,后者将是未来主要的可靠性问题。它已经导致了众所周知的焊料接头低周疲劳失效,但由芯片与封装相互作用导致的热应力对Cu/超低k多层结构的影响尚不清楚。为了避免来自芯片-封装相互作用产生的热应力,对于Si芯片来说,使用Si基板似乎更好,因为在Si芯片和Si基板之间不产生热应力。......
2023-06-20
LED的封闭技术就是对其芯片和两个电极进行保护的技术。LED封装技术大都是在半导体分立器件封装技术基础上发展与演变而来的。图3-22 LED封装工艺流程下面介绍几种常用的封闭技术。具体而言,大功率LED封装的关键技术包括以下几个方面。......
2023-06-15
图4-29 电位器常见封装图4-30 二极管常见封装a)直插式电容 b)表贴式电容晶体管晶体管常以“CAN-XX”或“BCY-XX”命名,如图4-31所示。图4-32 元件封装向导2)单击“Next”按钮,选择电容封装形式“Capacitors”,单位选择Mil,如图4-33所示。3)再单击“Next”按钮,选择具体的封装形式,比如用默认的封装形式,如图4-34所示。图4-35 设置焊盘a)设置焊盘尺寸b)设置焊盘间距5)单击“Next”按钮选择电容的外形,这里选择有极性、放射状、圆形,如图4-36所示。......
2023-06-23
从研究的角度来分类, 半导体封装测试生产线属于Job-Shop类型。封装测试企业属于车间加工生产企业, 大规模订货型生产, 其内外部环境存在一些突出特点。封装测试制造企业的主要生产任务完全来自于客户的订单。......
2023-06-20
相关推荐