Ben kendimi bu yapmak için çalışan ve çalışmak için görünür bir çözüm bulundu.
Farklı bir çözüm kullanmak asker anlatarak soruyu cevaplamak için çalışıyorlardı diğerlerine yanıt olarak, ben de sorunun nedenini açıklamaya çalışacağız. Orijinal poster veya ben ne nokta istisna işleme özellikleri kullanmak ve biz noktadan içeri bu sınıfı kullanan bir kod bu yükü koymak değil, çünkü bir istisna kullanmak istiyorsanız, en azından benim için, bu kullanmak mümkün oldu sorunsuz olmayan bir nesne yönelimli veya non-istisna tabanlı tarzında yazılmış olabilir diğer PHP kodu sınıf. Birçok yerleşik PHP fonksiyonları başarısız işlemleri için sahte bir sonucu arzu edilir olduğu şekilde yazılır. Aynı zamanda, biz kendi kodunda özel bir şekilde bu nesneyi idare edebilmek isteyebilirsiniz.
Örneğin, böyle bir şey yapmak isteyebilirsiniz:
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.
}
Here's a very simple implementation.
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.';
}
/ / Sadece emin beklenmedik bir şey oluyor yapmak için $ false basmak.
The output is:
is false.
is really false.
Ben bu test ettik ve sizin gibi sınıf içinde bazı bildirilen değişkenler, olsa bile çalışır:
class FalseObject {
const flag = true;
public $message = 'a message';
public function __toString() {
return '';
}
}
Biraz daha ilginç uygulama olabilir:
class FalseException extends Exception {
final public function __toString() {
return '';
}
}
class CustomException extends FalseException { }
$false = new CustomException('Something went wrong.');
Daha önce olduğu gibi aynı test kodu kullanarak, false false değerlendirir $.