【问题标题】:In wordpress, where does function_exists(), look to decide whether a function exists?在wordpress中,function_exists()在哪里寻找判断一个函数是否存在?
【发布时间】:2013-12-06 14:22:44
【问题描述】:

背景:我最初的问题是在hereWordpress StackExchange 上发布的 但由于它与 PHP 的相关性,它可能更适合这些受众。

问题:在 Wordpress 主题开发中使用function_exists() 时,该函数在哪里查看以确定函数是否存在?

例如,如果我在 header.php 中有 if ( function_exists( 'get_custom_header' ),该函数将在哪里查找 get_custom_header?

特别说明:据我了解,该函数指的是由解析器到目前为止找到的所有函数组成的哈希表,包括任何includes,参见this 发帖。

【问题讨论】:

  • 它当然会查看您的complete 源代码,其中包括所有包含的文件。哦,还有那些 PHP 默认函数。

标签: php wordpress wordpress-theming


【解决方案1】:

在所有已加载文件的 PHP 查找表中。基本上,如果您打开并解析一个文件,PHP 本身就知道其中的内容,而这就是函数用来检查函数是否存在的内容。

显然这也适用于原生函数。

编辑:是的,您链接的帖子是 100% 正确的。不过,您想用这些信息做什么?

【讨论】:

  • 谢谢。如果您在此处查看我的评论 wordpress.stackexchange.com/a/125447/41479 ,我仍然对 if (function_exists('get_custom_header')) 的工作方式感到困惑。我知道代码正确地检查并找到了get_custom_header,但我知道它存在于functions.php中,我不知道php解析器在functions.php中的表现如何,因为我没有包含它,也没有包含它是否在 header.php 中。
  • Wordpress 做了一大堆引导和自动加载。我想在主题引导期间的某个地方它会加载你的 functions.php 文件
  • wp-settings.php 中的第 286 行是加载到文件中的代码块。
  • 你的意思是do_action( 'setup_theme' ); 吗?我只是想确保以防万一由于 Wordpress 版本而存在差异。另外,非常感谢您的帮助。请问您是如何解决这个问题的?
  • 我认为在 setup_theme 中,是的,但我不是 100% 确定。我对包含 functions.php 的include 进行了项目范围的搜索
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-02
  • 1970-01-01
  • 1970-01-01
  • 2013-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多