1、所有有数据库操作的类由db派生
把数据库操作封装在db类中的原因是你有可能更换数据库;数据库本身控制发生变化等。此时你只需调整db类即可,若使用函数则修改量就很大。
2、多层派生较单独实例化类要好,操作都包含在类中。不是“对每个表都会写一个class来操作”而是“对每个表都派生一个class来提供细节”。根据不同的目的从不同层次上派生。最终的形式大致是
<?php
include "object_class.php"; // 载入类
$obj = new claseeName; // 实例化类
$obj->run(); // 执行
?>
把数据库操作封装在db类中的原因是你有可能更换数据库;数据库本身控制发生变化等。此时你只需调整db类即可,若使用函数则修改量就很大。
2、多层派生较单独实例化类要好,操作都包含在类中。不是“对每个表都会写一个class来操作”而是“对每个表都派生一个class来提供细节”。根据不同的目的从不同层次上派生。最终的形式大致是
<?php
include "object_class.php"; // 载入类
$obj = new claseeName; // 实例化类
$obj->run(); // 执行
?>
就是先建操作各个表的class,根据需要再extend到具体user,document等的操作
“对每个表都派生一个class来提供细节”。根据不同的目的从不同层次上派生。
这句话的意思是否意味着并非要将所有的数据库操作都写在一个类中,只是都从DB库派生出来,我是从DB派生了一个myclass类,然后程序的其他模块都从这个myclass派生,有class_a,class_b,class_c……,分别对应不同的功能,是否我在a,b,c中都可以存在例如select,insert,delete之类功能的函数也是可取的?
其实我的困惑主要在于一种想法是写少量的函数,少量的代码,集成了各种功能模块中对数据库的操作,也就是将擦操作概括,另一种想法是将操作功能细分,将本来可以一次表达的东西分成多个小块来表达。比如,我有a,b,c三个表,select操作,我可以在myclass中写一个函数:
myclass::myselect($tbname,$fieldname,$wherestr){
$sql = "select $filedname from $tbname where $wherestr";
}
在函数中生成sql查询语句来查询这三个表
也可以这样写:
class_a::myselect(){
$sql = "select * from a";
}
class_b::myselect()
(){
$sql = "select * from b";
}class_c::myselect()
(){
$sql = "select * from c";
}
很明显后一种方法代码量要多得多,但是分得很细致。
这里只是举了个例子,其实系统比较大,尤其对可扩展性、维护性要求很高,请问用什么样的解决办法最好?谢谢大家!
比如
class A
{
function SelectData()
...
}
然后在每个表的每个CLASS中这么写
class TableB extends A
{
function GetData()
{
$this->SelectData(All);
}
}
充分利用继承机制
1.尽量用class来封装各种操作,在调用时,实例化这个class,并调用相关的成员函数完成class子功能
2.把最通用的函数(多个class都要用到的函数比如操作0数据库的,却除空格的,去除非法字符的函数)放到function.php里面
function.php内容是
<?
function f1(){}
function f2(){}
?>
notes:
在class里面调用function.php里的函数很简单,只要f1()这样就可以了
需要指出的是,在php文件头上要先
<?include("function.php");?>欢迎和我讨论,
我的msn :[email protected]