2013-04-18 29 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