この記事では、PHP でアサーション関数を使用する方法を説明します。一定の参考値があるので、困っている友達が参考になれば幸いです。
当初、アサーション関連の関数は PHPUnit とこれらの単体テスト コンポーネントによって提供されていると思っていましたが、マニュアルを読んだ後、assert() アサーション関数が付属していることがわかりました。 PHP 自体の関数です。つまり、コード内で簡単なテストを実行する場合、単体テスト コンポーネント全体を完全に導入する必要はありません。
assert() アサーション関数
assert(1==1); assert(1==2); // assert.exception = 0 时,Warning: assert(): assert(1 == 2) // assert.exception = 1 时,Fatal error: Uncaught AssertionError: 验证不通过
明らかに、コードの 2 番目の部分はアサーション検証に合格できません。このとき、PHP は警告または例外エラーを返します。なぜ 2 つのエラー形式が考えられるのでしょうか? php.ini のassert.Exception を off または 0 に設定した場合、つまりこのパラメータの機能をオフにした場合でも、プログラムは上記のコードのコメントと同様に、PHP5 の形式で警告を返します。同時に、try...catch を通じて例外をキャッチすることはできません。このパラメータは実際に、本物の例外オブジェクトをスローするかどうかを制御します。このパラメータをデフォルトのまま、つまり on または 1 に設定した場合、例外が直接スローされ、プログラムは終了します。
上記のコードからわかるように、アサーションの最初のパラメーターは式であり、ブール型オブジェクトを返す式が必要です。文字列や数値を渡すとどうなるでしょうか?
// 设置 assert.exception = 0 进行多条测试 assert(" "); // Deprecated: assert(): Calling assert() with a string argument is deprecated // Warning: assert(): Assertion " " failed assert("1"); // Deprecated: assert(): Calling assert() with a string argument is deprecated assert(0); // Warning: assert(): assert(0) failed assert(1); assert("1==2"); // Deprecated: assert(): Calling assert() with a string argument is deprecated // Warning: assert(): Assertion "1==2" failed
明らかに、最初のパラメータの式は型キャストされますが、文字列型には、assert() 関数に渡された文字列型の式の型が廃止されたことを示す廃止通知が表示されます。現在のテスト バージョンは 7.3 です。将来的には、操作を終了させるエラーや例外が直接報告される可能性があります。主な問題は、渡された文字列自体も式である場合、判断がこの式の内容に基づいて行われるため、コードの最後の部分と同様に曖昧さが生じやすいことです。もちろん、古い使用方法は依然として推奨されません。ここでは、理解だけを述べます。
次に、assert() 関数の他のパラメーターを見てみましょう。その 2 番目のパラメーターは、エラー情報を定義するために使用される文字列、または例外が発生したことをスローするために使用される例外クラスの 2 つのタイプがあります。
assert(1==1, "验证不通过"); assert(1==2, "验证不通过"); // Warning: assert(): 验证不通过 failed
文字列を直接指定すると、定義したエラーメッセージの内容が警告メッセージに表示されます。これは非常に理解しやすいです。
// 注意 assert.exception 设置不同的区别 assert(1==1, new Exception("验证不通过")); assert(1==2, new Exception("验证不通过")); // assert.exception = 1 时,Fatal error: Uncaught Exception: 验证不通过 // assert.exception = 0 时,Warning: assert(): Exception: 验证不通过
もちろん、アサーションで例外をスローする例外クラスを指定することもできます。デフォルトでは、この例外がスローされるとプログラムの実行が中止されます。これは通常の例外スロー プロセスであり、try...catch を使用して例外をキャッチできます。
try{ assert(1==2, new Exception("验证不通过")); }catch(Exception $e){ echo "验证失败!:", $e->getMessage(), PHP_EOL; } // 验证失败!:验证不通过
アサーションの全体的な操作に影響するパラメーターがもう 1 つあります。それは、php.ini の zend.assertions パラメーターです。これには 3 つの値が含まれています:
- 1、コードを生成して実行します。通常、
- 0 はテスト環境で使用されます。コードは生成されますが、 を通過します。
- - 実行時 1. コードは生成されません。通常、
は正式な環境で使用されます。テストは自分で設定できます。デフォルトの php.ini のデフォルト値は次のとおりです。 1、これはassert()関数の通常の実行です。
assert_options() と php.ini の対応するパラメーター設定
PHP のアサーション関数には、便利に設定および取得するためのassert_options() 関数も用意されています。アサーション機能に関連するパラメータ設定。設定できるアサーション フラグは次のとおりです:
フラグ | INI 設定 | デフォルト値 | 説明
- | :-: | :-: | -:
ASSERT_ACTIVE |assert.active | 1 |assert() アサーションを有効にする ASSERT_WARNING |assert.warning | 1 |失敗したアサーションごとに PHP 警告を生成します ASSERT_BAIL |assert.bail |0 |アサーション失敗時の実行中止 ASSERT_QUIET_EVAL |assert.quiet_eval |0 |アサーション式の評価時に error_reporting を無効にする ASSERT_CALLBACK |assert.callback | (NULL) | アサーションが失敗したときにコールバック関数を呼び出す
これらのパラメーターの意味は非常に理解しやすいので、自分でテストできます。最後の ASSERT_CALLBACK の関数を見てみましょう。実際、その説明も非常に明確です。つまり、アサーションが失敗すると、このオプションで定義されたコールバック関数に入ります。
assert_options(ASSERT_ACTIVE, 1); assert_options(ASSERT_WARNING, 1); assert_options(ASSERT_BAIL, 1); assert_options(ASSERT_CALLBACK, function($params){ echo "====faild====", PHP_EOL; var_dump($params); echo "====faild====", PHP_EOL; }); assert(1!=1); // ====faild==== // string(105) ".../source/一起学习PHP中断言函数的使用.php" // ====faild====
アサーションが失敗すると、コールバック関数に入り、コールバック関数はコールバック関数に渡されたパラメータの内容を出力するだけです。このコールバック関数で渡されたファイル情報はアサーションを渡すことができないことがわかります。
概要
アサーション関数の使用と構成をマスターすることを学ぶことは、将来 PHPUnit 単体テストを学ぶための基礎を築くことができます。この能力には多くのことが含まれています。皆さんも覚えておいてください。
测试代码: https://github.com/zhangyue0503/dev-blog/blob/master/php/202005/source/%E4%B8%80%E8%B5%B7%E5%AD%A6%E4%B9%A0PHP%E4%B8%AD%E6%96%AD%E8%A8%80%E5%87%BD%E6%95%B0%E7%9A%84%E4%BD%BF%E7%94%A8.php
推奨学習: 「PHP ビデオ チュートリアル 」
以上がPHP でのアサーション関数の使用法に関する簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPでは、クローンキーワードを使用してオブジェクトのコピーを作成し、\ _ \ _クローンマジックメソッドを使用してクローン動作をカスタマイズします。 1.クローンキーワードを使用して浅いコピーを作成し、オブジェクトのプロパティをクローン化しますが、オブジェクトのプロパティはクローニングしません。 2。\ _ \ _クローン法は、浅いコピーの問題を避けるために、ネストされたオブジェクトを深くコピーできます。 3.クローニングにおける円形の参照とパフォーマンスの問題を避けるために注意し、クローニング操作を最適化して効率を向上させます。

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。

