2013-04-18 60 views
0

我有一個來自C的庫我正在適應PHP。 PHP中沒有宏,但我需要類似的東西。讓我給你一個簡單的例子:在PHP中包含來自不同函數的代碼

function check($test){ 
    if($test == false) return; 
} 

我稱這種功能內的另一個幾次:

function checks(){ 
    check(0==1); 
    check(1==1); 
    ... 
} 

而且我想檢查函數的第一個測試之後停止。請注意,這不是我想要做的,這只是一個例子,所以你可以理解我在找什麼。 「檢查」中的返回語句應使函數「檢查」返回。

非常感謝。

+1

不可能的。你必須通過檢查'check'的返回值來在'checks'內執行此操作。 – Jon

回答

0

這個怎麼樣......,

<?php 

    function check($test) { 
     if($test == FALSE) { 
      //do Something.. 
      exit(); 
     } 
    } 

    function checks() { 
     check(1 == 1); 
     echo "1 Done..</br>"; 
     check(2 == 2); 
     echo "2 Done..</br>"; 
     check(0 == 0); 
     echo "3 Done..</br>"; 
     check(1 == 2); 
     echo "4 Done..</br>"; 
     check(1 == 0); 
     echo "5 Done..</br>"; 
     check(2 == 1); 
     echo "6 Done..</br>"; 
    } 

    checks(); 
?> 
+0

它殺死整個頁面/腳本,但不是父功能。不過,如果它是一個選項... – BlitZ

+0

是的。我最終使用這個,因爲即使它比我需要更全球我得到了同樣的結果。 – Phrenks

0

我不知道這是否可以在PHP中完成的,但你可以這樣做:

function check($test){ 
    if($test == false) 
     return false; 
    return true; 
} 

function checks(){ 
    if check(0==1) return; 
    if check(1==1) return; 

} 
+0

我想我可能會被誤解爲可怕的? – Rahlon

+0

那肯定會爲那個例子工作,但我真正需要的是某種方式來運行外部函數的代碼,就好像它的代碼在調用它的函數內部運行:) – Phrenks

1

有沒有辦法在PHP中完全再現這種行爲。但是,try {} catch() {}區塊可能會有所幫助。

<?php 
define('SAFE_RETURN', 8795); 

function scream($condition){ 
    if($condition)throw new Exception('', SAFE_RETURN); 
} 

function checks(){ 
    try { 
     scream(1 == 0); 
     echo 1; 

     scream(0 == 1); 
     echo 2; 

     scream(1 == 1); 
     echo 3; 

    } catch(Exception $e){ if($e->getCode() != SAFE_RETURN)throw $e; }; 
} 

checks(); 
?> 
+0

我想沒有辦法在那種情況下,我正是想做的事情,但這已經足夠接近了。謝謝! – Phrenks