以下是php文档的一部分,其中包含几个条件。第一个,如果真实,则将一个匿名函数存储在变量$the_image_styles
中,稍后成功调用几行。第二个,如果真实,则将一个匿名函数存储在变量$the_overlay_styles
中,该变量从未随后执行。
WordPress输出以下内容:调用未定义的函数the_overlay_styles()
在我看来,两个声明/调用之间没有区别,但显然情况并非如此。我错过了什么?
<?php
$banner = get_field('banner_image');
// Check for image
if ($banner) :
$xpos = get_field('banner_xpos');
$ypos = get_field('banner_ypos');
// Style string for background image
$the_image_styles = function() use ($banner, $xpos, $ypos){
echo "background-image:url({$banner['sizes']['large']}); background-position:{$xpos} {$ypos}";
};
// Check for overlay, for later use
$has_overlay = get_field('has_banner_overlay');
?>
<!-- Article header with banner -->
<header style="<?php $the_image_styles(); ?>"> <<-- This function call works
<?php
if ($has_overlay) :
$banner_colour = get_field('banner_colour');
$banner_opacity = number_format( get_field('banner_opacity') / 100, 2 );
// Style string for imageoverlay
$the_overlay_styles = function() use ($banner_colour, $banner_opacity){
echo "background:{$banner_colour}; opacity:{$banner_opacity}";
};
?>
<div style="<?php the_overlay_styles(); ?>"></div> <<-- This call never executes
<?php endif; ?>
<h1><?php the_title(); ?></h1>
</header>
<?php else: ?>
答案 0 :(得分:1)
您正在定义引用闭包的$the_overlay_styles variable
。要打电话给你,你做$the_overlay_styles();
。
但不要。只需将其定义为以正常函数开头:
function the_overlay_styles() {
你知道但是,甚至不这样做。只需在这里创建一个变量!更不用说了。
$the_overlay_styles = "background: $banner_colour; opacity: $banner_opacity";
现在,您可以在需要时echo $the_overlay_styles
。
答案 1 :(得分:0)
在这样的函数调用之前添加一个$
<div style="<?php $the_overlay_styles(); ?>"></div> <<-- This call never executes
函数声明是相同的,但函数调用是不同的。