我正在编写一个简单的插件,它可以在用户登录和注销时运行。(我是PHP n00b,这纯粹是教育)
It参考$current_user (在函数中定义为全局)。这一切都正常运转。
除了,在我看到的所有代码片段中$current_user, 一些电话wp_get_current_user() 事先,有些人不这样做。
我的问题是。。。在访问$current\\u user之前,是否应该始终调用wp\\u get\\u current\\u user(),或者可以安全地假定已经调用了wp\\u get\\u current\\u user()(警告代码在WordPress管理面板中运行-因此用户必须登录)?
我问的原因是。。。调用已经调用的函数似乎效率低下(如果用户登录了,那么必须调用它,对吗?),但我们也不应该假设任何事情(如果出于某种奇怪的原因,$current\\u user的名称在将来的Core中发生了更改怎么办)。
当然,还有第三种选择只是突然出现在脑海中。。。测试是否已设置/定义$current\\u user,如果未设置/定义,请调用wp\\u get\\u current\\u user()。
TBH最后一种选择似乎是“效率vs鲁棒性”的最佳折衷方案,但我仍然很想知道人们认为哪种方法是最好的以及为什么。
最合适的回答,由SO网友:butlerblog 整理而成
是的,作为最佳实践,您应该致电wp_current_user()
因为你不能假设$current_user
已设置(或者如果对您要查找的用户正确设置)。
当然,还有第三种选择只是突然出现在脑海中。。。测试是否已设置/定义$current\\u user,如果未设置/定义,请调用wp\\u get\\u current\\u user()。
事实上,这种情况已经发生了。wp_get_current_user()
只是私有方法的包装器_wp_get_current_user()
, 所以你可以看看这个函数,看看它是做什么的。它做的第一件事是检查$current_user
存在并已填充,如果是,则返回$current_user
.
解决您的效率/低效问题,因为该方法已经在检查$current_user
如果加载了,那么如果您执行此操作,然后运行wp_get_current_user()
因为那是不必要的步骤。