2010-12-07 6 views
0

Мне нужно выбросить исключение, если инструкция возвращает false, и я пытаюсь создать простой и сжатый способ сделать это. Есть идеи? Я хотел бы сделать следующее ...Как условно выделить исключение кратким способом?

<? 
    // ... 
    oci_execute($stmt) or throw new OracleException($stmt); 
    // ... 
?> 

... но интерпретатор PHP не позволит мне сделать это (ошибка синтаксиса), потому что «бросок» является конструкция языка.

Любые идеи? Мне нужен очень короткий один лайнер (нет, если заявлений)

ответ

0

Вы не можете. Тем не менее, у меня никогда не было этой особой необходимости, которую вы описываете, что заставляет меня подозревать, что вы делаете что-то странное. Или, по крайней мере, не идиоматический. Присутствие процедурной функции (oci_execute), похоже, поддерживает это.

У меня нет опыта работы с Oracle с php, но можете ли вы использовать pdo-bindings? Это даст вам более объектно-ориентированный интерфейс для работы.

+0

Я бы хотел использовать PDO, но поддержка Oracle очень экспериментальна. Я просто хочу использовать исключения вместо того, чтобы проверять ложное возвращаемое значение при возникновении ошибки. (функции oci возвращают false, если есть ошибка вместо того, чтобы сообщать вам об ошибке) – spudly 2010-12-07 14:58:19

+0

В этом случае, возможно, вы можете создать класс-оболочку, который скрывает процедурный интерфейс и выполняет ли метарование? – troelskn 2010-12-07 15:33:04

3
<? 
    // ... 
    if (!oci_execute($stmt)) throw new OracleException($stmt); 
    // ... 
?> 

все, что приходит на ум. Но я использовал PHP не слишком долго. Теперь я открыл Perl, что отличная вещь, и вы можете использовать конструкцию, которую вы предлагаете, и многое другое. Всегда стоит попробовать!

+0

Это работает, но это именно то, чего я пытался избежать ... – spudly 2010-12-07 14:59:03

0

Would

if !oci_execute($stmt) { throw new OracleException($stmt); } 

работа?