給初學者的30條PHP最佳實務(荒野無燈)

來源:互聯網
上載者:User

1,和PHP手冊成為好朋友
2,開啟Error Reporting
Error reporting 在 PHP 開發時是很有協助的. 你可以在你代碼中發現先前你沒有發現的錯誤,因為並不是所有的BUG都會讓程式運行不了的。當產品正式使用時,才有必要關掉錯誤報表,不然顧客看到一堆奇怪的字元不知道那是什麼意思。
3,使用IDE
IDE (整合式開發環境,Integrated Development Environments)對於開發人員來說是很有協助的工具.
荒野在這裡推薦netbeans IDE 。
4. 試著使用一個PHP 架構
5.學習DRY方法
DRY 代表 Don't Repeat Yourself,它是一個有價值的編程概念,不管是什麼語言。DRY編程,顧名思義,是確保你不寫多餘的代碼。
6.使用空格縮排代碼來提高可讀性
7. “Tier” your Code
給你的應用程式分層,分成不同部位的不同組成部分的代碼。這使得您可以輕鬆地在未來改變你的代碼。 如常用的MVC模式。
8. 總是使用 <?php ?>
9.使用有意義的,一致的命名規範
10.注釋、注釋、注釋
11.安裝MAMP/WAMP
12.給你的指令碼限制已耗用時間
通常PHP指令碼的已耗用時間被限制為30秒,超過這個時間PHP將拋出一個致命錯誤。
13.使用OOP
14.知道雙引號和單引號的不同
15.不要在網站的根目錄放phpinfo()
16.永遠不要信任你的使用者
17.加密儲存密碼
Rebuttal:
Keep in mind, however, that MD5 hashes have long since been compromised. They're absolutely more secure than not, but, with the use of an enormous “rainbow table,” hackers can cross reference your hash. To add even more security, consider adding a salt as well. A salt is basically an additional set of characters that you append to the user's string.
18.使用可視化資料庫設計工具
如 DBDesigner 和 MySQL Workbench
19.使用輸出緩衝
Rebuttal: Though not required, it's generally considered to be a good practice to go ahead and append the “ob_end_flush();” function as well to the bottom of the document. P.S. Want to compress the HTML as well? Simply replace “ob_start();” with “ob_start(‘ob_gzhandler')”;
Refer to this Dev-tips article for more information. 複製代碼 代碼如下:<!DOCTYPE html>
<?php ob_start('ob_gzhandler'); ?>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>untitled</title>
</head>
<body>

</body>
</html>
<?php ob_end_flush(); ?>

20.保護你的代碼避免SQL注射 複製代碼 代碼如下:$username = mysql_real_escape_string( $GET['username'] );
  $id = $_GET['id'];
$statement = $connection->prepare( "SELECT * FROM tbl_members WHERE id = ?" );
$statement->bind_param( "i", $id );
$statement->execute();

By using prepared statements, we never embed the user's inputted data directly into our query. Instead, we use the “bind_param” method to bind the values (and escaping) to the query. Much safer, and, notably, faster when executing multiple CRUD statements at once.
21.嘗試ORM (object relational mapping)
ORM libraries for PHP like Propel, and ORM is built into PHP frameworks like CakePHP.
22.快取資料庫驅動頁面
如: 複製代碼 代碼如下:// TOP of your script
$cachefile = 'cache/'.basename($_SERVER['SCRIPT_URI']);
$cachetime = 120 * 60; // 2 hours
// Serve from the cache if it is younger than $cachetime
if (file_exists($cachefile) && (time() - $cachetime < filemtime($cachefile))) {
include($cachefile);
echo "<!-- Cached ".date('jS F Y H:i', filemtime($cachefile))." -->";
exit;
}
ob_start(); // start the output buffer
// Your normal PHP script and HTML content here
// BOTTOM of your script
$fp = fopen($cachefile, 'w'); // open the cache file for writing
fwrite($fp, ob_get_contents()); // save the contents of output buffer to the file
fclose($fp); // close the file
ob_end_flush(); // Send the output to the browser

23.使用緩衝系統

  • Memcached
  • APC
  • XCache
  • Zend Cache
  • eAccelerator

24.驗證Cookie資料
Cookie data, like any data passed on the Web, can be harmful. You can validate cookie data with either the htmlspecialchars() or mysql_real_escape_string().
25.使用靜態檔案快取系統
如Smarty的是一個內建緩衝的強大的模板系統。
26.分析你的代碼
Profiling your code with a tool like xdebug can help you to quickly spot bottlenecks and other potential problems in your PHP code. Some IDEs like Netbeans have PHP profiling capabilities as well.
27.編碼通訊協定
如 Pear標準。
28. Keep Functions Outside of Loops
You take a hit of performance when you include functions inside of loops. The larger the loop that you have, the longer the execution time will take. Take the extra time and line of code and place the function outside of the loop.
Editor's Note: Think of it this way. Try to remove as many operations from the loop as possible. Do you really need to create that variable for every iteration of the loop? Do you really need to create the function each time? Of course not.
29.不要複製不額外的變數(事實上這一條值得懷疑,見下面的說明)
如: 複製代碼 代碼如下:$description = strip_tags($_POST['description']);
echo $description;

可以寫成如下:
echo strip_tags($_POST['description']);
Rebuttal: In reference to the comment about “doubling the memory,” this actually is a common misconception. PHP implements “copy-on-write” memory management. This basically means that you can assign a value to as many variables as you like without having to worry about the data actually being copied. While it's arguable that the “Good” example exemplified above might make for cleaner code, I highly doubt that it's any quicker.
也就是說PHP實現“copy-on-write” 的記憶體管理方式,上面第一種代碼並不會存在佔用雙倍記憶體的情況。因此Rebuttal嚴重懷疑第二種方式的代碼是否真的比前面的快。
30.更新到最新版本的PHP
31.減少資料庫查詢次數
32.勇敢地提問
像StackOverflow等都是好去處。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.