我正在使用 PHP create_function 创建一个 Lamba 风格的函数,其内容由 heredoc 风格的字符串定义。一切都很好,直到我将代码移至 Hostgator 帐户。Hostgator 环境的某些原因导致该功能完全失败。
看起来 heredoc 工作正常,并且 create_function 似乎正在执行。但是当函数本身被调用时,它会抛出大量错误,声称每个局部变量都是未定义的!我很困惑!有人见过这个吗?这是代码:
$func_code = <<<EOT
extract( shortcode_atts( array('style' => '','class' => '', 'id' => '', 'gutter' => 'm'), $atts ) );
$col_and_gutter = isset($gutter) ? 'needle-' . $gutter : 'needle-m';
switch ($gutter) {
case 'ew': $gutter = 'col-extra-wide-gutter'; break;
case 'w': $gutter = 'col-wide-gutter'; break;
case 'm': $gutter = 'col-med-gutter'; break;
case 'n': $gutter = 'col-narrow-gutter'; break;
case 'none': $gutter = 'col-no-gutter'; break;
}
if ($id != '') $id = 'id="' . $id . '"';
if ($style != '') $style = 'style="' . $style . '"';
$returnval = '<div ' . $id . ' ' . $style . ' class="col-responsive ' . $col_and_gutter . " " . $gutter . " " . $class . '">';
$returnval .= '<div class="g1"><div class="g2"><div class="g3">' . do_shortcode($content) . '</div></div></div>';
$returnval .= '</div>';
return $returnval;
EOT;
$func_code = str_replace('needle', $shortcode, $func_code);
$func_handle = create_function('$atts,$content', $func_code);
add_shortcode($shortcode, $func_handle);
add_shortcode($shortcode . '-n', $func_handle);
add_shortcode($shortcode . '-nn', $func_handle);
这是错误输出:
注意:未定义的变量:/home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的 atts 在第 129 行
注意:未定义变量:第 129 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的 col_and_gutter
注意:未定义变量:第 129 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的 gutter
注意:未定义变量:第 131 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的 gutter
注意:未定义的变量:第 132 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的 gutter
注意:未定义的变量:第 133 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的 gutter
注意:未定义的变量:第 134 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的 gutter
注意:未定义变量:第 135 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的 gutter
注意:未定义变量:第 136 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的 gutter
注意:未定义的变量:第 139 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的 gutter
注意:未定义的变量:第 139 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的 id
注意:未定义的变量:第 139 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的 id
注意:未定义的变量:第 140 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的 id
注意:未定义变量:第 140 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的样式
注意:未定义变量:第 140 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的样式
注意:未定义的变量:第 141 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的样式
注意:未定义变量:第 141 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的 returnval
注意:未定义变量:第 141 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的 id
注意:未定义的变量:第 141 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的样式
注意:未定义变量:第 141 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的 col_and_gutter
注意:未定义变量:第 141 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的 gutter
注意:未定义变量:第 142 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的类
注意:未定义的变量:第 142 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的 returnval
注意:未定义变量:第 143 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的内容
注意:未定义变量:第 144 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的 returnval
注意:未定义的变量:第 145 行 /home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php 中的 returnval
解析错误:语法错误,/home3/ade207/public_html/wp-content/themes/armstrongparent/lib/shortcodes.php(148) 中的意外')':第 1 行运行时创建的函数