我承认这个问题会有点含糊,但我会尝试通过几个例子来解释我想要完成的事情。我有一些 PHP 代码可以从 MySQL 数据库加载一堆变量,包含一些声明、一些快速输出 HTML 代码的函数等。但是我很乐意在将任何内容发送到客户端之前完成所有这些工作。
我也是这样的:
<?php
include("somefile.inc");
function bla()
{
...
}
if (fails)
echo "Error: ...<br />";
?>
<!DOCTYPE>
<html>
<head>
<script>
...
<?php echo $someString; ?>
...
</script>
</head>
<body>
...
</body>
</html>
一切都很好,直到出现错误。回显不会显示在浏览器中,因为它在所有 HTML 之前...所以我修改了:
<!DOCTYPE>
<html>
<head>
<script>
...
<?php echo $someString; ?>
...
</script>
</head>
<body>
<div class="error_block">
<?php
include("somefile.inc");
function bla()
{
...
}
if (fails)
echo "Error: ...<br />";
?>
</div>
...
</body>
</html>
现在我真的可以看到错误了,这很好。但现在问题出现了,在标题或脚本中,我无法访问稍后将在新创建的 error_block 中加载的变量。
我真的不喜欢将 error_clock 中的代码拆分到 HTML 文档之上的一些代码和 error_block 中的一些代码。而且我也不想使用 PHP 的 die() 函数,它会突然结束执行。
任何人都可以在这个问题上给出他们的 2 美分吗?谢谢。
最佳答案
如果您正在寻找替代解决方案,我为您准备了一个。我喜欢做的是将逻辑放在 DOCTYPE
if(error) { $error = "Please do something" }
然后,在文档中我有一个 div 只是为了错误(感谢@Dave 的输入)
<?php echo $error != '' ? '<div id="error">' . $error . '</div>' : ''; ?>
如果没有错误(意味着 $error
是空的),这个 div 将不会出现,并且它使您可以更轻松地按照您喜欢的方式设置错误消息的样式
#error { color:red; }
如果您想要花哨一些,可以使用一些 jQuery 来隐藏/显示 div,这样错误就不会一直存在。
$('#error').show().delay(7000).fadeOut();
关于php - 最佳实践 : where to put the PHP code?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6874169/