为什么WordPress有私人功能?

时间:2016-11-17 作者:Ranuka

注:我指的是_wp_get_current_user();wp_get_current_user().

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

此函数的访问被标记为私有。这意味着它不适用于插件或主题开发人员,仅用于其他核心功能。为了完整起见,这里列出了它。请改用wp\\u get\\u current\\u user()。

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

3 个回复
最合适的回答,由SO网友:Rarst 整理而成

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

但很多WP代码都是古老的程序性代码。没有任何技术上的方法可以实现私人功能。

这些在语义上是私有的,也就是说WP不希望您使用它们,但它实际上不能禁止您使用它们。长期以来,“私有”WP API在实践中被扩展积极使用。

宣布某事为私有的原因因情况而异。在这个特定的案例中,您提出的原因似乎是“公共”版本是可插入的,因此将实现移动到“私有”版本可以更容易地/以更少的问题替换原始版本。

SO网友:Roy

简而言之,开发人员会选择将这些内部功能“私有化”,因为他们不想为它们提供公共支持。例如,它们不能保证任何函数参数在位置上保持一致,甚至在更新之间保持存在。

并不是说这实际上阻止了很多开发人员使用“私有”函数。。。

SO网友:prosti

起初我并不十分清楚,所以我需要更深入地了解。如果你拿伟大的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代码,但这一过程不会在一夜之间完成。

相关推荐

如何在Functions.php中链接style.css

我是WordPress的新手;我刚开始学习WordPress。我想把风格联系起来。函数中的css。php,但我无法解决这里可能存在的问题。谁能给我指出正确的方向吗?指数php<?php get_header(); ?> <?php if ( have_posts() ) { while ( have_posts() ) { the_post();