PHP Literal输出带?>在函数定义中

时间:2015-11-23 10:11:57

标签: php html function inline-code

在过去编写PHP代码时,我常常一直困扰着在打印,回声或类似调用中嵌入HTML代码的尴尬。这在某种程度上得到了缓解,因为能够通过关闭PHP标记并在输出后重新打开它来使字母输出部分代码,例如:

<?php /*DoSomeStuff*/ ?>
Some HTML code.
<?php /*SomeMorePHP*/ ?>

然而,我从未明白这是如何与功能相互作用的。例如,我不清楚是否写作:

<?php
function myFunction() {
?>
Some HTML
<?php
}
?>

生成一个函数,在被调用时将输出该HTML,如果函数将被解析为空但在解析过程中输出该HTML,或者两者都没有,或者这个结构是否完全是非法的?

我不愿意将我的所有结果都放在PHP的某个特定实例上,因为我不想相信它有效,而实际上它可能是未定义的行为或认为它不起作用而我可能只是有一个旧的或错误的PHP和我从未见过任何代码中使用的这种构造。

理想情况下,我正在寻找对文档或规范的某种引用,以便明确这一点。

2 个答案:

答案 0 :(得分:2)

我知道这并没有用很多参考文献回答你的问题,但是:这是有效的(PHP Docs),虽然看起来不太好,但在某些旧版本中这是常见的做法但是BIG框架。

你可以尝试一下,看看会发生什么:

/**
 * Outputs the entire contents of the (X)HTML page
 */
public function execute() {
    /**
     * some code
     */
    // Output HTML Page
    $this->html( 'headelement' );
    ?>
    <div id="mw-page-base" class="noprint"></div>
    <div id="mw-head-base" class="noprint"></div>
    <div id="content" class="mw-body" role="main">
        <a id="top"></a>

        <?php
    /**
     * some more code
     */
}

顺便说一下,我找到了一个例子,MediaWiki的默认皮肤(我会说他们知道他们在做什么)只使用你所描述的方法。

$ export NDK_PROJECT_PATH=/opt/umake/AndroidStudioProjects/Sipdroid/app/src/main
$ /opt/umake/android/android-ndk/ndk-build

请在此处查看完整代码:MediaWiki GitHub

答案 1 :(得分:1)

基本上它会像你期望的那样工作,这意味着这个HTML只会在函数调用时打印。

可能没有针对您的用例的文档,但它与条件表达式类似。

您可以询问以下代码是否存在类似问题:

<?php if ($expression == true): ?>
  HTML1
<?php else: ?>
  HTML2
<?php endif; ?>

PHP会打印两个HTML部分,还是仅根据条件打印一个部分? 那么,医生明确表示它的工作原理与预期的一样。 我认为我们可以说它的功能/方法是一样的,因为它只是一段代码&#34;。它在许多其他情况下使用相同的规则,如循环或swich

参考:http://php.net/manual/en/language.basic-syntax.phpmode.php示例#1