PHP5 OOP プログラミング プロキシとカスタム例外_PHP チュートリアル
1. DBQuery オブジェクト
ここで、DBQuery オブジェクトは単純にストアド プロシージャをエミュレートします。実行されると、保存する必要がある結果リソースが返されます。また、結果セットに対して関数 (num_rows() や fetch_row など) を使用したい場合は、 ())、MySQL(PHPとの最良の組み合わせ)DBオブジェクトを渡す必要があります。では、DBQuery オブジェクトが、MySQL(PHP との最適な組み合わせ)DB オブジェクト (クエリ実行の結果を操作するように設計されている) によって実装される関数を実装すると、どのような効果があるのでしょうか?前の例のコードを引き続き使用し、結果リソースが DBQuery オブジェクトによって管理されていると仮定します。 DBQuery クラスのソース コードをリスト 1 に示します。
リスト1. DBQueryクラスの使用。
require MySQL (PHP との最適な組み合わせ)_db.php (現在の主流の開発言語として) ;
require_once query.php (現在の主流の開発言語として) $db = 新しい MySQL
; (PHP との最適な組み合わせ) $db->connect(host, username, pass); $query = new DBQuery($db ); >prepare(SELECT fname, sname FROM users WHERE username=:1S AND pword=:2S AND期限切れ_time<:3I);
try {
if($query->execute("visualad", "apron ", time()) )->num_rows() == 1) {
echo(正しい資格情報);
} else {
echo(不正な資格情報 / セッションの期限切れ)
}
} catch (QueryException $e) {
echo(クエリの実行エラー: . $e);
}
上記の変更されたコードで最も注目すべき点は、catch ステートメントとexecute ステートメントです。
・executeステートメントは結果リソースを返さなくなり、DBQueryオブジェクト自体を返すようになりました。
・ DBQuery オブジェクトは、DB インターフェースですでにおなじみの num_rows() 関数を実装するようになりました。
・クエリの実行が失敗すると、QueryException 型の例外がスローされます。文字列に変換すると、発生したエラーの詳細が返されます。
これにはプロキシを使用する必要があります。実際、すでに DBQuery オブジェクトでプロキシを使用していますが、ここではそれをさらに深く使用して、MySQL
(PHP との最適な組み合わせ)DB オブジェクトに緊密にバインドします。 DBQuery オブジェクトは、DB インターフェイスを実装するオブジェクトで初期化されており、クエリを実行する DB オブジェクトの query() メソッドを呼び出すメンバー関数executeがすでに含まれています。 DBQuery オブジェクト自体は実際にはデータベースにクエリを実行せず、このタスクを DB オブジェクトに任せます。これはプロキシであり、同じまたは類似の動作を実装する別のオブジェクトにメッセージを送信することで、オブジェクトが特定の動作を実装できるプロセスです。
これを行うには、DBQuery オブジェクトを変更して、DB オブジェクトからの結果リソースを操作するすべての関数を含める必要があります。クエリを実行するときに保存された結果を使用して、DB オブジェクトの対応する関数を呼び出し、その結果を返す必要があります。次の関数が追加されます: リスト 2: プロキシを使用した DBQuery クラスの拡張。
class DBQuery
{....
public function fetch_array()
{
if (! is_resource($this->result)) {
}
return $; this->db->fetch_array($this->result);
}
public function fetch_row()
{
if (! is_resource($this->result)) {
) Exception(クエリは実行されませんでした。);
return $this->db->fetch_assoc($this->result);
public function fetch_object()
{
if (! is_resource($this->result) ) )) {
throw new Exception(クエリは実行されません。);
}
public function num_rows()
{
if (! is_resource ($this->result)) {
throw new Exception(クエリは実行されません。);
}

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









今日は、MIT が先週公開した記事を紹介します。GPT-3.5-turbo を使用して時系列異常検出の問題を解決し、時系列異常検出における LLM の有効性を最初に検証しました。プロセス全体に微調整はなく、GPT-3.5-turbo は異常検出に直接使用されます。この記事の核心は、時系列を GPT-3.5-turbo が認識できる入力に変換する方法とその設計方法です。 LLM が異常検出タスクを解決できるようにするためのプロンプトまたはパイプライン。この作品について詳しく紹介していきます。画像用紙タイトル:Large languagemodelscanbeゼロショタノマリデテ

例外処理と単体テストは、C++ コードの健全性を確保するための重要な実践です。例外は try-catch ブロックを通じて処理され、コードが例外をスローすると、catch ブロックにジャンプします。単体テストでは、コード テストを分離して、さまざまな状況下で例外処理が期待どおりに機能することを検証します。実際のケース: sumArray 関数は配列要素の合計を計算し、空の入力配列を処理するために例外をスローします。単体テストでは、配列が空の場合に std::invalid_argument 例外をスローするなど、異常な状況下での関数の予期される動作を検証します。結論: 例外処理と単体テストを活用することで、例外を処理し、コードのクラッシュを防ぎ、異常な状況下でもコードが期待どおりに動作することを保証できます。

C++ の例外処理は、特定のエラー メッセージ、コンテキスト情報を提供し、エラーの種類に基づいてカスタム アクションを実行するカスタム例外クラスを通じて強化できます。 std::Exception から継承した例外クラスを定義して、特定のエラー情報を提供します。カスタム例外をスローするには、throw キーワードを使用します。 try-catch ブロックでdynamic_castを使用して、キャッチされた例外をカスタム例外タイプに変換します。実際の場合、open_file 関数は FileNotFoundException 例外をスローします。例外をキャッチして処理すると、より具体的なエラー メッセージが表示されます。

ネストされた例外処理は、ネストされた try-catch ブロックを通じて C++ に実装され、例外ハンドラー内で新しい例外を発生させることができます。ネストされた try-catch ステップは次のとおりです。 1. 外側の try-catch ブロックは、内側の例外ハンドラーによってスローされた例外を含むすべての例外を処理します。 2. 内部の try-catch ブロックは特定のタイプの例外を処理し、スコープ外の例外が発生した場合、制御は外部例外ハンドラーに渡されます。

Python は、学習の容易さと強力な機能により、初心者にとって理想的なプログラミング入門言語です。その基本は次のとおりです。 変数: データ (数値、文字列、リストなど) を保存するために使用されます。データ型: 変数内のデータの型 (整数、浮動小数点など) を定義します。演算子: 数学的な演算と比較に使用されます。制御フロー: コード実行のフロー (条件文、ループ) を制御します。

Python は、問題解決の初心者に力を与えます。ユーザーフレンドリーな構文、広範なライブラリ、変数、条件文、ループによる効率的なコード開発などの機能を備えています。データの管理からプログラム フローの制御、反復的なタスクの実行まで、Python が提供します

C++ プログラミング パズルは、フィボナッチ数列、階乗、ハミング距離、配列の最大値と最小値などのアルゴリズムとデータ構造の概念をカバーします。これらのパズルを解くことで、C++ の知識を強化し、アルゴリズムの理解とプログラミング スキルを向上させることができます。

C は、初心者がシステム プログラミングを学習するのに最適な選択肢です。ヘッダー ファイル、関数、メイン関数のコンポーネントが含まれています。 「HelloWorld」を印刷できる単純な C プログラムには、標準入出力関数宣言を含むヘッダー ファイルが必要で、main 関数で printf 関数を使用して印刷します。 C プログラムは、GCC コンパイラーを使用してコンパイルして実行できます。基本をマスターしたら、データ型、関数、配列、ファイル処理などのトピックに進み、熟練した C プログラマーになることができます。
