欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Drupal开发者模块devel中的双胞胎函数dpm()和dsm()有什么不同

shiping1 的头像


本人在template.php中使用 发现 dpm()的作用和echo dsm()打印变量时作用一样
如果有时dpm()感觉不好的话,就用echo dsm()吧

Drupal开发者模块devel中的双胞胎函数dpm()和dsm()有什么不同

作者:老梁 日期:2012年9月26日

 

Drupal的devel模块提供的两个函数dpm()和dsm()都用于在页面的消息区域打印并调试Drupal变量信息。那么它们有什么不同呢?下面我来介绍一下。

dsm()函数命名的起源

dsm()函数的名字是drupal set message的缩写。由于dsm()函数内部调用了Drupal内核中的drupal_set_message()函数,用于在页面的消息区域执行打印任务。所以顺理成章的起名为dsm()。

发现问题

随后,Drupal开发者们发现了问题:drupal set message所表达的语义含混不清,把打印这个动作用set这个动词进行描述,真的是一件很糟糕的事情。

解决问题

于是Drupal开发者们使用dpm()函数来代替dsm()函数,dpm是drupal print message的缩写,同时dpm中的p也可以解释为print_r。呵呵,真的是两全其美,不是吗?

看看dsm()函数的代码,就一切都明白了。

位于Drupal devel模块devel.module文件中的第1719行。

1
2
3
function dsm($input, $name = NULL) {
  return dpm($input, $name);
}

使用原则

建议大家总是使用dpm()函数。因为dsm()函数只是考虑到兼容性因素而保留下来的历史遗留函数,所以就没有必要在新项目中使用它了。

来自 http://mydrupal.org/drupal%E5%BC%80%E5%8F%91%E8%80%85%E6%A8%A1%E5%9D%97devel%E4%B8%AD%E7%9A%84%E5%8F...

普通分类: