ホームページ  >  記事  >  バックエンド開発  >  PHP7 で注意する必要がある落とし穴は何かご存知ですか?

PHP7 で注意する必要がある落とし穴は何かご存知ですか?

藏色散人
藏色散人転載
2021-09-25 17:21:011416ブラウズ

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 開発者は皆、他のプログラミング言語を知っています。これは偶然ではありません。

推奨学習: 「PHP7 チュートリアル

以上がPHP7 で注意する必要がある落とし穴は何かご存知ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。