Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从另一个函数停止一个函数_Php_Function - Fatal编程技术网

Php 从另一个函数停止一个函数

Php 从另一个函数停止一个函数,php,function,Php,Function,例如,在PHP中,是否可以从内部函数停止函数 function_1(){ ...... function2(); .... } 我是否可以使用function2中的一个句子停止function1,但避免停止整个脚本?如果捕获第二个函数的返回值,则可以执行此操作 function my_first_function() { // some code if( !my_second_function() ) { return; } } function my_secon

例如,在PHP中,是否可以从内部函数停止函数

function_1(){
   ......
function2();
....
}

我是否可以使用function2中的一个句子停止function1,但避免停止整个脚本?

如果捕获第二个函数的返回值,则可以执行此操作

function my_first_function() {
  // some code
  if( !my_second_function() ) {
     return;
  }
}

function my_second_function() {
  return false;
}

my_first_function();

当然,您需要修改它以满足您的需要,但这应该可以让您开始。

如果捕获第二个函数的返回值,您可以这样做

function my_first_function() {
  // some code
  if( !my_second_function() ) {
     return;
  }
}

function my_second_function() {
  return false;
}

my_first_function();
当然,您需要修改它以满足您的需要,但这应该可以让您开始。

您可以使用,它允许您重新定义/重命名函数。默认情况下,它只允许在用户定义的函数上执行此操作,但也有一个php.ini设置用于内部函数

这将使您可以执行以下操作:

runkit_function_rename('print', 'internal_print');
function print(...) {
   echo 'welcome to my own implementation of print';
}
但是,搞乱内部函数基本上会破坏PHP,因此使用时请自行承担风险。

您可以使用,它允许您重新定义/重命名函数。默认情况下,它只允许在用户定义的函数上执行此操作,但也有一个php.ini设置用于内部函数

这将使您可以执行以下操作:

runkit_function_rename('print', 'internal_print');
function print(...) {
   echo 'welcome to my own implementation of print';
}


但是,搞乱内部函数基本上会破坏PHP,因此使用时请自行承担风险。

你能解释一下你说“停止”是什么意思吗?比如“return false”,但我不能使用return function 2();停止执行。如果作为验证或验证的一部分执行此操作,则可以引发异常并让外部函数捕获它。您能否解释一下说“停止”时的含义?例如“return false”,但我不能将return function 2()放入;停止执行。如果作为验证或验证的一部分执行此操作,则可以引发异常并让外部函数捕获它。这就是问题所在,我无法修改结构,只能插入函数。如果无法更改代码,则无法执行您尝试执行的操作。我明白了,请查看goto运算符()。我自己从来没有使用过它,我也不推荐使用它,因为我相信如果您最终使用它,您的代码可能没有得到正确的设计,但这可能就是您想要的。您为什么只能添加函数而不能修改代码?
goto
不起作用。从文档中可以看出:“目标标签必须在相同的文件和上下文中,这意味着你不能跳出函数或方法”我不认为有其他方法可以做到这一点,就像我在上面发布的方式一样,正如Charles所说,goto不起作用。这就是问题所在,我无法修改结构,我只会插入函数。如果你不能更改代码,那么你就不能做你想做的事情。我明白了,看看goto操作符()。我自己从来没有使用过它,我也不推荐使用它,因为我相信如果您最终使用它,您的代码可能没有得到正确的设计,但这可能就是您想要的。您为什么只能添加函数而不能修改代码?
goto
不起作用。从文档中可以看出:“目标标签必须在同一个文件和上下文中,这意味着你不能跳出一个函数或方法”我不认为有其他方法可以做到这一点,就像我在上面发布的那样,正如Charles所说,goto不起作用。这是我需要的,但问题是并非所有服务器都有PECL!!不过,这将是唯一可行的选择。如果您需要禁用这样的功能,那么您应该重新考虑您的安全模型。这就是我需要的,但问题是并非所有服务器都有PECL!!不过,这将是唯一可行的选择。如果您需要禁用这样的功能,那么您应该重新考虑您的安全模型。