用PHP5进行三层开发.docx

上传人:b****5 文档编号:5857898 上传时间:2023-01-01 格式:DOCX 页数:10 大小:20.55KB
下载 相关 举报
用PHP5进行三层开发.docx_第1页
第1页 / 共10页
用PHP5进行三层开发.docx_第2页
第2页 / 共10页
用PHP5进行三层开发.docx_第3页
第3页 / 共10页
用PHP5进行三层开发.docx_第4页
第4页 / 共10页
用PHP5进行三层开发.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

用PHP5进行三层开发.docx

《用PHP5进行三层开发.docx》由会员分享,可在线阅读,更多相关《用PHP5进行三层开发.docx(10页珍藏版)》请在冰豆网上搜索。

用PHP5进行三层开发.docx

用PHP5进行三层开发

用PHP5进行三层开发

文演示了PHP三层开发的强大功能,PEAR:

:

DB_DataObject用于业务逻辑,Smarty用于显示逻辑,这里假设你熟悉了HTML,Smarty,PEAR:

:

DB_DataObject,Mysql和PHP5.如果你需要补充知识,下面的文章解释了一些原理:

用PHPDataObject简化业务逻辑

Smarty简介:

一个PHP模板引擎

PHP可伸缩性:

Myth

你应该已安装和配置好了Apache,MySQL,和PHP5(或者IIS,MySQL5和PHP)

PEAR:

:

DB_DataObject

PEAR:

:

DB_DataObject是一个用户数据库访问的抽象API.它是一个基于PEAR:

:

DB的SQL构建器和数据建模层.它把数据库表映射到PHP类并且提供像SELECT,INSERT,UPDATE,和DELETE这样的公共SQL函数.这使即使不了解SQL的开发者也可以写出好的数据库访问代码,并且鼓励演示逻辑和业务逻辑有一个清晰的分离.

(DB_OO已经移动到的PEAR,现在是DB_DataObject,如果你有老的代码要更新,查看关于从老的db_oo代码更新到DB_DataObjects的注释).

相关阅读

 

UpgradingtoPHP5

ByAdamTrachtenberg

TableofContents

Index

SampleChapter

ReadOnline--SafariSearchthisbookonSafari:

    

 OnlyThisBookAllofSafari

CodeFragmentsonly 

DataObjectperformstwotasks.First,itbuildsSQLstatementsbasedontheobject'svariablesandthebuilder

methods.Second,itactsasadatastoreforatablerow.There'sacoreclass,whichyouextendforeachof

yourtablessothatyouputthedatalogicinsidethedataclasses.There'salsoanincludedGeneratortomake

yourconfigurationfilesandyourbaseclasses.

DataObject执行两个任务.第一,它构建基于对象变量的SQL语句和构建器方法.第二,它作为数据库表的数据存储.这里有个核心类,对于每个表继承它,以使你把数据逻辑放入数据类中.这里还包括一个生成器,DataObject极大的简化了数据库访问代码,它使开发大型的,数据驱动的站点更加容易.

Atpresent,AlanKnowles,theleaddeveloperofPEAR:

:

DB_DataObject,isworkingonanewprojectcalledDBDO,

aCimplementationofthePEARpackageDB_DataObjects,basedonlibgda.Hisgoalistocreatethenext

generationofPEAR:

:

DB_DataObjects.

SMARTY

Smarty是一个从web页演示中分离内容的PHP模板引擎.它使用GPL许可.

Largeprojectscommonlyseparatetheroleofthegraphicdesignerfromthatoftheprogrammer.However,

programminginPHPhasthetendencytocombinethosetworolesinapersonandinsidethecode.Thiscanbring

difficultieswhenitcomestimetochangesomepartofthepage'sdesign.Ifthepagemixescontentand

presentation,thedeveloperhastocrawlthroughtheprogramtofindthepresentation.Smartyhelpstosolve

thisproblem.

CombiningtheTwo

Thefirstthingtodowhenstartingthisprojectistocreateaworkspaceinwhichtostoretheproject'scode.

Thenit'stimetoconfigurePEAR:

:

DB_DataObjecttoconnecttotheMySQLdatabaseMySQL(name:

example),

mapthedatabasetablestoPHPclasses,andthenconfigureSmartyforthepresentationtierfortheuser.Here

