跳转到主要内容

和“
Drupal8
”有关的内容:

渲染数组被渲染的时候,为了提高性能,会将渲染结果保存到缓存中,这样就避免了重复渲染
并且每个子元素的渲染结果都可以被独立缓存,如此一来子元素也可以避免重复渲染

不过缓存中保存的渲染数组是经过简化的,渲染缓存默认只缓存以下内容,这样经简化的数组叫做“CacheableRenderArray”:(见辅助内容区)…

总结注意:

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

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

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

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

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

系统默认有两个模块定义的钩子信息函数:

system_hook_info 位于:\core\modules\system\ system.module
views_hook_info 位于\core\modules\views\ views.module

加载模块的其他文件:

\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…