系统共支持7种模式扩展,下面将分别对最常用的几种模式进行介绍。表11-1 CURD操作接口如表11-1所示,参数$data表示传入或返回的数据信息;参数$options表示返回当前操作的模型名称及表前缀。......
2023-11-04
前面介绍过,系统内置的行为是系统正常执行的基础,所以开发人员不需要改动这些扩展。事实上系统已经提供了一系列行为扩展,在项目中使用时,直接配置即可(所有内置行为扩展默认都是被禁用的)。下面分别介绍。
1.AgentCheck(检测浏览器代理)
AgentCheck行为是一个系统提供的扩展行为,用于检测当前访问用户是否使用代理访问,如果是则禁止访问。开启该行为只需要两步。首先打开项目配置文件,开启LIMIT_PROXY_VISIT配置项,如以下代码所示。
然后打开项目Conf/tags.php文件(如果不存在则需要手动创建),配置行为标签,以便系统正确执行,如以下代码所示。
如上述代码所示,这里执行AgentCheck行为的运行阶段为app_init(即初始化程序)。读者可以根据图11-8所示标识的流程,在相应的标签中定义需要的扩展行为。通过前面的步骤,当前项目下的网页就具备检测是否代理访问的功能了。
2.BrowserCheck(防止浏览器刷新)
BrowserCheck行为利用Cookie防止用户频繁刷新浏览器,该行为共有一项配置,如以下代码所示。
配置项LIMIT_REFLESH_TIMES表示刷新的间隔,以秒为单位。设置完成后,只需要在tags.php文件中定位运行标签即可,如以下代码所示。
3.CheckLang(检测多语言)
CheckLang行为在9.3节已经有详细介绍,在此不再细述。CheckLang行为共支持4个配置项,如以下代码所示。
4.CronRun(计划任务)(www.chuimin.cn)
这里的计划任务与Linux中的计划任务不是一个概念,CronRun行为需要由浏览器触发,执行的任务指令为Web可执行脚本,例如JavaScript、PHP、HTML等。要启动计划任务,只需4个步骤。首先配置计划任务,打开项目配置文件,设置计划任务执行时间,如以下代码所示。
CRON_MAX_TIME配置项表示计划任务的执行时间,以秒为单位(即服务器时间加上CRON_MAX_TIME配置时间等于计划任务执行时间)。配置完成后在tags.php文件中定位CronRun行为,如以下代码所示。
通过前面的配置,计划任务成功开启。接下来需要配置计划任务列表,CronRun使用~crons.php存放任务列表,该文件需要存放于项目Runtime目录中。接下来配置一条计划任务,如以下代码所示。
如上述代码所示,testcron表示任务名称。对应的值为一维数组,其中test.php表示执行的PHP文件名称,该文件必须保存于项目Lib/Cron目录;参数30表示执行间隔时间;1353052449表示下次执行的时间戳,可为空。
最后只需要在Lib/Cron目录中创建test.php文件即可。为了方便演示,这里只需要在该文件中输出字符串即可,如以下代码所示。
在实际应用开发中,可以在任务执行脚本中调用远程数据、执行PHP支持的功能操作。
5.RobotCheck(防止数据爬虫访问)
RobotCheck行为用于检测访问来源是否是数据采集之类的自动化软件,从而减少系统资源占用。RobotCheck行为共支持一项配置项,如以下代码所示。
开启RobotCheck行为后,只需要在tags.php文件中指定运行阶段即可,如以下代码所示。
有关PHP MVC开发实战的文章
系统共支持7种模式扩展,下面将分别对最常用的几种模式进行介绍。表11-1 CURD操作接口如表11-1所示,参数$data表示传入或返回的数据信息;参数$options表示返回当前操作的模型名称及表前缀。......
2023-11-04
ThinkPHP的一大特点就是扩展灵活,同样行为也是可以自定义扩展的。接下来将深入介绍自定义行为扩展的实现。上述代码是一个名为AutoCheckUserLogin的自定义行为类。最后还需要确保自定义行为类继承于Behavior基类。事实上,AutoCheckUserLogin配置项并不是必需的,也就是说在配置时,自定义行为就已经能够正常运行了,配置项只不过用于实现灵活的配置。此时,再次访问项目,只有Index控制器下的页面受AutoCheckUserLogin自定义行为影响,其他页面则不受影响。......
2023-11-04
在这一过程中,开发人员需要对URL请求进行处理,例如安全检测、URL映射等,只能在运算进行前使用特定的文件进行拦截或处理。ThinkPHP的行为机制本质上是一种URL拦截处理机制,行为的引入把过去没有生命周期概念的PHP应用添加了生命周期的概念。图11-8 ThinkPHP行为执行过程内置行为是确保系统能够运行的基础,一般情况下开发人员不需要扩展内置的行为。如图11-8所示,项目首先执行的行为标签是app_init,一直到app_end标签,中间的标签有些有对应的行为,有些没有。......
2023-11-04
PHP 5后的版本借鉴了大量Java思想,得益于早期PHP面向过程编程支持,PHP在实现MVC设计中变得较灵活、易用。但是随着PHP 5.x的到来,各种MVC框架的出现,尤其Zend推出的Zend Framework,彻底地改变了PHP状况,使得PHP也能够实现优雅的Web编程。MVC设计模式将使代码将变得简洁。但是在MVC设计模式中,Index称为动作。当然,MVC只是一种设计模式,在开源的PHP编程世界中,已经拥有众多的MVC编程框架。......
2023-11-04
下面将分别对常用的扩展函数进行讲解。最终将会得到“一个多字节安全的substr()操作基础上的字...”,读者可以在此基础上继续完善msubstr函数。build_count_rand函数返回的结果是关联数组,在实际应用开发中,可以将结果循环插入数据库等。byte_format函数通常用于上传文件检测,或者统计用户使用空间大小等。......
2023-11-04
在网站开发中处理时间日期数据是比较烦琐的工作,例如计划日期时差、日期转星期、指定日期倒计时等。系统内置了Date扩展类,能够让日期数据处理变得快捷、简单。上述代码运行结果为“1.4246575342466”,即1.4年。其中参数time表示与构造函数日期比较的日期数据;参数precision表示结果精度。......
2023-11-04
前面已经简单介绍过ThinkPHP视图引擎,这些标签处理机制类似于JSP tag,使用XML作为标签的渲染方式,开发人员可以方便地在网页中嵌入XML标签,然后由ThinkPHP视图引擎解释成标准的PHP代码。ThinkPHP的视图引擎之所以高效,主要体现在它的标签扩展性。ThinkPHP的视图标签扩展性够完美地与后台控制器代码相结合,例如在Smarty中使用函数功能,首先需要在后台PHP代码注册,而在ThinkPHP中完全不需要,如以下代码所示。......
2023-11-04
对于普通的开发者而言,最需要关注Lib目录及Extend目录,接下来分别进行介绍。由于ThinkPHP遵循Apache 2.0协议,意味着PHP开发人员可以通过修改ThinkPHP源代码,以便更适合自己的开发需求,这就要求开发人员必须要对Extend目录下的扩展类库要有深入的认识。......
2023-11-04
相关推荐