Casting — Как создать PHP-эквивалент проверенного приведения

Какой самый простой способ имитировать проверенное приведение стиля Java / C # в PHP (например, (X)y)? Т.е. семантика должна состоять в том, что ничего не делается, если y имеет X или подкласс, но если это не так, должно быть выброшено исключение.

Самый быстрый способ, которым я могу придумать, — это использовать instanceof

if(!(x instanceof Y)) throw new CastException();

Есть ли более быстрый или лучший способ, чем этот? Есть ли способ, которым мы можем использовать приведение в качестве выражения (в моем примере требуется оператор), чтобы его можно было использовать в другом выражении?

-1

Решение

Вы можете воспользоваться проверкой типа PHP для переданных параметров, чтобы сделать это автоматически.

class foo {
}

function isAFoo(foo $foo) {
return $foo;
}

$obj = new stdClass();

isAFoo($obj);

Сработает ошибка:

Исправляемая фатальная ошибка: аргумент 1, передаваемый isAFoo (), должен быть экземпляром foo, заданным экземпляром stdClass,

Однако это не лучше, чем просто написание экземпляра проверки и создание исключения самостоятельно, и на самом деле это хуже, так как вы не можете легко контролировать тип исключения.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector