2010-08-21 7 views
1
는 특히이 같은 내 PHP 코드에서 사용하는 "나 죽어"하는 데 사용 전에 긴 시간이

:.버전 "... 또는 사망 (...는"

$q = mysql_query('......') or die(mysql_error()); 

분명히, 그것은 꽤 부끄러운 . 요즘은 X 또는 Y 원리하지만 여전히 그래서 그래도 나는이 시도 할 것 나에게 말을!.

$r = $this->exec($query) or throw new Exception('FAIL'); 

을하지만이 구문 분석 오류가 발생 진술에 대한 가장 좋은 방법은 무엇 을이있다 멋지게 보이기 (분명히!) ...

나는

if (!($r = $this->exec($query))) throw new ... 

또는

$r = $this->exec($query) 
if (!$r) throw new .... 

모든 즐겨 찾기를 좋아하지 않아? 낙담? 모범 사례? 속도는 항상 좋습니다.

답변

2

두 줄의 예를 한 줄에 겹쳐 놓은 점을 제외하고는 두 가지 예를 잘못 사용해도 아무런 문제가 없습니다.

나는 당신이 무엇을 찾고 있는지, 또는 왜 if 진술로 결점을 찾고 있는지 잘 모르겠다. 즉, or 연산자에서 신발 뿔에 이런 식으로 할 수 있지만, 사라진 후에 코드를 유지하면 누구든지 저주 할 것입니다.

function throw_ex($what) { 
    throw $what; 
} 

function fails() { 
    return false; 
} 

$x = fails() or throw_ex(new exception("failed")); 

나는 어떻게하면이 'if 문을 통해 당신에게 이득이되는지를 알 수 없습니다.

+0

이 아니라 "빠른"솔루션 중 하나 때문에 별도의 함수 호출이다. 진술이 확실히 가장 좋은 경우 – GWW

+0

나는 당신이 옳다고 생각합니다. 난 그냥 뭔가 매끄러운 찾고 있었어 :) 또한 왜 "또는 던지기 예외"wouldnt 작품,하지만 "또는 죽어"및 "또는 soSomeFunction"일을 궁금해. 나는 그때 내가 좋아하지 않는 첫 번째 것과 함께 간다. – Rudie

1

사실 사실은 입니다. 실제로 복구 할 수있는 오류를 catch하는 if 문을 사용해야합니다.. 특히 정상적인 동작 중에 데드락을 가질 수있는 InnoDB를 사용하고 있고 그것을 처리하는 적절한 방법은 die()가 아니라 단순히 쿼리를 다시 제출하는 것입니다. 여기

상세 정보 : http://arjen-lentz.livejournal.com/150464.html

관련 문제