目次
1. 主な認識: セキュリティ
2. 比較演算子の違いを明確に理解する
3. else の使用を減らすことができる場合は、else の使用を減らしてください
4. 不要な括弧を削除します

if ($gollum == 'halfling') $height --;else $height ++; if ($frodo != 'dead')echo 'Gosh darnit, roll again Sauron';foreach ($kill as $count)echo 'Legolas strikes again, that makes' . $count . 'for me!';
ログイン後にコピー
" >

if ($gollum == 'halfling') $height --;else $height ++; if ($frodo != 'dead')echo 'Gosh darnit, roll again Sauron';foreach ($kill as $count)echo 'Legolas strikes again, that makes' . $count . 'for me!';
ログイン後にコピー
str_replace()ereg_replace()preg_replace()
ログイン後にコピー
" >
str_replace()ereg_replace()preg_replace()
ログイン後にコピー
上記 2 つの条件判断は同じ目的を達成できますが、私は最初の条件判断をお勧めします。
ホームページ バックエンド開発 PHPチュートリアル PHP開発者がまとめた9つの提案

PHP開発者がまとめた9つの提案

Jun 23, 2016 pm 01:30 PM

原文: https://jellybool.com/post/9-things-that-php-developer-Should-know-abo...

この記事は、私が実際に行った内容を要約したものですこれは単なる有名な格言ではなく、2 つの目的で書かれています。1 つは、これらの知識ポイントに従って独自のコードを書くように常に自分に言い聞かせることであり、もう 1 つは、それを共有することです。役立つかもしれません。念のため、そうですね。 。 。

1. 主な認識: セキュリティ

ほとんどの場合、私たちが開発する Web プログラムはデータベースを扱う必要があるため、SQL インジェクションは避けて通れない、議論されるべき問題であると言えます。そして近年、XSS や CSRF などの攻撃が流行し、「ハッカー」に新しい武器を与えたかのように見える一方で、私たちは常に受動的な状態にあります。ただし、次の 2 つの原則を覚えておく必要があります:

1. 永远不要相信用户输入的东西。(老话了,但这是真的)2. 将自己需要输出的数据进行转义。
ログイン後にコピー

簡単に言えば: 入力をフィルターし、出力をエスケープする

初心者の場合は、次のようなクエリ ステートメントを使用しないでください:

SELECT FROM users WHERE username = $_POST['username'] AND password = $_POST['password'];
ログイン後にコピー

また、PDO または Mysqli を使用してください。昔ながらの mysql 操作はもう使用しません。

CSRF ソリューションに関しては、現在のソリューションでは、フォーム送信ごとにトークン値を設定し、フォーム送信時にそれを検証します。

2. 比較演算子の違いを明確に理解する

PHP の比較演算子、これは実は小さな注意点とも言えますが、場合によっては非常に重要です。たとえば、== を使用するか === を使用するかを明確に考える必要があることがよくあります。strpos() 関数を使用したことがある場合は、次のコードを直感的に理解できるでしょう:

<?php$authors = 'Chris & Sean';if (strpos($authors, 'Chris')) {    echo 'Chris is an author.';} else {    echo 'Chris is not an author.';}
ログイン後にコピー

上記のコードの実行結果。実際、出力では Chris は著者ではありませんが、実際には Chris と Sean が著者であるのはなぜでしょうか。実際には、Chris は Chris & Sean の先頭、つまり 0 の位置に出現するため、substr() は条件判定文の bool 判定により 0 を false として返します。プログラムは「Chris is Not an author」と出力しますが、この状況ではどうすればよいでしょうか?実際にこれを行うことができます:

<?phpif (strpos($authors, 'Chris') !== FALSE) {    echo 'Chris is an author.';} else {    echo 'Chris is not an author.';}
ログイン後にコピー

ここでの !== と != の違いが反映されています。

3. else の使用を減らすことができる場合は、else の使用を減らしてください

これは、私が初めてプログラミングに触れたときから持っていたアイデアのようです。 , この段落は実際に次のように書けるような気がします。else キーワードの使用を減らすと、コード行が 2 行減ります。はい、2 行も私たちの追求であり、私の経験から言えば、else が少ないコードの方が読みやすいように思えます。

if( this condition ){$x = 5;}else{$x = 10;
ログイン後にコピー

$x のデフォルト値が 10 の場合、次のように記述するとよいでしょう:

$x = 10;if( this condition ){$x = 5;}
ログイン後にコピー

4. 不要な括弧を削除します

ここでの目的は、実は else キーワード部分と同じです。コードが短くなり、読みやすくなります。 次の状況では、コードの最適化を検討する必要があります:

if ($gollum == 'halfling') {$height --;}
ログイン後にコピー

実際には、次のようにすることもできます:

if ($gollum == 'halfling') $height --;
ログイン後にコピー

明確なコードはありますか?フィーリング?

5. str_replace() をさらに使用します

多くの場合、PHP にはこの目的を達成できる関数がいくつかあります。

<br />if ($gollum == 'halfling') $height --;else $height ++; if ($frodo != 'dead')echo 'Gosh darnit, roll again Sauron';foreach ($kill as $count)echo 'Legolas strikes again, that makes' . $count . 'for me!';
ログイン後にコピー

通常のマッチングを使用する必要がある場合は、 preg_replace() を使用してください。不完全な統計によると、3 つの中で str_replace() が最も効率的であるため、置換が可能な場合は str_replace() を使用してください。

6. 三項演算子を使用する

三項演算子を使用すると、多くの if else ステートメントが削除され、コードが短くてクールになると多くの人が感じているかもしれません。

str_replace()ereg_replace()preg_replace()
ログイン後にコピー

7. キャッシュを使用する

現在、PHP で最も人気のあるキャッシュ テクノロジは、PHP の公式ドキュメントに、Memcached の使用に関するチュートリアルもあります。最近、すべてがうまくいけば、将来いくつかのチュートリアルを提供する予定です。

8. フレームワークの使用

フレームワークには、パフォーマンスが低下する可能性があることを除けば、開発をスピードアップし、より効率的にコードを作成できるという利点がたくさんあります。プロセス中は快適に感じられ、多くの安全上の問題をうまく解決できるようになります。ここでの最初の推奨は Laravel ですが、Yii2 Slim や Symfony などのフレームワークは非常に優れており、Symfony は試したことはありませんが、最終的には残りの 3 つを使用した経験があります。ただし、私が推奨する Laravel があなたに合わない場合もあります。それは個人の好みによって異なります。

9. strlen() の代わりに isset() を使用します

プロジェクト コード内の文字列の長さに基づいて条件判断を行う必要がある場合は、現時点では isset() を直接使用することを強くお勧めします。同じ条件の後、 isset() の速度は strlen() の約 5 倍であるため、

$host = strlen($host) > 0 ? $host : htmlentities($host);
ログイン後にコピー

上記 2 つの条件判断は同じ目的を達成できますが、私は最初の条件判断をお勧めします。

ハッピーハッキング

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? Apr 01, 2025 pm 03:12 PM

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 Apr 03, 2025 am 12:04 AM

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

ReactPhpの非ブロッキング機能は何ですか?ブロッキングI/O操作を処理する方法は? ReactPhpの非ブロッキング機能は何ですか?ブロッキングI/O操作を処理する方法は? Apr 01, 2025 pm 03:09 PM

ReactPhpの詳細な解釈の非ブロッキング機能の公式紹介は、多くの開発者の質問を呼び起こしました。

See all articles