Debug是一个系统静态扩展类,主要用于调试程序的性能,为优化程序运行效率提供依据。例如显示块代码内存占用、块代码执行时间、区间代码性能调用等。假设需要对一个页面进行性能调试,那么首先需要在测试的代码之前加入标记,如以下代码所示。这对标记内的代码性能数据会被记录到$marker数组中。为代码添加了标记后,系统就能够识别调试区域了。......
2023-11-04
调试功能是ThinkPHP内置的一项重要的代码调试机制。由于MVC框架是由众多PHP类库构造的,它改变了许多传统PHP开发的模式,例如数据库操作、文件包含、代码执行流程等,在开发过程中要对代码进行调试,使用传统的PHP来调试,只能调试当前PHP代码,但不能调试由框架引起的异常。所以几乎所有主流的MVC框架都提供代码异常处理机制,即代码调试机制。ThinkPHP本身内置有代码调试功能,开发人员只需要在入口文件中开启即可。为了方便开发者了解每个页面的运行情况,系统还提供了Trace信息显示功能。下面分别介绍。
1.调试模式
一旦开启调试模式,代码的执行步骤将会发生改变,这种改变是利于代码调试的,但对运行结果没有影响。要启动代码调试功能,设置常量APP_DEBUG为true即可,如以下代码所示。
一旦开启代码调试模式,系统会在出现异常的动作视图模板中追加调试数据,如图8-8所示。
这些异常信息根据异常的情况而有所不同,并且是可以进行定制显示的。但需要注意的是调试模式只有异常时才会抛出调试信息。
图8-8 调试异常信息
2.Trace异常信息
Trace异常信息默认是关闭的,它是前面介绍的异常数据显示的子类。Trace信息是可定制的,可以在任何运行阶段抛出,事实上Trace可以在任何动作视图上随时显示。(www.chuimin.cn)
要开启Trace页面信息,只需要在配置文件中设置SHOW_PAGE_TRACE为true即可。需要注意的是Trace信息需要结合模板使用,也就是说动作中必须使用$thin->display()输出,如图8-9所示。
图8-9 Trace页面信息
Trace信息中详细地列出了当前页面所运行的时间、状态、内存占用、会话ID、请求协议以及页面所有调用的类库等,这对于代码的调试及优化是非常有用的。
对于Trace的运行时间、状态、内存占用等信息,是可以单独提取出来的。如果结合前面介绍的基于消息队列的日志系统,那么还可以将运行超时的页面推送到消息队列中,方便开发人员查看并优化。如以下配置文件代码所示。
上述配置信息将会显示当前动作运行时间、数据库操作、内存占用等信息,读者可以根据需要选择开启。最终的结果将会在页面底部呈现(不管页面是否存在异常),如图8-10所示。
图8-10 页面运行状态
有关PHP MVC开发实战的文章
Debug是一个系统静态扩展类,主要用于调试程序的性能,为优化程序运行效率提供依据。例如显示块代码内存占用、块代码执行时间、区间代码性能调用等。假设需要对一个页面进行性能调试,那么首先需要在测试的代码之前加入标记,如以下代码所示。这对标记内的代码性能数据会被记录到$marker数组中。为代码添加了标记后,系统就能够识别调试区域了。......
2023-11-04
Keil软件在调试程序时提供了多个窗口,主要包括输出窗口、观察窗口、存储器窗口、反汇编窗口和串行窗口等。图4-19 Keil软件的View菜单图4-20 工程寄存器窗口图4-21 存储器窗口外设窗口1)I/O口窗口。图4-28 串口监测窗口4)定时器窗口。图4-29 定时器菜单项图4-30 定时器设置窗口反汇编窗口是反汇编窗口按钮,单击后可以把C51反汇编为相应的汇编语言,如果有汇编语言知识,就可以对比C51程序与汇编程序。......
2023-10-28
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
系统共支持7种模式扩展,下面将分别对最常用的几种模式进行介绍。表11-1 CURD操作接口如表11-1所示,参数$data表示传入或返回的数据信息;参数$options表示返回当前操作的模型名称及表前缀。......
2023-11-04
前面已经简单介绍过ThinkPHP视图引擎,这些标签处理机制类似于JSP tag,使用XML作为标签的渲染方式,开发人员可以方便地在网页中嵌入XML标签,然后由ThinkPHP视图引擎解释成标准的PHP代码。ThinkPHP的视图引擎之所以高效,主要体现在它的标签扩展性。ThinkPHP的视图标签扩展性够完美地与后台控制器代码相结合,例如在Smarty中使用函数功能,首先需要在后台PHP代码注册,而在ThinkPHP中完全不需要,如以下代码所示。......
2023-11-04
图12-2 SOAP服务如果服务没有开启,需要在PHP配置文件中开启,如以下代码所示。其中参数1表示SOA服务描述文件,即WSDL文件,该文件是SOAP通信的核心;参数2表示SOAP协议版本,常用的版本有1.0及1.2,本章内容及示例全部基于SOAP 1.2版本实现。使用普通的Firebug等插件不能获取到异常信息,而断点调试是PHP的弱项,所以调试问题将会是SOAP开发首要面对的问题。......
2023-11-04
Input类库是ThinkPHP提供的一个字符串输入处理扩展,能够方便地对字符串进行安全过滤、转义等,下面将对Input扩展类公开可调用的方法进行介绍。URL协议支持https、ftp等,运行结果为“http://beauty-soft.net”。其中参数string表示需要进行省略处理的字符串;参数length表示省略的字符数。safeHtml通常用于过滤表单输入,防止用户输入HTML代码破坏数据安全性。......
2023-11-04
Eclipse是IBM的一个商业项目,2001年11月起IBM将Eclipse贡献给开源社区,从此奠定了Eclipse的地位。Eclipse通过PDT插件来提供PHP开发支持,Eclipse PDT能够让编写PHP变得简单和高效,下面将介绍Eclipse PDT的安装和使用。Eclipse PDT的安装有两种方式,一种是直接通过Eclipse的扩展进行安装;另一种是下载带PDT插件的Eclipse。下面将以Eclipse3.5.2作为基础,讲解Eclipse PDT插件的安装过程。如果下载带PDT插件的Eclipse,只需要双击Eclipse启动程序即可,此时Eclipse就提供了完美的PHP编程支持。......
2023-11-04
相关推荐