最佳实践:PHP代码放在哪里?

时间:2011-07-29 13:49:20

标签: php html position

我承认这个问题有点模糊,但我会尝试通过几个例子来解释我想要完成的事情。我有一些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>

现在我实际上可以看到错误,这很好。但现在问题出现在标题或者scrips中,我无法访问稍后将在新创建的error_block中加载的变量。

我真的不喜欢将error_clock中的代码拆分为HTML文档上方的某些内容以及error_block中的某些代码。而且我也不想使用PHP的die()函数来完成执行。

任何人都可以在这个问题上给出2美分吗?感谢。

3 个答案:

答案 0 :(得分:5)

如果您正在寻找替代解决方案,我会为您准备一个解决方案。我喜欢做的是在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();

答案 1 :(得分:0)

如果您想使用错误消息(包括显示)进行一些后处理,您应该考虑使用try-catch块并生成异常。

答案 2 :(得分:-1)

经常被遗忘的是,PHP本质上是一种INLINE编程语言,这意味着它被设计为在服务器读取页面时由服务器处理,并且通过它设计为分成块。最近,OOP(面向对象编程)已经引入PHP,使其更加灵活。

所以有了这些信息,我会在这种情况下采用OOP路径,并执行以下操作:

<!DOCTYPE>
<?php
include("somefile.inc");
function bla()
{
    ...
}
function failureError($code){
    if(!empty($code)) ...
}
if ($a = $b) {
    code goes here 
} else {
    $code = 'error123';
}
?>
<html>
    <head>
        <script>
            ...
            <?php failed($code); ?>
            ...
        </script>
    </head>
    <body>
        ...
    </body>
</html>

通过使用函数编写,您可以缩短开发时间,并将大部分代码分组,只需在需要时调用所需的代码即可。

声明错误类/函数以帮助服务器响应时间的另一种方法是执行以下操作:

if ($a = $b) {
    code goes here 
} else {
    include("errorStuff.php");
}

这只会在遇到错误时包含错误类/函数。

请记住,当您使用这样的OOP技术编写PHP时,服务器处理脚本所需的时间比编写内联时要长。 OOP基础的最大优势是它将缩短您的开发时间,如果正确完成,它将使您可以更轻松地管理脚本的未来更新。