ttd之php测试驱动开发
确保你的代码正常工作是测试的首要的目的,但是在测试你的代码时候,你应该认识到除此
之外还有一些额外的,相对次要的目的:
1、测试让你书写容易测试的代码。这使得代码松散耦合,复杂设计,而且具有
很好的模块性。
2、测试能让你清晰的了解运行代码的期望结果,让你从一开始就注重于模块的
设计和分析。通过测试,也会让你考虑所有可能的输入和相应的输出结果。
3、测试能很快速的了解编码的目的。换句话说,测试事例扮演着“实例”和“文
档”的功能,准确的展示着如何构建一个类,方法等。在这本书中,我有时候通过一个测试
事例来演示代码的期望功能。通过读取一个测试方法的声明,你可以清楚的了解代码是如何
运行的。一个测试实例定义在代码在明确惯用法下的运行情况。
统一建模语言(UML)是一种与具体编程语言无关的用来描述面对对象编程观念的方
法。关于UML 的相关信息资料你可以从http://www.uml.org上找到。
UML涉及到很多方面,但对PHP程序员来说,其中最相关的两方面是类图和序列图。
类图描述了一个或者更多的类以及他们在你的程序之间的相互关系。(译者注:最好能
够参考相关的UML 教材,将有助于你的理解。)每个类都用一个盒子标识,每个盒子都分成
三部分:第一部分是类名,第二步分列举了类的属性(变量),最后一部分列举了类的方法。
属性和方法的可见度被设计为:+代表public( 公开),—代表private( 私有),#代表protected
(受保护的)。
序列图描述了为一个特定的任务或者事件,你对代码中的对象之间的典型的交互活动。
一个序列图主要传达这样的信息:谁,以什么样的顺序,在什么时候,调用不同的方法(由
名字也可以看出:“序列图”)。序列图是对象集和开发人员之间交互沟通的非常有用工具。
在我自己的工程里,我使用这两种典型的类图来勾画我们的设计,但是很少能将他们
格式化到项目文档里面。对象之间的关系经常随着你对系统理解的深化和用户需求的变化而
改变,因此这些图表很快就会过时。这也就是说“一张图足足值一千个文字”。这些图表对
新开发人员理解系统是非常由帮助的,也能做为使用你软件的开发人员的手册。
相关文档:
最近在折腾 PHP + MYSQL
的编程。了解了一些 PHP SQL 注入攻击
的知识,于是写了这篇文章 http://www.xiaohui.com/weekly/20070314.htm,总结一下经验。在我看来,引发 SQL 注入攻击
的主要原因,是因为以下两点原因:
1. php 配置文件 php.ini 中的 magic_quotes_gpc
选项没有打开,被置为 off
2. 开发 ......
使用java中的动态代理可以完成很多事情,比如将业务实例进行托管,实现AOP等,但是Php中没有实现这样的东西,昨天突然想到其实可以通过eval来模拟一个动态代理机制。php比java不同的是,php是不需要编译的,因此只要我们能够动态生成一段代码,然后用eval来执行就可以达到效果。代码如下:
/**
* 代理实现类
*/
inter ......
php和java通用sql语句法
SELECT max(id) from table
该方法在多线程等情况下可能会造成不正确。
java三种方法
1、根据ps的getGeneratedKeys
PreparedStatement ps = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); //红色是关键
ps.executeUpdate(); //执行后
ResultSet rs = ps.getGeneratedKeys ......
(1) 打开php的安全模式
php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(),
同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的文件,比如/etc/passwd,
但是默认的php.ini是没有打开安全模式的,我们把它打开:
safe_mode = on
(2) 用户组安全
当safe_mode打开时, ......
<?php
$p=new ReflectionClass(类对象);
$constants=$p->getConstants();//const 定义常量
$properties=$p->getProperties();//所有变量属性
$methods=$p->getMethods();//所有方法
//全部以数组形势返回
?> ......