arethosestepsinmoredetail:

创建工作环境

创建一个叫做dataobjects的目录.

 

从命令行安装PEAR:

:

DB_DataObject,键入:

>pearinstallDate

>pearinstallDB_DataObject

>pearlist

INSTALLEDPACKAGES:

===================

PACKAGE        VERSION   STATE

Archive_Tar      1.2     stable

Console_Getopt   1.2     stable

DB               1.6.5   stable

DB_DataObject    1.7.1   stable *(Goal)

Date             1.4.3   stable

Mail             1.1.3   stable

Net_SMTP         1.2.6   stable

Net_Socket       1.0.2   stable

PEAR             1.3.1   stable

PHPUnit          1.0.1   stable

XML_Parser       1.2.0   stable

XML_RPC          1.1.0   stable

安装和配置Smarty

从下载开始,(我使用2.6.5版的Smarty)解压到你自己的目录.从它的libs目录中把Smarty.class.php,

Smarty_Compiler.class.php,Config_File.class.php,anddebug.tpl文件复制到dataobjects目录中.

还要复制core和plugins目录和其中所有的内容.创建几个新的目录,命名为templates,templates_c,configs,

和cache.

最后dataobjects目录包含:

|----cache

|----configs

|----core

|----plugins

|----templates

|----templates_c

11/10/2004 11:

17a.m.   

.

11/10/2004 11:

17a.m.   

..

11/10/2004 11:

17a.m.   

cache

11/10/2004 11:

17a.m.   

configs

11/10/2004 11:

17a.m.   

core

11/10/2004 11:

17a.m.   

plugins

11/10/2004 11:

17a.m.   

templates

11/10/2004 11:

17a.m.   

templates_c

07/09/2004 09:

48a.m. 13,105Config_File.class.php

16/04/2004 03:

03a.m. 5,117debug.tpl

10/09/2004 02:

15p.m. 65,350Smarty.class.php

10/09/2004 07:

14p.m. 90,924Smarty_Compiler.class.php

             4archivos       174,496bytes

             8dirs  6,699,454,464byteslibres

创建数据库

创建一个名为example的数据库,它包含一个名为User的表,不必担心模式,稍后我们会创建.

配置PEAR:

:

DB_DataObject

要构建数据对象,创建下面的文件

configDB.php

php

require_once'DB/DataObject.php';

$config=parse_ini_file('example.ini',TRUE);

foreach($configas$class=>$values){

   $options=&PEAR:

:

getStaticProperty($class,'options');

   $options=$values;

}

?

>

此脚本基于example配置文件中的值创建一个到数据库的连接,显示如下.

example.ini

[DB_DataObject]

database        =mysql:

//root:

@localhost/example

schema_location =/dataobjects/schema/

class_location  =/dataobjects/

require_prefix  =/dataobjects/

class_prefix    =DataObjects_

extends_location=DB/DataObject.php

extends         =DB_DataObject

自动构建数据库模式

包含两个过程,构建数据库的对象-关系映射,和从example数据库user表中自动创建一个类.在表中的所有字段

名将成为类成员变量.

创建适当的模式:

C:

\PHP\PEAR\DB\DataObject>C:

\PHP\php.execreateTables.php\

 C:

\dataobjects\example.ini

这将生成User.php文件:

php

/**

 *TableDefinitionforuser

 */

require_once'DB/DataObject.php';

classDataObjects_UserextendsDB_DataObject

{

   ###START_AUTOCODE

   /*thecodebelowisautogenerateddonotremovetheabovetag*/

   var$__table='user';      //tablename

   var$user_Id;               //int(11) not_nullprimary_keyauto_increment

   var$first_Name;            //string(30) not_null

   var$last_Name;             //string(40) not_null

   var$email;                 //string(100) not_null

   /*Staticget*/

   functionstaticGet($k,$v=NULL){

 returnDB_DataObject:

:

staticGet('DataObjects_User',$k,$v);

 }

   /*thecodeaboveisautogenerateddonotremovethetagbelow*/

   ###END_AUTOCODE

}

?

>

它还会为user表模式生成example.ini配置文件:

[user]

user_Id   =129

first_Name=130

last_Name =130

email     =130

[user__keys]

