2016-08-30 102 views
0

我正在为Word Press创建一些小部件,但也许这是标准的PHP问题,因为它与某些MVC模式有关。我有一些需要在页面上输出的HTML,但是现在我在函数内部使用HTML,我想将它转换为部分HTML,因为将来可能会有更多的HTML,如果我使它成为这样将会有很多的意大利面条code.Here是我现在包含HTML inisde部分和内部函数

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'; 
} 
} 

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

回答

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 
}