不错的一篇面向对象的PHP开发模式简写版Word格式.docx
《不错的一篇面向对象的PHP开发模式简写版Word格式.docx》由会员分享,可在线阅读,更多相关《不错的一篇面向对象的PHP开发模式简写版Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
由数据分析后我们的脑子中应该能出现一些大致的数据模型及一些基本数据小模型组合
而成的大模型,一般情况下,我们把一些需要变化的数据建立数据库来进行维护,不需要变
化的数据做成一些常量,并针对这些数据类型抽象出相关的类,并建立进行数据库操作的相
关接口(函数形式,即方法),数据与数据的相关联的操作也可以抽象出一些基本的方法,
我们只需要在程序设计中进行调用即可。
五、项目分析--界面分析
我们分析好了数据,目的是组合出一个或者几个产品,而既然要做产品就要给别人看。
所以我们还要进行界面设计,当各种界面尽量考虑全面后,就将设计的界面制作成模板,并
写出相应的处理接口程序(所以,在程序眼里,界面也是一种数据),在写程序时进行使用。
六、项目分析--流程设计
网站式程序非常简单,按照流程调用我们设计好的各种数据即可。
七、案例分析
用户系统,现在我们分析一个最简单的例子,一个用户系统。
1.数据分析,我们分析一个最简单的用户系统,所以这里只有两个数据,那就是用户名
和密码,继续分析还会想到我们应该给每条记录加一个编号(id),现在有了三个数据,实在没
有再可以添加的了。
2.数据抽象,只有三个数据的数据模型,想到它可能出现的操作方法,我们做如下安排,
数据库接口(savetodb(),getfromdb(),delete()),分别为数据入库及出库还有删除;
更改密
码(password())。
另外考虑到对用户系统的管理及查看,所以会有一个集合类型的数据(list)。
3.界面分析,登陆,验证成功,验证出错,修改密码,修改密码成功,修改密码出错,用
户注册,注册成功,注册出错;
管理--用户列表,管理--用户信息查看,管理--修改用户
密码,管理--删除用户。
4.示例代码
PHP代码:
复制代码代码如下:
<
?
php
include_once"
include.php"
;
/*
**用途:
用户系统数据抽象
**作者:
岳信明
**时间:
2005-8-3010:
05
*/
classUser{
var$id=0;
var$Name="
"
var$Password="
var$db="
var$tpl="
/*
**函数功能:
构造函数,指定类使用的数据库连接
**参数说明:
$tpl,显示模板处事句柄;
$userdb,数据库连接
**返回值:
无
**作 者:
**创建时间:
37
*/
functionUser($vtpl="
$userdb="
){
if($vtpl=="
global$tpl;
//外部定义数据库连接
$this->
tpl=&
$tpl;
}else{
tpl=$vtpl;
}
if($userdb=="
global$db;
db=&
$db;
db=$userdb;
将数据存入数据库
无参数
true/false,成功/失败
24
functionsavetodb(){
if($this->
Name=="
returnfalse;
id){
$strSQL=sprintf("
UPDATEuserSETName='
%s'
Password='
"
."
WHEREid='
Name,
Password,
id
);
INSERTuser(Name,Password)"
VALUES('
'
)"
Password
db->
query($strSQL)){
returntrue;
从数据库中获取记录
$id,记录编号
32
functiongetfromdb($id=0){
if($id){
SELECT*FROMuserWHEREid='
$id);
}elseif($this->
Name!
="
SELECT*FROMuserWHEREName='
Name
query($strSQL);
next_record()){
id=$this->
f("
id"
);
Name=$this->
Name"
Password=$this->
Password"
从数据库中删除记录
47
functiondelete($id=0){
if(is_array($id)){//同时删除多条记录
foreach($idas$i){
DELETEFROMuserWHEREid='
$i);
}elseif($id){
$this->
id);
显示登陆界面
$placeholder,显示位置
2005-8-3011:
00
functionshowLogin($placeholder){
tpl->
addBlockfile($placeholder,"
user_showLogin"
pl.user_showLogin.html"
setCurrentBlock("
setVariable(array("
user_Logintitle"
=>
用户登陆"
strUsername"
用户名"
strPassword"
密 码"
)
parseCurrentBlock("
处理登陆信息
12
functiongetLogin($placeholder="
if(isset($_POST["
login"
])){
if($_POST["
username"
]=="
if($placeholder!
setVarable($placeholder,"
用户名不能为空!
Name=$_POST["
];
getfromdb();
Password()==$_POST["
password"
]){
登陆失败!
显示注册界面
2005-8-3013:
33
functionshowRegister($placeholder){
user_showRegister"
tpl.user_showRegister.html"
user_shoRegister"
//在这里完成处理模板的代码
...
处理注册信息
true/false,注册成功/注册失败
2005-8-3015:
49
functiongetRegister($placeholder="
register"
)){
){//用户名合法性检查,可改成其它检查方式
){//错误提示
setVariable($placeholder,"
用户名不合法!
]!
=$_POST["
repassword"
]){//密码合法性检查
两次输入密码不一致!
SELECTCOUNT(*)FROMuser"
WHEREName='
next_record();
COUNT(*)"
)>
0){
INSERTINTOuser(Name,Password)"
VALUES('
}//类User定义结束
用户系统数据列表抽象
2005-8-3017:
21
classUserList{
var$page=0;
var$pages=0;
var$pagesize=9;
var$recordsum=0;
var$Users=array();
var$c;
构造函数,新建一个类时对一些变量进行初始化
functionUserList($page=1,$pagesize=10,
$c,$vtpl="
$vdb="
page=$page;
pagesize=$pagesize;
condition=$condition;
if($vdb!
db=$vdb;
db=$db;
if($vtpl!
tpl=$tpl;
SELECTCOUNT(*)FROMuserWHERE'
condition
recordsum=$this->
pages=ceil($this->
recordsum/$this->
pagesize);
SELECT*FROMuserWHERE'
LIMIT'
condition,
page*$this->
pagesize,
pagesize+1
for($i=0;
$i++){
Users[$i]=newUser($this->
tpl,$this->
db);
Users[$i]->
显示列表
2005-8-319:
16
functionshowUserList($placeholder){
showUserList"
"
tpl.showUserList.html"
//在这里添加相应的处理代码
setVariable("
strTitle"
用户列表"
$strTitles=array("
操作"
$RecordOperations=array("
重设密码"
operate=passwd&
id="
删除"
operate=delete&
//显示表头
foreach($strTitlesas$title){
showRecordsTitle"
strHead"
$title);
//显示记录及相关操作
if(is_array($this->
Users)){//有记录
foreach($this->
Usersas$user){
showRecords"
showCell"
strCell"
$user);
foreach($RecordOperationsas$operation=>
$linkOperation){
showOperations"
strOperation"
$operation);
strLink"
$_SERVER["
REQUEST_URI"
].$linkOperation.$user->
}else{//无记录
无记录"