【问题标题】:How to I make this PHP function more efficient?如何让这个 PHP 函数更高效?
【发布时间】:2013-05-06 00:35:21
【问题描述】:

我想找到一种更有效的方法来实现这个功能:

<?php
function zipError($title, $desc) {
    echo '<style type="text/css">';
    echo 'body { margin:0;font-family:Arial, sans-serif;font-size:13px;background:#DDD;color:#1A1A1A; }';
    echo 'h1 { color:#FFF;font-family:Arial;font-weight:bold;text-align:center; }';
    echo 'h2 { color:#1C1C1C;font-family:Arial;font-weight:bold;text-align:center;padding-bottom:4px;border-bottom:1px solid #AAA; }';
    echo '#error#head { background:#1C1C1C;padding:10px;;border-bottom:5px solid #FFF; }';
    echo '#error#content { border:1px solid #AAA;background:#FFF;padding:20px;width:780px;margin:30px auto; }';
    echo 'p { text-align:center;padding:10px;color:#1A1A1A;font-family:verdana; }';
    echo '</style>';
    echo '<title>' . $title . '</title>';
    echo '<div id="error head"><h1>An error has occurred.</h1></div>';
    echo '<div id="error content"><h2>'.$title.'</h2><p>'.$desc.'</p></div>';
}

此代码用于引发错误。例如:

die(zipError('Session Not Found', 'Your session has not been found! Please re-login now!'));

虽然这可以完成工作,但我正在努力学习,因此我想让这个功能更高效,而不是硬编码。有什么想法吗?

【问题讨论】:

  • 你为什么不使用css文件?
  • 我想我可以这样做,但即使我这样做了,我仍然会对 HTML 进行硬编码...我想要一个更有效的解决方法。
  • 为什么要使用只处理输出的函数?

标签: php html echo template-engine performance


【解决方案1】:

这看起来像错误模板,我会这样做:

创建单独的错误模板:例如error.php:

<html>
   <head>
     <style>
      //style here...
     </style>
     <title><?= $title?></title>
   </head>
   <body>
       //and soon ...
   </body>

还有一个功能:

public function zipError($title, $desc){
    include('error.php');
}

及用法:

 ... die(zipError('Session Not Found', 'Your session has not been found! Please re-login now!'));

现在,您可以轻松编辑/更改错误模板,只要它不断回显$title$desc 以及您想要的任何其他参数。

【讨论】:

    【解决方案2】:

    我要做的第一件事是从 PHP 中退出所有 HTML 代码,然后跳回以回显数据。从维护的角度来看,它只是使它更具可读性。

    接下来,使用单独的 CSS 文件以便共享。它可以是它自己的小文件,也可以合并到一个更大的文件中。

    真的是这样。老实说,真的没有很多 php 可以优化

    【讨论】:

      【解决方案3】:

      要么

      echo "Output text/HTML using one statement
           instead of many, which can include\n
           line breaks and can span multiple lines";
      

      Only drop into PHP to output variables like <?=$var?> or <?php echo $var; ?>
      

      另外,dieexit 输出传递的参数 - 在本例中是 zipError() 的返回值。因此,要么从 zipError 返回字符串而不是回显它,或者在调用函数时使事情变得更容易,exit 在函数内部而不是用 die( 包装调用)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-09
        • 2021-08-11
        • 1970-01-01
        • 1970-01-01
        • 2014-12-11
        • 2018-05-25
        • 2015-08-31
        • 1970-01-01
        相关资源
        最近更新 更多