PHP刚入门,如何能快速用PHP开发应用呢?个人一直认为,语法变量函数都很好掌握,毕竟PHP这种类C语言很好学。关键是要封装几个自己的类:数据库操作类,常用验证类,还有一个就是搭框架要用的常用函数的集合。有了这3个类库,再加PHP本身的函数,一般的开发都会很简单了。
这里首先展示一个自己封装的PHP数据库操作类。为什么先写这个类呢?因为一旦这个类完成,基本的数据库添删改查都解决了。好了废话少说,先看类的调用情况,我这里用2个文件展示一个轻量级的架构,一个ini.php ,这个文件定义写一些常量以及需要包含的类文件,另外一个就是test.php文件了,展示怎么调用这个数据库操作类,test.php完成数据库的查询,分页操作,并且我做一条简单的插入操作的演示;在这里实验用的数据表为 t_test(id,test) ,这个表就2个字段。演示地址:http://myphp.net0791.com/test.php
先看 ini.php 文件:
define (”db_name”,”db_lt”);//$dbname数据库名
define (”db_username”,”db_xxx”);//$dbusername登陆数据库用户名
define (”db_password”,”xxxx”);//$dbpassword登陆数据库密码
require_once(’db_class.php’);
$objDB=new DBClass();
$objDB->connect(db_name,db_username,db_password,’gbk’);
看,这个文件很简单,做3样事,1)定义数据库用户名密码等;2)引用一个类文件 3) 创建一个新对象,并调用它的方法连数据库。 这是一个非常平常的引用文件,和我们的asp的 conn.asp 基本完成一样的事;当然其实第3步可以放在test.php里面;不过我更喜欢放在这里!因为DBClass类在写的时候就考虑很全面了,等下从test.php就可以看出;
test.php 文件:
require_once(’ini.php’);
$objDB->pagesize=10; //设置分页的页数,如果不需要分页则不设置;
$objDB->execute(’select * from t_test order by id asc’); //需要执行的查询语句,当然也可以是非查询语句,execute函数会智能判断;
//$objDB->execute(’insert into t_test(test) values(\’测试\’)'); //执行插入语句,execute会自动判断是查询还是插入,这个函数可以在页面多次调用,只要还是同一数据库;
while($rs=$objDB->fetch_array()) //利用fetch_array()函数去将查询结果分成数组{
echo ‘<br>’;
echo $rs['id'];
echo ‘ ’;
echo $rs['test'];
echo ‘<br>’;
}
$objDB->free_result(); //如果是查询,则请空查询结果,方便下一次select的传入;
echo $objDB->showpage(); //分页显示! 不需要传额外的任何东西,页码的越界问题DBClass都考虑了,而且自动记忆URL的内容,方便做搜索和多参数的分页
大家看上面的test.php, 写法非常方便,在整个过程中,我们不需要考虑数据库连接,因为在对象销毁的过程中,会自动关闭连接;而且不必考虑分页参数等问题,因为分页函数已经帮我们做完了这些;那么一个查询可以归纳为:
1)创建对象;2)连接数据库;3)设置每页显示记录条数并执行sql语句;4)获得结果一维数组;5)按自己想要的方式显示;6)清空结果集;7)分页;
当然这里的 第6步其实也可以省略,因为类销毁的时候会自动清空结果集;
这种写法其实非常类似于ADO的写法,唯一区别就在 ADO 循环的时候需要 while(rs.EOF) 而且需要 rs.movenext() 将游标下移;其实这种写法已经比ado的更简化一步了。就是少了rs.movenext();循环的条件就是$rs这个一维数组是否为空;
其实DBClass 类是非常灵活的,如果不需要分页的时候,只要不设置每页显示记录条数就可以了。正因为这种灵活性,所以一般我倾向于将对象的建立放在ini.php里,这里可以建立一个 DBClass对象作为全局对象,因为我们每个页面基本都需要和数据库合并起来!那需要做符合查询怎么办呢?我们可以将第2次查询封装在函数里,因为函数的作用域只有本身,这样只要在函数里建立一个DBClass就可以完成局部查询,而且查询完毕(退出函数)会自动清空数据库连接。这样的程序就比较健壮了。DBClass在分页的时候还考虑到了伪静态情况下分页!因为很多时候我们的分页都是需要做成:/test.php/1.html 这种形式,这里的1.html是可以换的,比如 2.html。如果要做成伪静态怎么办呢?也很简单,只要把echo $objDB->showpage(); 改成: echo $objDB->pageindex(’/test.php/$$.html’); 就可以了;其实showpage() 就是调用了pageindex的方法,如果要改成英文的也很好做,只需要showpage(’English’) 就可以了。
当然,也可以继承DBClass构建出自己的类,在DBClass里面全部的内部变量都是public 或 protected 的属性,方便做扩展。
DBClass类文件下载:db_class