2

推奨されるアプローチはどれですか?

インクルードの使用:

//サブルーチン.php

echo 'hello '.$a;

// Usage.php

$a = 'foo';
include 'subroutine.php';

関数の使用:

//サブルーチン.php

function subroutine ($a)
{
    echo 'hello '.$a
}

// Usage.php

include 'subroutine.php';
$a = 'foo';
subroutine($a);

技術的には機能し、たとえばASPとは異なり、PHPには「サブルーチン」がないためです。サブルーチンをエミュレートする最良の方法は何ですか?

4

3 に答える 3

5

この目的には、関数の方が適しています。インクルードは、テンプレート作成や、コントローラーがビューを呼び出すときに広く使用されます。

ただし、関数は連結された文字列をエコーし​​ないようにする必要があります。それを返す必要があります。

$a = "foo";
echo subroutine($a);

function subroutine($a) { return "hello " . $a; }

これにより、コードがテスト可能になります。

于 2012-11-16T21:18:13.990 に答える
1

文脈にもよるでしょうね。最初の例は、ビューをコードに含めるMVCと同様のことを行う場合に優先することです。しかし、2番目の例は、プログラムフローで関数呼び出しを確認できるため、より明確に感じられます。

この特定の例では、何が起こっているのかがより明確であるため、オプション2を優先することをお勧めします。

ただし、PHPにはASPと同じようにサブルーチンがありません。ASPには、データを返す関数と返さないサブルーチンがあります。PHPには、両方として機能できる関数しかありません。最善の方法は、必要なすべての出力を(関数呼び出しとクラスを介して)保存し、必要な場所に「手動で」印刷することです。したがって、PHPで物事を行うための好ましい方法はです。

<?php
    function subroutine($var) {
        return 'Hello '.$var;
    }

    $a = 'foo';
    echo subroutine($a);
?>

ただし、原則として、includesには関数定義が含まれている必要があり、呼び出されたスクリプトには関数の呼び出しが含まれている必要があります。デバッグ時のプログラムフローを最もよく表しているため。

于 2012-11-16T21:17:17.953 に答える
0

コードによって異なりますが、ほとんどの場合、いくつかの関数を作成し、適切な関数を呼び出します:P。

于 2012-11-16T21:18:29.920 に答える