十九、国际化和本地化
1、所谓国际化,是指对一个只为某个地区设计的程序进行重构,使其能够在更多地区使用的过程。所谓本地化,则是指在一个面向国际化的程序中增加对一个新地区应用支持的过程。
2、使用locale程序列举出可用的地区,用locale-a可以输出你的系统所支持地区。
(1)在Linux和Solaris系统中,可以在/usr/bin/locale中找到有效的locale。
(2)BSD的地区信息通常保存在/usr/share/locale中。
3、如果想查找当前地区且不改变它,可以以0作为地区参数传递给setlocale(),如下:
4、如果想使用系统的环境变量中设置的默认地区,可以将null作为地区参数传递给setlocale(),如下:
5、在格式化的字符串中,%2$告知sprintf()使用第二个参数,而%1$则告知它使用第一个参数。
6、使用strftime()的%c格式化字符串:print strftime('%c');。这个格式化字符串能够以符合某地区习惯的方式显示完整的日期和时间戳。
7、对地区的修改不会改变时区;也就是说,它只改变显示结果的格式。
8、gettext():从默认的域中检索消息。
(1)如果你觉得gettext('Good morning')还是太长,那么可以使用gettext()函数的非正式别名:_()。因此,gettext('Good morning')就可以简写成_('Good morning')。
(2)应该注意gettext的一个不足是:它不是线程安全的。如果在一台多线程Web服务器中使用gettext,可能会遇到修改一个线程中的设置而影响到其他线程的问题。
二十、错误处理,故障排除和测试
1、异常在脚本中提供了一个可以借之创建沙箱区域的try/catch结构,在该结构中可能会处理极其严重的问题,但却不会对其他代码造成任何伤害。
在上面的CustomException类中,包含着两个目标。第一个是记录你能觉察到的任何信息;第二个是要从用户的角度做到竟可能地酷。
2、ini_get_all():该函数返回的是一个包含变量的关联数组,数组的每个元素自身也是一个关联数组。二级数组中包含三个元素:全局设置值、本地值和访问代码。
3、E_STRICT是唯一不包含在E_ALL中的错误级别。
4、在set_error_handler()中传递一个函数名,PHP就会把所有错误都交由该函数来处理。
5、几种魔术常量:
(1)__FILE__常量指的是当前文件名。
(2)__LINE__指的是当前行数。
(3)__FUNCTION__常量都是以小写形式返回当前的函数名,但从PHP5开始,该常量改为返回声明时候的函数名。
(4)__CLASS__常量返回当前的类名。
(5)__METHOD__常量返回当前类方法的名称。
二十一、 性能调谐和负载测试
1、生成散列的三种方式:
第三中方式的速度是PHP基本md5()函数速度的两倍,md5()与hash()之间的绝对时间差大约是十分之一毫秒。
2、函数执行所花费的时间:
3、对一个网站进行基准测试通常是一种由单独的开发者完成的临时活动。其中最常用的工具去Apache HTTP服务器的基准测试工具——ab。
4、压力测试是一种能够中断你的Web应用程序的测试技术。压力测试的一个极好的开源工具是Siege。
5、不必要计算的一种常见来源就是在没有必要的情况下使用正则表达式。“检查字符串A中是否包含字符串B呢”就可以通过其他手段来测试,这种情况最终可能只需要一个非常简单的测试,而不需要正则表达式: