问题描述

注意:我在说_wp_get_current_user(); 不是 wp_get_current_user()

如果您检查功能_wp_get_current_user();,您可以看到以下语句:

This function』s access is marked private. This means it is not intended for use by plugin or theme developers, only in other core functions. It is listed here for completeness. Use wp_get_current_user() instead.

为什么 WordPress 有这些类型的私有功能?为什么 WordPress 不允许使用这些类型的 WordPress 插件或主题开发人员的功能?

最佳解决方案

代码不是公共 API 的一部分是很常见的做法。

但 WP 代码的大部分是古老的和程序性的。没有技术方法来做私人功能。

这些语义上是私有的,那就是 WP 不希望你使用它们,但实际上它不能禁止你。 “private” WP API 有很长的历史,在实践中正在通过扩展来积极使用。

宣布私人事务的原因因案件而异。在这种具体情况下,你提出的原因似乎是”public” 版本是可插拔的,所以移动实现到”private” 版本允许原件被更换更容易/更少的问题。

次佳解决方案

简而言之,开发人员将选择使这些内部函数’private’,因为他们不想为他们提供公共支持。例如,他们不保证任何函数参数在更新到更新时的位置或甚至是存在一致。

不是说这实际上阻止了很多开发人员使用’private’ 功能…

第三种解决方案

这到目前为止我并不清楚,所以我需要更深入地了解一下。如果你以 wp-includes/user.php 文件为例,您将不会在其中找到单一的 PHP 类定义。

File: /wp-includes/user.php
2452:  * @since 4.5.0
2453:  * @access private
2454:  *
2455:  * @see wp_get_current_user()
2456:  * @global WP_User $current_user Checks if the current user is set.
2457:  *
2458:  * @return WP_User Current WP_User instance.
2459:  */
2460: function _wp_get_current_user() {

但是您会发现我们感兴趣的_wp_get_current_user()功能。您看到的是 @access private 只是 PHP 文档生成器的提示。

这也表明这个函数在将来可能会成为一个类的私有函数。

私有函数的概念只有在您有 PHP 类的情况下才存在,而且这是使用 PHP 5 or later(因为 PHP 是面向对象的) 。这个概念叫做封装。

WordPress 通过引入课程逐渐改进了 PHP 代码,但这个过程不会在一个晚上发生。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。