user_Id=N

Smartyfiles

It'stimetocreateseveralfilesforSmarty:

Smarty文件

现在是创建几个Smarty文件的时候了:

include.php

1

2  require('Smarty.class.php');

3  $smarty=newSmarty;

4  $smarty->template_dir='templates/';

5  $smarty->compile_dir ='templates_c/';

6  $smarty->config_dir  ='configs/';

7  $smarty->cache_dir   = 'cache/';

?

>

此脚本实例化了一个新Smarty对象.设置Smarty属性.

index.php

1

2 require("include.php");

3 $smarty->assign('TITLE','ACCESSMySQLDATABASEINTHREETIERSWITHPHP');

4 $smarty->assign('HEADER','WHATWISHDO?

');

5 $smarty->display('index.tpl');

?

>

给Smarty模板分配变量.

insert.php

2 require("include.php");

3 $smarty->assign('TITLE','INSERTDATA');

4 $smarty->assign('HEADER','InsertData');

5 $smarty->assign('data1','FirstName');

6 $smarty->assign('data2','LastName');

7 $smarty->assign('data3','email');

8 $smarty->display('insert.tpl');

?

>

添加将在insert.tpl使用的变量.调用模板insert.tpl.

save.php

1  

2  require_once('DB/DataObject.php');

3  require('configDB.php');

4  $user=DB_DataObject:

:

factory('user');

5  $user->first_Name=$x;

6  $user->last_Name =$y;

7  $user->email     =$z;

8  $user_Id=$user->insert();

9  $user->update();

10 echo"";

11?

>

ThisscriptsavesdatabyusingaPEAR:

:

DataObjectfortheusertable.Line2loadstheclassDataObject,and

line3callsconfigdb.phptoconnecttothedatabase.Line4createsaninstanceofauserobject(seeUser.php).

Lines5through7passthevariablescollectedfromtheformininsert.tpl($x,$y,and$z)inordertosavethe

datainthedatabase.Theprimarykeyofthetableisanautoincrementcolumn,soitdoesn'tneedavaluethere.

Line8insertstheobject,andline9carriesoutanupdate.

view.php

2  require_once('DB/DataObject.php');

3  require('configDB.php');

4  require("include.php");

5  $user=DB_DataObject:

:

factory('user');

6  $user->find();

7  while($user->fetch()){

8     $smarty->append('users',array(

         'ID'       =>$user->user_Id,

         'FIRSTNAME'=>$user->first_Name,    

         'LASTNAME' =>$user->last_Name,    

         'EMAIL'    =>$user->email,    

      ));

   }

9  $smarty->assign('TITLE','ListUsers');

10 $smarty->assign('HEADER','ListUser');

11 $smarty->assign('data0','User_Id');

12 $smarty->assign('data1','FirstName');

13 $smarty->assign('data2','LastName');

14 $smarty->assign('data3','email');

15 $smarty->display('view.tpl');

16 ?

>

此脚本显示所有存储在user表中的数据.它加载PEAR:

:

DataObject和include.php文件(给smarty模板分配变量).

第5行创建一个user对象的工厂.第6行执行find()方法.SELECT*FROMuser从数据库中检索出了数据,通

过fetch()方法为模板保存数据,一次返回一条记录.

9到14行是分配其他的变量给Smarty.

这些文件都应当放在dataobjects目录中.

对于模板,这里有index.tpl,list.tpl,和save.tpl.这里是他们的代码:

index.tpl

2  

3   {$TITLE}

4    

5  

6     

7   

8    

9      {$HEADER}

10   

11  

12    

13 

14  

16    

17      

          onclick="javascript:

location.href='insert.php';">

18   

19  

20  

21    

22     

         onclick="javascript:

location.href='view.php';">

23  

24  

25 

26 

27

站点主页,它在的3行和第9行分别显示$TITLE和$HEADER,这些变量值是从index.php传递过来的.

这个脚本在web浏览器上生成两个按钮,Insert和View,他们有相应的行为.如果用户点击Insert,系统将调

用Insert.php.如果用户点击View,那么view.php将被调用

insert.tpl

1

3   {$TITLE}

4    

7    

8      

9       

10         

11           {$HEADER}

12        

13      

14      

15        

16          {$data1}

17           

18    

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1