跳转到主要内容

和“
Drupal8
”有关的内容:

占位渲染缓存:

在drupal实际的使用中,渲染缓存采用的是占位渲染缓存PlaceholderingRenderCache它扩充了RenderCache的功能
我们知道渲染占位符的目的就是将系统不适合缓存的内容独立出来,单独渲染,结果并不会缓存

下面来看看drupal具体是怎么实现占位符机制的:

要使用占位符机制的内容都是缓存不划算的,在正常的渲染流程中将对这部分内容的渲染独立出来,在最后进行
为此系统给渲染数组定义了一个叫做延迟构建的键名:$elements['#lazy_builder'],它的值是一个只有两个元素的数组…

drupal使用渲染占位符机制的目的是为了提高系统性能,具体来讲就是提高缓存利用率和效率

具体解决以下问题:
1:有时候页面是一模一样的,仅仅某一元素不一样,比如一个页面仅显示的用户名不一样,如果有一万的用户岂不是要在缓存中保存一万份?这是不划算的,也不合理,这种现象叫做上下文基数过大
2:…

总结注意:

占位内容由回调产生,所以运用占位符机制时,#lazy_builder必须存在
设置#lazy_builder时如果存在#create_placeholder其值为false,将不会产生占位符,而是直接渲染,这常用于根渲染
#…

加载模块的其他文件:

\Drupal::moduleHandler()->loadInclude($module, $type, $name = NULL)
加载模块$module主目录下文件名为$name扩展名为$type的文件,模块必须是开启的,文件名为空则用模块名代替,…

模块处理器:

模块处理器是容器中的一个服务,服务名为“module_handler”,在任何地方均可以通过\Drupal::moduleHandler()得到,它负责保存系统开启的模块信息、加载模块的函数、执行钩子等,在系统中非常多的地方都用到了它,可以说它是系统和模块、模块和模块之间的重要桥梁之一…

hook_info.bin:钩子信息函数返回的合并结果,键名为钩子名,键值为一个数组,group代表该钩子实现还可以存放在$module.$group.inc文件中

Array ( [token_info] =>…
模块怎么定义一个钩子名呢?

比如模块名叫“yunke”,要定义一个钩子(名)叫做“sendMail”那么在模块的主目录中建立一个名为“yunke.api.php”的文件,里面定义一个样板函数叫做:hook_sendMail(...),加上注释,说明在yunke这个模块中怎么运用这个钩子的,…

附件:列出默认安装中钩子的实现

在缓存中保存了钩子的默认实现和钩子信息:
module_implements.bin :钩子的实现信息 键名为钩子名,键值为一个数组,该数组键名为实现了这个钩子的模块名,对应值为位置$group信息,如果没有$group则为false…

钩子:

如果是开发新手可能对这个慨念陌生而好奇,许多工作多年的工程师可能对它也缺乏深度理解,不止是在php中,它其实是软件工程中的重要慨念,什么意思呢?为什么要叫做钩子?既然叫做钩子直觉的就会联想到钩什么?怎么钩?简单而直接的回答就是在软件运行的某时刻去钩起一段代码来执行,这个“钩起”也可以称为调用…