"Sözleşme ile tasarım" desenini ve PHP'de nasıl uygulanacağını keşfettim. Bunu PHP'de nasıl yapılacağına dair gerçek bir dünya örneği bulamıyorum. İlk soru ben doğru şekilde yapıyorum? İkincisi niçin iddia geri çağırma onurlandırılmıyor?Bu, PHP'de "Tasarım sözleşmesiyle" deseninin uygulanmasının doğru yolu mu?
yeniden iddialar için statik sınıf Asserts
:
class Asserts
{
public static function absentOrNotNumeric($value)
{
return !isset($value) ? true : is_numeric($value);
}
}
Kullanımı:
assert_options(ASSERT_ACTIVE, true);
assert_options(ASSERT_BAIL, true);
assert_options(ASSERT_WARNING, true);
assert_options(ASSERT_CALLBACK, array('UseAsserts', 'onAssertFailure'));
class UseAsserts
{
private $value;
public function __construct($value)
{
// Single quotes are needed otherwise you'll get a
// Parse error: syntax error, unexpected T_STRING
assert('Asserts::absentOrNotNumeric($value)');
$this->value = $value;
}
public static function onAssertFailure($file, $line, $message)
{
throw new Exception($message);
}
}
// This will trigger a warning and stops execution, but Exception is not thrown
$fail = new UseAsserts('Should fail.');
Sadece (sağ) uyarı tetiklenir:
Uyarı: assert() [işlevi .assert]: Assertion "Asserts :: absetOrNotNumeric ($ value)" başarısız oldu.
Hangi uyarı tetikler? –
@Mario, düzenlemelerimi gör, teşekkürler. – gremo