ホームページ > バックエンド開発 > PHP7 > 当時 php7 を使用していたときに遭遇した落とし穴

当時 php7 を使用していたときに遭遇した落とし穴

醉折花枝作酒筹
リリース: 2023-02-18 07:44:01
転載
1734 人が閲覧しました

PHP は「世界で最高のプログラミング言語」になりましたが、その機能の一部は開発プロセス中に依然として未知の問題を引き起こしました。以下に私が開発過程で遭遇した落とし穴をいくつか挙げますので、視聴者の皆様にはそこから学び、落とし穴を避けていただければ幸いです。

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

ついにその日が来ました。これからは、mysql_ 関数を「使用してはいけない」だけではありません。 PHP 7 ではこれらがすべてコアから削除されているため、より優れた mysqli_ 関数、またはより柔軟な PDO 実装に移行する必要があります。

2. ジャンク コードを書かないでください

これは理解しやすいかもしれませんが、PHP 7 の高速化により、いくつかの問題。 PHP 7 に移行してサイトの速度が速くなったからといって、サイトの速度だけで満足しないでください。

開発者は、常にオンデマンドでスクリプトをロードし、可能な場合はスクリプトに接続し、効率的なデータベース クエリを作成し、可能な場合はキャッシュを使用するなどの措置を講じる必要があります。

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

ファイルが PHP コードで終わる場合、WordPress のほとんどのコードが表示されます。コア コードは次で終わります。 PHP タグは削除されました。実際、Zend Framework はこれを明確に無効にしています。 PHP ではファイルの末尾に終了タグを必要とせず、それを削除することで末尾に空白文字が追加されないようにすることができます。

4. 不必要な参照渡しをしないでください

私は個人的には参照渡しが好きではありません。便利な場合もありますが、コードの理解が難しくなり、結果の予測が困難になる場合もあります。

一部の人々は、コードの実行が速くなると考えていると言われていますが、一部の上級 PHP プログラマーによると、これは真実ではありません。

なぜ引用がダメなのかの例としては、PHP には shuffle() と sort() が組み込まれていることが挙げられます。処理された配列を返すのではなく、元の配列を変更しますが、これは非常に非論理的です。

5. クエリをループで実行する

クエリをループで実行するのは非常に無駄です。システムに不必要なストレスを与え、ループの外でより速く同じ結果を達成できる可能性があります。このようなものが必要な状況に遭遇した場合、私は通常、データ配列の構築に使用する 2 つの別々のクエリで問題を解決します。その後、配列を反復処理するので、その過程でクエリを実行する必要はありません。

ここではWordPressを使用しているため、一部例外がある場合があります。 get_post_meta() はデータベースから大量のデータを取得しますが、特定のブログ投稿のメタデータをループする場合は、これをループ内で使用できます。これは、WordPress が最初に呼び出すときに実際にすべてのメタデータを取得し、キャッシュするためです。後続の呼び出しでは、データベース呼び出しを行わずに、このキャッシュされたデータが使用されます。

これを理解する最善の方法は、関数のドキュメントを読み、Query Monitor などのツールを使用することです。

6. *

は使用しないでください もちろん、これは MySQL の問題に似ていますが、私たちは PHP で SQL コードを書くことに慣れているので、同じ。いずれにせよ、特にデータベースに多くの列がある場合は、できる限り SQL クエリでワイルドカードを使用しないでください。

必要な行を明示的に指定し、それらの行のみを取得する必要があります。これにより、使用されるリソースが削減され、データが保護され、内容が可能な限り明確になります。

SQL の場合は、使用可能なすべての関数を理解し、その速度を可能な限りテストする必要があります。平均値、合計、または同様の数値計算を計算する場合は、PHP 関数の代わりに SQL 関数を使用します。特定のクエリの速度がわからない場合は、それをテストし、他のコンパイルをいくつか試してから、最適なものを使用してください。

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

ユーザー入力を信頼するのは賢明ではありません。常に検証し、フィルタリングし、脱出し、チェックし、逃げ道を残しておきます。ユーザー データには 3 つの問題があります。私たち開発者はすべての可能性を考慮しているわけではないこと、データは多くの場合不正確であること、そして意図的に侵害される可能性があることです。

考え抜かれたシステムは、これらの脅威から保護できます。データベースを扱うときは、filter_var() などの組み込み関数を使用して適切な値を確認し、エスケープ (またはプリコンパイル) してください。

WordPress には、この問題を解決するための機能がいくつかあります。詳細については、「ユーザー データの検証、エスケープ、フィルタリング」の記事を参照してください。

8. 賢くなろうとしないでください

あなたの目標は、意図をより明確に表現するエレガントなコードを書くことです。複数の 3 値ロジック層やその他の手段を使用して、すべてを 1 単語の変数に短縮することで、各ページの 0.01 秒を最適化できる場合があります。しかし、これはあなたとあなたの周りの人たちにとって大きな問題を引き起こすだけです。

変数に適切な名前を付け、コードを文書化し、簡潔さよりも明確さを優先します。大量のインライン値を必要とせず、多かれ少なかれドキュメント自体である標準のオブジェクト指向コードを使用する方がさらに良いでしょう。

9. 車輪を再発明しないでください

PHP は長い間存在しており、Web サイトはさらに長い間作成されてきました。あなたが構築する必要があるものは何であれ、誰かがすでにそれを構築している可能性があります。他の人にサポートを求めることを恐れないでください。Github はあなたの友人であり、Composer も、そして Packagist も同様です。

ロギング ツールから色補正ツール、パフォーマンス アナライザーから単体テスト フレームワーク、Mailchimp API から Twitter Bootstrap まで、すべてがキーを押す (またはコマンドを入力する) だけで利用可能です。ぜひ使用してください。

10. 他の言語を無視しないでください

PHP プログラマーであれば、HTML、CSS、JavaScript、MySQL をよりよく理解できるようになります。 JavaScript をもう一度学習しましょう。 JavaScript は jQuery ではありません。JavaScript をより効率的に使用するには、JavaScript を正しく学習する必要があります。

オブジェクト指向 PHP もあります。これは時間を節約し、コード サイズが大きいほど性能が向上します。 C# や Java などの言語についても、OOP を理解すると理解しやすくなります。

パッケージ マネージャー、ビルド スクリプト、CoffeeScript、LESS、SASS、YAML、スクリプト エンジン、その他の強力なツールについて学び、知識を広げましょう。他のフレームワーク、特に Laravel を検討することを強くお勧めします。

Ruby、RoR、Android、iPhone、Windows Phone のアプリ開発を学びながら、それらを使って物事をうまくやり遂げてみませんか?彼らは自分のコンフォートゾーンや仕事で求められる範囲外にいるので、これは無意味だと思うかもしれませんが、それが彼らなのです。どの言語にも、学ばなければならない実践的なことや、これまでに出会ったことのない新しいことがいくつかあります。

以上が当時 php7 を使用していたときに遭遇した落とし穴の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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