ホームページ > バックエンド開発 > PHPチュートリアル > PHP で避けるべきトップ 10 の落とし穴

PHP で避けるべきトップ 10 の落とし穴

烟雨青岚
リリース: 2023-04-09 08:12:02
転載
2197 人が閲覧しました

PHP で避けるべきトップ 10 の落とし穴

1. mysql_ クラス関数を使用しないでください

最後に、使用しないことを示唆するプロンプトが表示される必要がなくなりました。 mysql_関数。 PHP 7 ではそれらがコアから完全に削除されているため、より優れた mysqli_ クラス関数、またはより柔軟な PDO レイヤーに移行する必要があることを意味します。

2. 役に立たないコードを書かないでください

これは無知な提案のように思えますが、PHP7 の速度が向上するにつれて、いくつかの問題が隠蔽され、その重要性がますます高まっています。 。 PHP7 に切り替えるとサイトが速くなったからといって満足しないでください。

速度の重要性とそれをより良くする方法を理解するには、記事「加速最適化の初心者ガイド」を参照してください。

開発者としては、スクリプトがオンデマンドでロードされること、可能な場合は結合されること、効率的なデータベース クエリを作成すること、可能であればキャッシュを使用することなどを確認する必要があります。

3. ファイルの最後に PHP 終了タグを使用しないでください

何気なく見てみると、ほとんどの WordPress コア コード ファイルで省略されていることがわかります。末尾の PHP 終了タグ。実際、Zend Framework は特に終了タグを無効にします。これは PHP では必要ありません。ファイルの最後でこれを省略すると、末尾に余分な空白がなくなります。

4. 必要な場合を除き、パラメーターを引用符で渡さないでください

個人的には、パラメーターを引用符で渡すことは好きではありません。確かに状況によっては役立つこともありますが、ほとんどの場合、コードが理解しにくくなり、従うのが難しくなり、結果の予測が難しくなります。

人々は参照によってコードが高速になると考えていますが、The Respectable PHP Programmer のこの記事が指摘しているように、そうではありません。

PHP の組み込み shuffle() 関数または sort() 関数は、パラメータの参照渡しの悪い例です。これは、シャッフルまたはソートされた配列を返すのではなく、元の配列を変更しますが、これは私たちの希望に完全に反します。

5. ループ内でクエリを使用しないでください

最悪のことは、ループ内でデータベース クエリを使用することです。システムに不必要なストレスがかかりますが、ループの外でクエリを使用すると、同じ結果をより速く得ることができる可能性が高くなります。このように使用しなければならない状況に遭遇した場合、私は通常、クエリを 2 つのクエリに分割して配列を構築することで問題を解決します。次に、クエリをループせずに配列をループします。

WordPress の動作方法により、これには例外がいくつかある場合があります。 get_post_meta() はデータベースからメタデータを取得します。これは、特定の投稿のメタデータをループする場合にループ内で使用できます。これは、WordPress が最初に使用するときに実際にすべてのメタデータを取得し、キャッシュするためです。後続の呼び出しでは、実際にはデータベースを呼び出すのではなく、キャッシュされたデータを呼び出します。

これらの問題を解決する最善の方法は、関数のドキュメントを読み、クエリ リスナーのようなものを使用することです。

6. SQL クエリでは *

を使用しないでください。まあ、これは MySQL に関する質問ですが、コード内で使用することを好みます。 . SQL ステートメントを書くのですから、それは公平な勝負だと言えます。いずれの場合も、ワイルドカードの使用を避けられる場合は、特にデータベースに多くのフィールドがある場合は使用しないでください。

必要なフィールドを明示的に指定し、それらのフィールドのみを取得します。これにより、メモリを節約し、データを保護し、内容をより明確にすることができます。

