私はこれを自分で行うことをしようとして動作するように見える解決策を見つけました。
質問者が別の解決方法を使用するように質問して回答しようとしていた他の人に対応して、質問の理由についても説明します。オリジナルのポスターまたは私は例外を使用しません。なぜなら、例外処理機能を使用することではなく、このクラスを使用するコードにその負担をかけることではないからです。少なくとも、私にとってはこの点を使うことができるという点でした非オブジェクト指向または非例外ベースのスタイルで書くことができる他のPHPコードでは、クラスを継ぎ目なく使用できます。組み込みのPHP関数の多くは、失敗したプロセスに対してfalseが返されるように記述されています。同時に、このオブジェクトを独自のコードで特別な方法で処理できるようにすることもできます。
たとえば、我々は次のように何かをしたいかもしれません:
if (!($goodObject = ObjectFactory::getObject($objectType))) {
// if $objectType was not something ObjectFactory could handle, it
// might return a Special Case object such as FalseObject below
// (see Patterns of Enterprise Application Architecture)
// in order to indicate something went wrong.
// (Because it is easy to do it this way.)
//
// FalseObject could have methods for displaying error information.
}
はここで非常に単純な実装です。
class FalseObject {
public function __toString() {
// return an empty string that in PHP evaluates to false
return '';
}
}
$false = new FalseObject();
if ($false) {
print $false . ' is false.';
} else {
print $false . ' is true.';
}
print '<br />';
if (!$false) {
print $false . ' is really true.';
} else {
print $false . ' is really false.';
}
//私は予期しない、何も起こっていないことを確認するために$の虚偽を印刷しています。
出力は次のようになります。
はfalseです。 は本当に偽です。
私はこれをテストしてみた、それはあなたには、いくつかのような、クラス内の変数を宣言した場合でも動作します:
class FalseObject {
const flag = true;
public $message = 'a message';
public function __toString() {
return '';
}
}
少しより興味深いの実装は次のようになります。
class FalseException extends Exception {
final public function __toString() {
return '';
}
}
class CustomException extends FalseException { }
$false = new CustomException('Something went wrong.');
以前と同じテストコードを使用すると、$ falseはfalseと評価されます。
質問のポイントが不足しています。例外は使用するオブジェクトが間違っていました。それを「結果」などに変更します。その点はそれとは関係がなく、単に "if文を書くとfalseを返すことができますか?" – Ethan
私の質問を愚かに語ったので、皆さん、私はここで質問をしました: /stackoverflow.com/questions/1182710/is-it-possible-to-make-an-object-return-false-by-default 困っている人に感謝します。 – Ethan