HTTPキャッシュヘッダーの主要なプレーヤーには、キャッシュコントロール、ETAG、およびラスト修飾が含まれます。 1.Cache-Controlは、キャッシュポリシーを制御するために使用されます。例:キャッシュコントロール:Max-Age = 3600、public。 2。ETAGは、一意の識別子を介してリソースの変更を検証します。例:ETAG: "686897696A7C876B7E"。 3. Last-Modifiedは、リソースの最後の変更時間を示しています。

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPは、動的なWeb開発およびサーバー側のアプリケーションに使用されるサーバー側のスクリプト言語です。 1.PHPは、編集を必要とせず、迅速な発展に適した解釈言語です。 2。PHPコードはHTMLに組み込まれているため、Webページの開発が簡単になりました。 3。PHPプロセスサーバー側のロジック、HTML出力を生成し、ユーザーの相互作用とデータ処理をサポートします。 4。PHPは、データベースと対話し、プロセスフォームの送信、サーバー側のタスクを実行できます。

PHPは過去数十年にわたってネットワークを形成しており、Web開発において重要な役割を果たし続けます。 1)PHPは1994年に発信され、MySQLとのシームレスな統合により、開発者にとって最初の選択肢となっています。 2)コア関数には、動的なコンテンツの生成とデータベースとの統合が含まれ、ウェブサイトをリアルタイムで更新し、パーソナライズされた方法で表示できるようにします。 3)PHPの幅広いアプリケーションとエコシステムは、長期的な影響を促進していますが、バージョンの更新とセキュリティの課題にも直面しています。 4)PHP7のリリースなど、近年のパフォーマンスの改善により、現代の言語と競合できるようになりました。 5)将来的には、PHPはコンテナ化やマイクロサービスなどの新しい課題に対処する必要がありますが、その柔軟性とアクティブなコミュニティにより適応性があります。

PHPの中心的な利点には、学習の容易さ、強力なWeb開発サポート、豊富なライブラリとフレームワーク、高性能とスケーラビリティ、クロスプラットフォームの互換性、費用対効果が含まれます。 1)初心者に適した学習と使用が簡単。 2)Webサーバーとの適切な統合および複数のデータベースをサポートします。 3)Laravelなどの強力なフレームワークを持っています。 4)最適化を通じて高性能を達成できます。 5)複数のオペレーティングシステムをサポートします。 6)開発コストを削減するためのオープンソース。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

WebStorm Mac版
便利なJavaScript開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
