我从一开始就试图在PHP类中抽象出尽可能多的逻辑。我将所有数据库表的名称作为变量放在我的DBConnection类中。例如,当用户调用$db = new DBConnection();时,它会自动为所有表名创建变量,因此在我目前为止的所有查询中,我都有INSERT INTO $db->userTable (fields and constraints)或SELECT (fields) FROM $db->forumTable (constraints)这样的东西。然而,怎样才是抽象列名的好方法,因为它是非常通用的,所以我不会将列名硬编码到查询中?这样,如果列名之类的东西发生了变化,我就不必再去编辑大量的查询了。感谢您的任何意见!
发布于 2011-12-09 11:13:07
使用某种语言(可能是您自己选择的)编写一个数据库模型,如果您愿意,可以使用一种特定于领域的语言。使用该模型生成您的PHP和您希望在MySQL中提供的任何中间模型或API.
模型可以包括诸如“实体”名称(不一定是表)、属性及其类型(数字、文本、枚举、引用)等内容。
MySQL已经是一个非常技术性的实现,它不太容易操作。特定于域的语言将极大地帮助数据建模和数据一致性,因为您可以免费获得如此多的内容。您可以自由使用MySQL提供的所有详细信息: CHAR、VARCHAR、TEXT、MEDIUMTEXT、LONGTEXT、BLOB。对于真正通用的应用程序,您不会想要考虑它。
更新:你想‘抽象你的逻辑’。您应该从抽象数据模型开始。有一个模型,您可以将其转换为将构建数据库的MySQL查询。您可以使用相同的模型在PHP中生成API。您的模型知道有哪些实体(表)以及哪些属性和哪种类型,因此您可以在PHP中强制执行它们。
发布于 2011-12-09 11:21:36
Google Appengine有一个查询语言,他们有一个很好的query class实现。也许你可以遵循类似的结构。
语法看起来像这样,
class Song(db.Model):
title = db.StringProperty()
composer = db.StringProperty()
date = db.DateTimeProperty()
query = Song.all()
query.filter('title =', 'Imagine')https://stackoverflow.com/questions/8440563
复制相似问题