摆脱存储过程是一个很好的想法,你的三个要点都很关键。
另一方面,php不容易实现结构化包装。我不是一个PHP瘾君子(更像一个C/JavaGee),但是解决这个问题的最佳方法是单独的数据库/域/访问/业务层。简而言之:
-
在底部:数据库。只有桌子,亲戚,就这样。
-
然后需要映射:表示表的简单对象。通常每个表一个对象。
-
接下来,需要处理这些对象的方法。大多数表都需要一个“get all”、“get by id”和“save”方法。理想情况下,这些模块会进入一个单独的模块,因此可以在不需要更改映射的情况下进行开发。
-
最后,您需要您的业务逻辑,它可以进入一个单独的层或在您的应用程序中。
这是一个简单的概述。我不知道你的解决方案是否是这个意思,但通常是这样的:分离关注点。如果更改数据库,只需更改映射。如果需要不同的结果集,则只需更改访问层。
可以帮助您完成这个过程的工具是hibernate(但是您需要javabridge),它是
这个
ORM工具的选择,但有一点陡峭的学习曲线。对于php来说,doctrine似乎可以为您做很多事情。其他工具也存在。理想情况下,工具允许往返工程:如果您更改了某些内容,您将再次运行该工具(或更改某些内容),并且不会中断应用程序。