SQL 側では、利用可能な関数について可能な限り学習し、速度をテストします。平均や合計を計算したり、同様の数値を計算したりする場合は、PHP 関数の代わりに SQL 組み込み関数を使用します。クエリの速度がわからない場合は、クエリをテストし、他のアプローチと比較して、最適なアプローチを選択してください。

7. ユーザー入力を信頼しない

ユーザー入力を信頼するのは賢明ではありません。ユーザー入力の場合、フィルター、サニタイズ、エスケープ、検証、フォールバックの使用が常に必要になります。ユーザー入力には 3 つの問題があります。それは、私たち開発者がすべての可能性を考慮することは不可能であること、頻繁な間違い、および意図的に悪意のある入力です。

よく考えられたシステムであれば、これらすべての問題を防ぐことができます。データベースを使用するときは、filter_var() などの組み込み関数を必ず使用して、有効性のチェック、エスケープなど、できる限りのことを行ってください。

WordPress には役立つ機能がたくさんあります。ユーザーデータの検証、エスケープ、サニタイズについて詳しくは、この記事をご覧ください。

8. 賢くなりすぎないでください

あなたの目標は、希望を明確に表現するエレガントなコードを書くことです。変数名を短縮したり、マルチレベルの三項論理演算やその他のテクニックを使用したりすることで、各ページの読み込み時間を 0.01 秒節約できるかもしれませんが、あなたやあなたのチームに頭痛の種を与えたり、メンテナンスを困難にしたりする結果と比較すると、損失に見合う価値はありません。

変数に適切な名前を付け、コードのドキュメントを簡潔かつ明確に記述します。インライン コード コメントを大量に使用するよりも、標準化されたオブジェクト指向コーディング スタイルを使用し、それを多かれ少なかれ文書化する方が良いでしょう。

9. 車輪の再発明はやめましょう

PHP は以前から存在していましたが、Web サイト開発はさらに古くから行われてきました。あなたがやったことは何でも、誰かが以前にやったことがあるのです。他の人のサポートに頼ることを恐れないでください。Github、Composer、Packagist はすべてあなたのメンターです。

ロガーからカラー プロセッサ、プロファイラーから単体テスト フレームワーク、Mailchimp API から Twitter Bootstrap まで、すべてがボタンをクリックするだけ (またはコマンドを実行するだけ) なので、ぜひ使用してください。

10. 他の言語を見落とさないでください

PHPer であれば、少なくとも HTML、CSS、JavaScript、MySQL を知っていることが現在では標準的です。これらの言語をうまく扱えるようになったら、JavaScript をもう一度学習しましょう。 JavaScriptはjQueryではありません。 jQueryを効果的に活用するにはJavaScriptを学習する必要があります。

PHP でオブジェクト指向のすべてを学ぶこともお勧めします。これは命の恩人であり、コードを桁違いに改善します。また、C# や Java などの言語への扉も開くことができ、一度使用経験があると、オブジェクト指向プログラミング (OOP) を理解しやすくなります。

パッケージ管理、ビルド スクリプト、Coffeescript、LESS、SASS、YAML、テンプレート エンジン、その他の便利なツールを学習して知識を広げます。また、他のフレームワーク、特に Laravel を検討することを心からお勧めします。

これらを十分に行ったら、Ruby、Ruby on Rails、Android、iPhone、Windows Phone 向けのアプリ開発を検討してみてはいかがでしょうか?これらは自分のコンフォートゾーンや仕事の要件から外れているので無意味だと思うかもしれませんが、まさに重要な点です。どの言語にも、教育上役立つ知識と無害な追加情報がいくつかあります。トップの PHP 開発者は皆、他のプログラミング言語を知っています。これは偶然ではありません。

読んでくれた皆さん、ありがとうございます。たくさんの利益が得られることを願っています。

この記事は次の場所に転載されています: https://www.cnblogs.com/Summerblue/p/8778819.html

推奨チュートリアル: "php チュートリアル"

以上がPHP で避けるべきトップ 10 の落とし穴の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート