8 后记

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
写完第3集以后,就开始写第四集,而第四集里面开始写的就是这个field validation,记录我开发这个模块的历程,开始觉得很有必要,后来收到很多人的反馈,希望我多写一点案例形式的,突然间不知道该写什么了,中间又发生了一些事情,到底要不要继续写下去,写下去的话,写什么?一直困扰着我,我不可能让所有的人满意的,不可能你需要一个相册网站,我就恰好写一个相册的例子给你。只需要我写的东西,对那些认真读过的人有所帮助,就可以了,不会去试图满足所有人的胃口,可能这也是一个进步。

Drupal版本: 

7.5 对字段验证的进一步思考

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
对字段验证,还有一些思考,关于token的思考,token模块本身不支持字段token,这在Drupal7是一个很大的功能缺失,但是一直没有人解决,我注意到这个问题,是因为我想为Field validation添加更多的token支持的功能时,比如验证一个数字的大小时,我希望这个字段的值大于另一个字段时,这个时候如果有字段token的支持,验证器就会非常的灵活。在第三方模块里面,有两个模块提供的token支持,一个就是token模块,一个是entity_token模块。为了更好的支持字段token,我编写了一个模块http://drupal.org/project/compound_token,但是很遗憾,这个模块的关注度一直很小,而且它与token模块有冲突,我向Drupal核心提交了一个补丁,解决这个冲突,但是我的这种方式,遭到了核心维护者,也是token模块的维护者的反对。其实compound_token更接近于entity_token。有时候,我们有很多好的想法,但是这些想法,在别人看来,非常的幼稚,自己会为得不到承认、认可而感到异常的失落。

Drupal版本: 

7.4什么钩子可以转换为插件

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
什么钩子可以转换为插件,通常module_invoke实现的钩子,都可以转换为插件,module_invoke_all的钩子,部分可以转换为这样的插件,部分不可以。我写出2.0-beta1的时候,Drupal8核心还没有引入插件系统的,大概又过来3个月左右,插件机制进入了Drupal8的内核,Drupal核心里面的区块、图片样式、RSS聚合器模块里面的相关钩子,都转换成为了插件的形式。

Drupal版本: 

7.2插件方式的好处

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
插件的方式,就能很好的解决这个缓加载的问题,Drupal在默认的情况下,是不会去加载插件的,只有当需要的时候,才去加载相应的插件。在field validation 1.x里面,我们也拆分成了多个文件,比如field_validation.validators.inc,field_validation.rules.inc,我们把所有的验证器都放到了field_validation.validators.inc中,很多人以为,这样也实现了缓加载,其实不然,在field_validation.module文件里面,代码是这样写的:
include_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'field_validation') . '/' . 'field_validation.validators.inc';

Drupal版本: 

7.1hook_hook_info

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
Drupal7对钩子函数的缓加载,还是有改进的,Drupal7里面是这样改进的,通过hook_hook_info,我们就可以把多个钩子函数划分成一组,比如组名叫做rules,那么我们就可以把rules相关的钩子实现,都放到mymodule.rules.inc文件中去。这样当,调用rules相关的钩子时,才会加载mymodule.rules.inc文件。不过,不是很多程序员都了解这个机制,就是很多资深的Drupal开发者,也不了解这个机制。比如,Ubercart里面就没有类似的实现,不过我在uc_ctools模块里面,帮助Ubercart实现hook_hook_info钩子。我们来看看我的实现:

Drupal版本: 

7深入掌握了插件机制

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
对插件机制的理解,有了更深的认识。以前总觉得,钩子机制,是Drupal核心最本质,最具特色的一个机制,Drupal之所有这么灵活,就是它本身所待的这种钩子机制。其它模块,如果想与Drupal系统交互,只需要实现相应的钩子就可以了。但是钩子机制本身,也是有很大的局限性的,特别是随着Drupal应用的领域越来越广,这种局限性,就越来越明显的暴露出来。钩子机制有哪些局限性呢?所有的钩子实现都需要放到module文件里面,我们知道,每一个页面,都会加载所有的module文件,把所有的钩子代码都放到module文件里面,

Drupal版本: 

6代码更加规范

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
首先一个进步就是编码规范,为了让自己的模块,更易于让人接受,自己在后面,使用Coder模块,按照它所给出提示,修正了几乎所有的代码格式问题。问题最多的两个地方,一个就是我把tab键设置成两个空格了,后来手工的一个一个的把tab转为了空格,这样在其它编辑器/IDE下面也是格式良好的;另一个常见的问题,就是控制语句括号的两边要有空格,以前我总是这样写:

Drupal版本: 

5 心得体会

​作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
通过维护一个这样逐渐流行的社区模块,自己在技术上进步了很多。

Drupal版本: 

页面

关注我们的微信

关注我们,体验一下Drupal微信(Wechat)模块的最新进展

Think in Drupal 官方微信 亚艾元官方微信

 

Subscribe to Think in Drupal RSS