ans*_*ung 3 php optimization hook drupal drupal-6
Drupal是否解析(和/或运行)与当前用户加载的内容无关的钩子?
例如,假设我foo安装了一个模块并使用以下钩子激活:
<?php
// .. stuff ...
function foo_menu() {
$items = array();
$items['foo/show'] = array(
'title' => t('Foo!'),
'page callback' => 'foo_display_all',
'description' => 'All our foo are belong to you',
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
function foo_display_all() {
// About 100 lines of code
}
// ... stuff ...
Run Code Online (Sandbox Code Playgroud)
Drupal会为未列出的页面解析(从而影响加载时间)foo_menu吗?换句话说,foo_display_all影响www.example.com/bar加载的长度和复杂程度是多少?
有可能在这里遇到两个不同的问题,我会说我很感激Drupal如何以及为什么解析的解释(或链接到解释),而不是是/否答案.
hook_menu用于告诉drupal在特定URL上做什么,因此缓存结果.
Drupal只会执行钩子本身的内容而不是它们所在文件的整个内容.所以当在上面的例子中调用钩子菜单时,将运行foo_menu()函数.您可以在Hooks API上查看介绍文本
编辑:为了让PHP执行该功能,它需要包含它所在的文件.所以当Drupal想要执行一个钩子时,PHP需要解析该文件中的代码.这就是PHP的设计方式,因此与Drupal没什么关系.
这也是许多模块生成大量inc文件的原因,以限制在触发钩子时需要解析的代码量.