包含HTML inisde部分和内部函数

时间:2016-08-30 06:44:38

标签: php function include

我正在为Word Press创建一些小部件,但这可能是标准的PHP问题,因为它与某些MVC模式有关。我有一些HTML需要在页面输出,但HTML现在我在函数内部,我想将它转移到部分,因为将来可能有更多的HTML,如果我这样做它将是很多意大利面条代码。这就是我现在所拥有的

class motractrucks extends WP_Widget{
  function widget($args, $instance, $defaults){
  echo '<p>'.$value1.'<p>'; 
  echo '<p>'.$value2.'<p>'; 
  echo '<p>'.$value3.'<p>'; 
  echo '<p>'.$value4.'<p>'; 
  echo '<p>'.$value5.'<p>'; 
  echo '<p>'.$value6.'<p>';
 }
}

这只是一个简单的例子,我已经修改了函数,你可以理解我需要的东西,我想做的事情,但是如何在该视图中的函数内部传递值?

class motractrucks extends WP_Widget{
  function widget($args, $instance, $defaults){
   include 'partials/userValues.php';
 }
}

并将所有值传递给该部分,任何好主意和最佳代码实践都会很好。

1 个答案:

答案 0 :(得分:0)

这个问题与PHP有关的部分是variable scope。 PHP函数具有本地范围。因此,默认情况下,这些函数中使用的变量被视为局部变量。除非您通过global关键字将全局范围中的变量明确导入到函数的本地范围内,否则它是本地的。在您的示例中,这些变量都是未定义的。

此外,在函数中使用echo从来不被认为是一种好习惯,但我不能专门针对代码的WordPress方面,因为我对WordPress并不熟悉。

函数将输入作为参数,将值作为输出返回。这通常是您认为良好练习的原因。

function foo($var1, $var2, $var3) {
    return <<<HTML
        <p>$var1</p>
        <p>$var2</p>
        <p>$var3</p>
HTML;
}

至于包含用于模板的文件,这在PHP中通常很好。当您在函数内部执行这些操作时,包含其范围变得更加容易,因为include会考虑范围。

让我们说你的partials/userValues.php文件看起来像这样......

    <p><?=$var1?></p>
    <p><?=$var2?></p>
    <p><?=$var3?></p>

如果您想从功能中包含它,您可以。您还可以使用带有ob_start()ob_get_clean()等函数的输出缓冲将输出写入缓冲区并从函数返回,而不是直接打印到标准输出。

function foo($var1, $var2, $var3) {
    ob_start(); // start the output buffer first
    include 'partials/userValues.php'; // include inherits the variable scope
    $output = ob_get_clean(); // close the buffer and store it in $output
    return $output; // return it to the caller
}