個人的には、PHPの変数の有無を判定する構文設計が失敗していると感じています。分業が曖昧で境界が曖昧で、判定に抜け穴が残りやすいです。嫌いです。このように機能がたくさんあるように見えて曖昧な設計ですが、これは PHP が弱い型付け言語であることに起因するものではなく、実装者の問題です。今日は楽しいものをいくつか紹介します。
#isset
変数が設定されているか、null ではないかを確認します。isset ( mixed $var , mixed $... = ? ) : bool
- 一度に複数のパラメータが渡された場合、各パラメータは左から右にIssetで判定され、変数が渡されなかった場合は即停止します。
- isset() は変数でのみ使用できます。他の引数を渡すと解析エラーが発生するためです。
- 定数が設定されているかどうかを確認したい場合は、define() 関数を使用できます。
- isset() を使用してオブジェクトのアクセスできないプロパティをチェックする場合、__isset() メソッドが定義されていれば、このオーバーロードされたメソッドが呼び出されます。
- 変数が unset()] を使用して解放された場合、その変数は isset() ではなくなります。
- 未定義の変数は構文エラーを報告しません。
<?php function tt() { } $a = null; $b = 0; $c = []; var_dump(isset($a)); // false var_dump(isset($b)); // true var_dump(isset($c)); // true var_dump(isset($c['name'])); // false var_dump(isset($d)); // false var_dump(isset($a, $b, $c, $d)); // false // var_dump(isset("abc")); // 语法错误 // var_dump(isset(tt())); // 语法错误 // var_dump(isset(MY_CONST)); // 语法错误オブジェクトのオブジェクトを確認するために安全に使用できる変数
// instead of writing isset($abc) && isset($abc->def) && isset($abc->def->ghi); // or in a shorter form isset($abc, $abc->def, $abc->def->ghi); // you can just write isset ($abc->def->ghi);
empty()
変数かどうかを判断する存在するか空です。empty ( mixed $var ) : bool
- 未定義の変数は構文エラーを報告しません。
- パラメータは変数である必要はありません。
- empty() は本質的に !isset($var) || $var == false と同等です。
- var が存在し、空でもゼロでもない値の場合は false を返し、それ以外の場合は true を返します。
- empty() が非表示のオブジェクト プロパティで使用される場合、 __isset() メソッドが存在する場合はそれが呼び出されます。
<?php function tt() { } $a = null; $b = 0; $c = []; var_dump(empty($a)); // true var_dump(empty($b)); // true var_dump(empty($c)); // true var_dump(empty($c['name'])); // true var_dump(empty($d)); // true var_dump(empty("abc")); // false var_dump(empty(tt())); // true // var_dump(empty(MY_CONST)); // 语法错误#!
空かどうかを確認します。未定義の変数は PHP 通知を報告しますが、構文エラーは報告せず、プログラムは終了しません。
<?php function tt() { } $a = null; $b = 0; $c = []; var_dump(!$a); // true var_dump(!$b); // true var_dump(!$c); // true var_dump(!$c['name']); // true PHP Notice: Undefined index: name var_dump(!$d); // true PHP Notice: Undefined index: name var_dump(!("abc")); // false var_dump(!tt()); // true // var_dump(!MY_CONST); // 语法错误?:
三項演算子の略称。
$c['name'] ?: 10 等价于 !$c['name'] ? 10 : $c['name']
したがって、その判断の基礎は依然として、それが空であるかどうかを判断することです。未定義の変数は PHP 通知を報告しますが、構文エラーは報告せず、プログラムは終了しません。
#??
$a ?? 10 等价于 isset($a) ? $a : 1概要
存在するかどうかを確認します: isset、??
- 存在しないか空であるかどうかを判断します: empty()
- それが空であるかどうかを判断します。存在するかどうかを確認します:!、?:
- 推奨される学習: php ビデオ チュートリアル
以上がPHP の ?:、??、isset、empty は何を意味しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、酸とベースのデータベースモデルを比較し、その特性と適切なユースケースを詳述しています。酸は、財務およびeコマースアプリケーションに適したデータの整合性と一貫性を優先し、ベースは可用性に焦点を当て、

この記事では、コードインジェクションのような脆弱性を防ぐために、PHPファイルのアップロードを確保することについて説明します。ファイルタイプの検証、セキュアストレージ、およびアプリケーションセキュリティを強化するエラー処理に焦点を当てています。

記事では、組み込み関数、ホワイトリストアプローチ、サーバー側の検証などの手法に焦点を当てたセキュリティを強化するためのPHP入力検証のベストプラクティスについて説明します。

この記事では、Token BucketやLeaky BucketなどのアルゴリズムやSymfony/Rate-Limiterなどのライブラリを使用するなど、PHPでAPIレート制限を実装するための戦略について説明します。また、監視、動的に調整されたレートの制限、および手をカバーします

この記事では、パスワードを保護するためにPHPでpassword_hashとpassword_verifyを使用することの利点について説明します。主な議論は、これらの関数が自動塩の生成、強力なハッシュアルゴリズム、およびSecurを通じてパスワード保護を強化するということです

この記事では、PHPおよび緩和戦略におけるOWASPトップ10の脆弱性について説明します。重要な問題には、PHPアプリケーションを監視および保護するための推奨ツールを備えたインジェクション、認証の壊れ、XSSが含まれます。

この記事では、PHPでのXSS攻撃を防ぐための戦略について説明し、入力の消毒、出力エンコード、セキュリティを向上させるライブラリとフレームワークの使用に焦点を当てています。

この記事では、PHPでのインターフェイスと抽象クラスの使用について説明し、それぞれをいつ使用するかに焦点を当てています。インターフェイスは、無関係なクラスや複数の継承に適した、実装なしで契約を定義します。抽象クラスは共通の機能を提供します


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

メモ帳++7.3.1
使いやすく無料のコードエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
