2

推荐的方法是什么?

使用包括:

// subroutine.php

echo 'hello '.$a;

// 用法.php

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

使用功能:

// subroutine.php

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

// 用法.php

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

由于两者在技术上都有效,并且 PHP 中没有“子例程”,这与 ASP 不同。模拟子程序的最佳方法是什么?

4

3 回答 3

5

一个函数更适合这个目的。包含更广泛地用于模板或控制器调用视图时。

但是,您的函数不应回显连接的字符串。它应该返回它。

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

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

这使您的代码可测试。

于 2012-11-16T21:18:13.990 回答
1

这将取决于上下文,不是吗?如果您正在执行类似于 MVC 的操作,那么第一个示例将是首选,您将视图包含到代码中。但是第二个示例感觉更清晰,因为您可以看到程序流程中的函数调用。

在这个具体的例子中,我会说选项 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 回答