2016-08-30 10 views
0

Word Pressのウィジェットをいくつか作成していますが、多分これは標準のPHP質問です。私はページ上に出力する必要があるいくつかの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にスコープが考慮されるため、スコープを含む方が簡単になります。あなたができるあなたの関数からそれを含めたい場合は

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

...のは、あなたのpartials/userValues.phpファイルは次のようになりましょう。 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 
} 
関連する問題