将一个css类应用于一个回显php变量的每个实例


applying a css class to every instance of an echoed php variable

我想将css类(.error)应用于$error的每个回显实例。这似乎是一件容易的事情,我只是不确定语法。

<?php // rclogin.php
    include_once 'rcheader.php';
    echo "<h3>Member Log in</h3>";
    $error = $user = $pass = "";
    if (isset($_POST['user']))
    {
        $user = sanitizeString($_POST['user']);
        $pass = sanitizeString($_POST['pass']);
        if ($user == "" || $pass == "")
        {
            $error = "Not all fields were entered<br />";
        }
        else
        {
            $query = "SELECT user,pass FROM rcmembers
                      WHERE user='$user' AND pass='$pass'";
            if (mysql_num_rows(queryMysql($query)) == 0)
            {
                $error = "Username/Password invalid<br />";
            }

首先,不要将整个HTML放入$error中。在我看来,这是个坏习惯。放置一个错误信息:

$error = 'Not all fields were entered';

然后在HTML中打印错误信息:

if ( $error ) {
    echo '<span class="error">' . $error . '</span><br/>';
}

正如您所看到的,如果您在变量中传递HTML,那么您做任何您想做的事情的机会都会减少。

为了提出一些稍微不同的建议,我喜欢将我的错误实现为一个类。

现在,由于它是一个类,我可以使用__toString()魔术方法。

class Error
{
    ...
    public function __toString()
    {
        ...
        $output = '<span class="error">' . $output . '</span>';
        return $output;
    }
}
$error = new Error;

现在,当您回显$error时,您可以指定一些要在消息周围应用的HTML,并且作为一个类,您可以将所有其他相关的错误函数一起包含在一个漂亮的对象中。

当然,这是可能的,这取决于你想怎么做。

你可以有这样的$error = "<span class='className'>Username/Password invalid</span>";

或者您可以先用$error = "<span class='className'>"创建错误变量,然后用$error .= "</span>" 结束它