2013-05-06 82 views
0

我想找出要對這個功能的更有效的方法:如何讓這個PHP函數更高效?

<?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!')); 

雖然這完成了工作,但我試圖學習,所以我想讓這個函數更有效率,而不是硬編碼。有任何想法嗎?

+3

你爲什麼不使用'css'文件? – Baba 2013-05-06 00:36:03

+0

我想我可以做到這一點,但即使我這樣做,那麼我仍然會硬編碼HTML ...我想要一個更有效的解決方法。 – Criesval 2013-05-06 00:38:07

+0

爲什麼使用只處理輸出的函數? – 2013-05-06 02:47:09

回答

1

這看起來像錯誤模板,我會做這樣的事情:

創建sparate錯誤tamplate:如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以及您想要的任何其他參數即可。

1

我會做的第一件事就是從PHP中剔除所有的HTML代碼並跳回到數據回顯中。從維護的角度來看,它只是使其更具可讀性。

接下來,使用一個單獨的CSS文件,以便它可以共享。它可以是它自己的小文件,也可以合併成一個更大的文件。

就是這樣。是不是真的有很多PHP的優化要誠實

0

要麼

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

OR

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

此外,出口輸出傳遞的參數 - 在這種情況下zipError()的返回值。因此,要麼從zipError返回字符串而不是回顯它,要麼在調用函數時讓事情更容易,並且在函數內部出口而不是用die()包裝調用。