此文演示了PHP三层开发的强大功能,PEAR::DB_DataObject用于业务逻辑,Smarty用于显示逻辑,这里假设你熟悉了HTML,Smarty,PEAR::DB_DataObject,Mysql和PHP5.如果你需要补充知识,下面的文章解释了一些原理:用PHP DataObject简化业务逻辑Smarty简介:一个PHP模板引擎PHP可伸缩性:Myth你应该已安装和配置好了Apache,MySQL,和PHP5(或者IIS,MySQL5和PHP)PEAR::DB_DataObjectPEAR::DB_DataObject 是一个用户数据库访问的抽象API.它是一个基于PEAR::DB的SQL构建器和数据建模层.它把数据库表映射到PHP类并且提供像SELECT,INSERT,UPDATE,和DELETE这样的公共SQL函数.这使即使不了解SQL的开发者也可以写出好的数据库访问代码,并且鼓励演示逻辑和业务逻辑有一个清晰的分离.(DB_OO已经移动到的PEAR,现在是DB_DataObject,如果你有老的代码要更新,查看关于从老的db_oo代码更新到DB_DataObjects的注释).相关阅读Upgrading to PHP 5By Adam TrachtenbergTable of ContentsIndexSample ChapterRead Online--Safari Search this book on Safari: Only This Book All of SafariCode Fragments only DataObject performs two tasks. First, it builds SQL statements based on the object''s variables and the buildermethods. Second, it acts as a datastore for a table row. There''s a core class, which you extend for each ofyour tables so that you put the data logic inside the data classes. There''s also an included Generator to makeyour configuration files and your base classes.DataObject 执行两个任务.第一,它构建基于对象变量的SQL语句和构建器方法.第二,它作为数据库表的数据存储.这里有个核心类,对于每个表继承它,以使你把数据逻辑放入数据类中.这里还包括一个生成器,DataObject 极大的简化了数据库访问代码,它使开发大型的,数据驱动的站点更加容易.At present, Alan Knowles, the lead developer of PEAR::DB_DataObject, is working on a new project called DBDO,a C implementation of the PEAR package DB_DataObjects, based on libgda. His goal is to create the nextgeneration of PEAR::DB_DataObjects.SMARTYSmarty是一个从web页演示中分离内容的PHP模板引擎.它使用GPL许可.Large projects commonly separate the role of the graphic designer from that of the programmer. However,programming in PHP has the tendency to combine those two roles in a person and inside the code. This can bringdifficulties when it comes time to change some part of the page''s design. If the page mixes content andpresentation, the developer has to crawl through the program to find the presentation. Smarty helps to solvethis problem.Combining the TwoThe first thing to do when starting this project is
Writing and managing ADO.Net code for data access is a tedious and monotonous job. Microsoft has provided an O/RM framework called "Entity Framework" to automate database related activities for your application.
The Microsoft ADO.NET Entity Framework is an Object/Relational Mapping (ORM) framework that enables developers to work with relational data as domain-specific objects, eliminating the need for most of the data access plumbing code that developers usually need to write. Using the Entity Framework, developers issue queries using LINQ, then retrieve and manipulate data as strongly typed objects. The Entity Framework's ORM implementation provides services like change tracking, identity resolution, lazy loading, and query translation so that developers can focus on their application-specific business logic rather than the data access fundamentals.
Entity framework is an Object/Relational Mapping (O/RM) framework. It is an enhancement to ADO.NET that gives developers an automated mechanism for accessing & storing the data in the database.
Entity framework is useful in three scenarios. First, if you already have existing database or you want to design your database ahead of other parts of the application. Second, you want to focus on your domain classes and then create the database from your domain classes. Third, you want to design your database schema on the visual designer and then create the database and classes.
The following figure illustrates the above scenarios.
As per the above figure, EF creates data access classes for your existing database, so that you can use these classes to interact with the database instead of ADO.Net directly.
EF can also create the database from your domain classes, thus you can focus on your domain-driven design.
EF provides you a model designer where you can design your DB model and then EF creates database and classes based on your DB model.
ORM is a tool for storing data from domain objects to relational database like MS SQL Server, in an automated way, without much programming. O/RM includes three main parts: Domain class objects, Relational database objects and Mapping information on how domain objects map to relational database objects (tables, views & storedprocedures). ORM allows us to keep our database design separate from our domain class design. This makes the application maintainable and extendable. It also automates standard CRUD operation (Create, Read, Update & Delete) so that the developer doesn't need to write it manually.
A typical ORM tool generates classes for the database interaction for your application as shown below.
Visit wikipedia for more information on Object-relational Mapping
There are many ORM frameworks for .net in the market such as DataObjects.Net, NHibernate, OpenAccess, SubSonic etc. Entity Framework is an open source ORM framework from Microsoft.
Please note that Entity Framework is an open source framework by Microsoft. You can contribute to the Entity Framework project oncodeplex.