我强烈建议不要这样做not 加快速度,你的用法不正确。
WordPress already caches these things in the object cache/memory so it doesn\'t have to fetch it multiple times in the same request, you don\'t need to store the result and reuse, WP does that already out of the box.
很可能您的代码正在运行slower由于这一微观优化,而不是更快!
如何使用全局变量当您尝试使用全局变量时,必须指定global
关键字优先。您在定义其值时在此处指定了它,但在该范围之外,需要将其重新声明为全局范围变量。
e、 g.英寸functions.php
:
function test() {
global $hello;
$hello = \'hello world\';
}
add_action( \'after_setup_theme\', \'test\' );
在里面
single.php
, 这将不起作用:
echo $hello;
因为
$hello
未定义。然而,这
will 工作:
global $hello;
echo $hello;
当然你两个都不应该做。
WordPress already attempts to cache these things in the object cache.
全局变量的缺点和危险
这样做不会增加速度(速度可能会略有下降),只会增加复杂性,需要键入大量不必要的全局声明。
您还将遇到其他问题:
无法为每次运行时表现不同的代码编写测试的代码在共享名称空间中的变量名冲突导致忘记声明意外错误global
您的代码数据存储完全缺乏结构,还有更多的结构,您应该使用什么来代替您最好使用结构化数据,例如对象或依赖项注入,或者在您的情况下,使用一组函数。
静态变量
静态变量并不好,但可以认为它们是全局变量中稍微不那么邪恶的近亲。静态变量之于全局变量,就像泥面包之于氰化物。
例如,这里有一种通过静态变量执行类似操作的方法,例如:。
function awful_function( $new_hello=\'\' ) {
static $hello;
if ( !empty( $new_hello ) ) {
$hello = $new_hello;
}
return $hello;
}
awful_function( \'telephone\' );
echo awful_function(); // prints telephone
awful_function( \'banana\');
echo awful_function(); // prints banana
单例
单例与静态变量类似,只是类包含一个带有该类实例的静态变量。它们和全局变量一样糟糕,只是语法不同。避开他们。
WP\\u Cache,您尝试过但WP已经做到了这一点如果您真的想通过将数据存储到某个地方以供重用来节省时间,请考虑使用WP_Cache
系统与wp_cache_get
等等,例如。
$value = wp_cache_get( \'hello\' );
if ( false === $value ) {
// not found, set the default value
wp_cache_set( \'hello\', \'world\' );
}
现在,WordPress将在请求的整个生命周期内缓存该值,并显示在调试工具中,如果您有对象缓存,它将在多个请求之间持久存在
旁注1:我要指出的是,有些人试图跨请求将数据持久化到全局变量中,却没有意识到这不是PHP的工作方式。与节点应用程序不同,每个请求都会加载应用程序的一个新副本,该副本在请求完成后会消失。因此,在一个请求上设置的全局变量不会保留到下一个请求
旁注2:从更新后的问题来看,您的全局变量没有给您带来任何性能提升。您应该在需要的时候生成HTML,它的运行速度也一样快,甚至可能快一点。这是微观优化。