Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有?>;的PHP文本输出;在函数定义中_Php_Html_Function_Inline Code - Fatal编程技术网

带有?>;的PHP文本输出;在函数定义中

带有?>;的PHP文本输出;在函数定义中,php,html,function,inline-code,Php,Html,Function,Inline Code,在过去编写PHP代码时,我经常会感到尴尬,因为我不得不将HTML代码嵌套在打印、回显或类似的调用中。通过关闭PHP标记并在输出后重新打开它,可以使部分代码真正输出,这在一定程度上缓解了这种情况,例如: <?php /*DoSomeStuff*/ ?> Some HTML code. <?php /*SomeMorePHP*/ ?> 一些HTML代码。 然而,我一直不清楚这个函数是如何相互作用的。例如,我不清楚是否写: <?php function myFunc

在过去编写PHP代码时,我经常会感到尴尬,因为我不得不将HTML代码嵌套在打印、回显或类似的调用中。通过关闭PHP标记并在输出后重新打开它,可以使部分代码真正输出,这在一定程度上缓解了这种情况,例如:

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

一些HTML代码。
然而,我一直不清楚这个函数是如何相互作用的。例如,我不清楚是否写:

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

一些HTML
将生成一个函数,该函数在被调用时将输出该HTML,如果该函数将被解析为空,但在解析过程中输出该HTML,或者两者都不输出,或者如果该构造完全非法

我不愿意将我的所有结果都建立在某个特定的PHP实例上,因为我不希望认为它可以工作,而实际上它可能是未定义的行为,或者认为它不工作,而我可能只是有一个旧的或有缺陷的PHP,我从来没有在任何代码中使用过这种构造


理想情况下,我正在寻找某种文档或规范的参考资料,以澄清这一问题。

我知道这并不是用大量参考资料来准确回答您的问题,但是:这是有效的(),虽然看起来不太好,但在一些旧的但大型框架中,这是一种常见的做法

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

function htmlOut() {
    ?>
    Some HTML output
    <?php
}


htmlOut();
函数htmlOut(){
?>
一些HTML输出

基本上,它将按您预期的方式工作,这意味着此HTML将仅在函数调用时打印

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

您可以询问以下代码的类似问题:

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

HTML1
HTML2
PHP会打印两个HTML部分,还是只打印一个取决于条件? 嗯,医生说得很清楚,它的工作原理与预期相符。 我想我们可以说函数/方法也是一样的,因为它只是“一块代码”。在许多其他情况下,如循环或开关,它使用相同的规则


参考:示例#1

为什么不运行代码看看会发生什么,有一个超级秘密但完美的文档名为php.net,您可能需要参考:p这可能会有所帮助-。现代最佳实践建议您不应该在php中嵌入html代码,或者反过来。@deeznutz如我所说,我不愿意依赖于这样的运行me代码,它可能工作,但只是由于一个错误或特定版本,但实际上没有很好的定义。或者可能不工作,因为一个特定的QAR版本或错误,而不是很好的代码。我看过php.net,但没有找到任何关于这方面的内容。@Calimero我完全理解那里的想法。但在许多情况下,这不是一个简单的选择,尤其是在处理已经存在较大结构问题的项目时。我经常尝试在不破坏整个代码结构的情况下尽可能使事情整洁。感谢您找到一个使用此结构的常用脚本示例。这给了我很大的信心,它不可能只是一个实现错误。
<?php if ($expression == true): ?>
  HTML1
<?php else: ?>
  HTML2
<?php endif; ?>