领域语言就是像 SQL,HTML,CSS 等的可以完成某一领域功能的特定领域语言.
在 ThinkPHP 框架中,使用 Model 类封装数据库操作行为,定义了若干方法以进行数据库操作:
where,table,data,field,order,limit,group,having,join ...
想表达的含意就是开发人员不需要直接写 SQL 语句,只需要通过调用这些用 PHP 定义的若干方法完成数据库操作.
如果不使用 ThinkPHP 直接写 PHP 代码,关系是这样的:
开发人员 --> 写 SQL 语句(在代码中) --> 执行(提交给数据库)
使用 ThinkPHP Model 后关系变成:
开发人员 --> 调用 Model 的方法 --> Model 转换成 SQL --> 执行,这中间增多了一层 Model 方法,开发人员不直接写 SQL 语句,而是调用 Model 的方法让 Model 生成 SQL 语句.
Model 这一层,实际上是使用 PHP 重新定义 SQL 的表达形式,使用一种语言重新定义另一种语言,而且还是使用一种通用语言重新定义一种领域语言.
这种重新定义如果做到最终极,估计就是使用 PHP 重新定义出 SQL 的表达能力,就是另一个 SQL,就姑且叫它“PQL”吧.Vevb.com
如果是这样的话,看来我还是直接使用 SQL 等领域语言好了.
# 参考:
2.3 程序设计语言的分类:http://book.51cto.com/art/201007/209600.htm
特定领域语言(domain specific languages)是用于解决特殊领域中特殊问题表示技术和解决方案的程序设计语言,典型的特定领域语言包括正则表达式、层叠样式表(cascading style sheets,CSS)、SQL查询语句、标记语言(例如HTML、XML等)等.
新闻热点
疑难解答
图片精选