php(現在の主流の開発言語として)以前のエラー処理
php(現在の主流の開発言語として)
5では、以前はプログラムのエラーを処理するために次の3つの方法が使用されていました:
1.スクリプトレベルの警告または致命的なエラーを生成するには、trigger_error() または die() 関数を使用します。クラス メソッドまたは関数でエラー フラグ (false など) を返すか、後で確認できるプロパティまたはグローバル変数 ($error など) を設定し、適切な場所でその値を確認してから、実行を続行するかどうかを決定します。プログラム (if ($error==1){} など);
3. PEAR を使用してエラーを処理します;
(1) die() またはtrigger_error() を使用します
die() 関数を使用すると、プログラムを終了します。以下は、ディレクトリからクラス ファイルをロードしようとする単純なクラスです。
コードリストindex.php
(現在の主流の開発言語として) ?>
(現在の主流の開発言語として) // php
(現在の主流の開発言語として) ) 主流の開発言語) 4 require_once(cmd_php
(現在の主流の開発言語として)4/Command.php(現在の主流の開発言語として)); class CommandManager {
var $cmdDir = "cmd_php
(現在の主流の開発言語として)4";
function getCommandObject($cmd) {
$path = "{$this->cmdDir}/{$cmd}.php
(現在の主流の開発言語として) "; if (!file_exists($path)) {
die("$path が見つかりません
");
}
require_once $path;
if (!class_exists($cmd)) {
die("クラス $cmd が存在しません");
}
$ret = new $cmd();
if (!is_a($ret, Command)) {
die("$cmd is not a Command");
}
return $ret;
}
}
?>
これはphp
(現在の主流として)開発言語)「コマンド パターン設計パターン」を実装する簡単な例 (「Java とパターン」を参照) このクラスを使用するプログラマ (クライアント コード作成者) は、(たとえば) cmd_php ディレクトリにクラスを配置できます。 (現在の主流の開発言語として)4 ディレクトリ) ファイルに含まれるクラスと同じ名前が付けられ、このクラスが Command クラスのサブクラスになると、クラス メソッドは使用可能な Command オブジェクトを生成します。 () メソッドは、見つかったコマンドを実行するクラスに定義されています。つまり、getCommandObject() メソッドによって返されたオブジェクトが、execute() を実行します。
親クラスの Command クラスをもう一度見てみましょう。 cmd_php
(現在の主流の開発言語として)4/Command.php(現在の主流の開発言語として)ファイル
コードリスト cmd_php
(現在の主流の開発言語として)4/Command。 php (現在の主流の開発言語として) ?>
(現在の主流の開発言語として) // php
(現在の主流の開発言語として) 4 class Command {
functionexecute() {
die("Command::execute() は抽象メソッドです");
}
}
?>
ご覧のとおり、Command は (現在主流の開発言語として) php
です 4、直接インスタンス化することはできませんが、まずそこからサブクラスを派生させてからインスタンス化する必要があります (現在の主流の開発言語として) php5 を使用する場合は、より良い方法を使用できます。abstract キーワードを使用します。クラスとメソッドを「抽象」として宣言するには: コードリスト?>
(現在の主流の開発言語として)
/ / php (現在の主流の開発言語として)
5 抽象クラス コマンド { abstract function use();
}
?>
以下は、上記の抽象クラスの実装で、execute()メソッドをオーバーライドし、実際に実行可能な内容を追加したものです。このクラスは realcommand という名前で、cmd_php
(現在の主流の開発言語として)
4/realcommand.php (現在の主流の開発言語として) ファイルにあります。
コードリスト cmd_php(現在の主流の開発言語として)4/realcommand.php(現在の主流の開発言語として) ?>
(現在の主流の開発言語として) ) 主流の開発言語)
// php(現在の主流の開発言語として) 4
require_once Command.php(現在の主流の開発言語として);
class realcommand extends Command {
functionexecute() {
print "realcommand::execute() は注文どおりに実行されています、ああ!
";
}
}
?>
このような構造を使用すると、コードを非常に柔軟にすることができます。周囲のフレームワークを変更することなく、いつでも新しい Command クラスを追加できます。しかし、いくつかの潜在的な要因に注意を払う必要があります。スクリプトの実行を中止するには、クラス ファイルが存在すること、そのクラスがファイル内に存在すること、およびそのクラスが Command のサブクラスであること (例では、realcommand と同様) を確認する必要があります。クラスが失敗すると、スクリプトの実行は終了します。これはコードのセキュリティを反映しています。ただし、このコードは柔軟性が不十分であり、クラス メソッドは肯定的な操作しか実行できません。 Command オブジェクトは、スクリプト実行のより広い範囲でエラーを処理することはできません (もちろん、エラーを処理する必要はありません。周囲のコードを使用してクラス メソッドに接続を追加しすぎると、これを再利用できなくなります)。クラスの入手が難しくなり、拡張も難しくなります)
http://www.bkjia.com/PHPjc/509137.html