初心者向けPHPベストプラクティス30本(荒野無灯)

5773 ワード

1,PHPマニュアルと仲良くなる
2,Error Reportingを開く
Error reportingはPHPの開発に役立つ.すべてのバグがプログラムを実行できないわけではないので、コードに以前に発見されなかったエラーを見つけることができます.製品が正式に使用される場合、エラーレポートを消す必要があります.そうしないと、お客様は奇妙な文字を見て、それがどういう意味なのか分かりません.
3,IDEの使用
IDE(統合開発環境、Integrated Development Environments)は開発者にとって非常に役立つツールである.
荒野はここでnetbeans IDEをお勧めします.
4.PHPフレームを1つ使ってみる
5.DRYの学習方法
DRYはDon't Repeat Yourselfを表し、どんな言語でも価値のあるプログラミング概念です.DRYプログラミングは、その名の通り、余分なコードを書かないことを確保します.
6.スペースインデントコードを使用して可読性を向上
7. “Tier” your Code
アプリケーションを階層化し、異なる部位の異なる構成部分のコードに分けます.これにより、将来コードを簡単に変更できます.よく使われるMVCモードのようです.
8.常に使用
9.意味のある、一貫した命名規則を使用する
10.コメント、コメント、コメント
11.MAP/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.ビジュアル化データベース設計ツールの使用
DBDesignや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.
 
  





untitled







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 "";
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」のメモリ管理方式を実現しており、上記の第1のコードは2倍のメモリを占有することはありません.そのため、Rebuttalは第2の方式のコードが本当に前のコードより速いかどうかを深刻に疑っています.
    30.最新バージョンのPHPに更新
    31.データベース・クエリーの数を減らす
    32.勇気を出して質問する
    StackOverflowなどはいいところです.