問題描述
注意:我在說_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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。