4

有一个函数定义在commons.php

desktop.php -> include commons.php
    |
    |
   \|/
    include MODULES.'mod.php'

我可以在任何我想要的地方调用我的自定义函数,但不能在 if 内的出口内。调用函数的代码不会去:

模组.php:

....
$error = mysql_error();

if($_ADM['id_user']==1) {
    if(!empty($error)) {
        $debug = array(
                    'message' => "SQL Error in infography_edit module.",
                    'line'    => '79',
                    'error'   => $error,
                    'SQL'     => $SQL
                );
        //exit(myPrint($debug)); //Calling here myPrint does not work
          exit(print_r($debug)); //This works
     }
 }

 $test = array('alex');
 exit(myPrint($debug)); //Calling here myPrint works

....

// The output error: Call to undefined function myPrint()

我只是不明白为什么上面代码之外的任何其他地方都可以工作,但如果没有在里面再次定义它就不能在里面

更新

这样做,似乎也不起作用:

myPrint($debug);
exit();
// The output error: Call to undefined function myPrint()

更新2

desktop.php 主文件:

  1. 要求(LIBS.'commons.php');
  2. 常见的html
  3. 包含模块

包含桌面代码的键盘: http: //codepad.org/hn8QlHQ9

4

5 回答 5

1

解决方法怎么样

function my_exit($msg){
   echo $msg;
   exit(1);  //Return code of the script, useful for cli scripts
}

//...
my_exit("Show message");
//...
于 2012-07-16T08:17:39.847 回答
0

好的,首先我必须澄清我正在处理的代码不是我的,我只是受雇进行一些改进,不得不与主要开发人员交谈以解释这种混乱。

我一直缺少的是每个请求(每个与页面刷新有关的请求)都通过一个名为的辅助文件do.php,该文件最终再次加载了我所在的模块。

视觉解释:

Currently at          Action                Pre-Processor        Processor 
-------------    =>   ---------------   =>  -------------    =>  ---------
add_users.php         post from form        do.php               add_user.php

现在,正如您所知,当前模块http://site.com/module?=add_users位置do.php(我知道这是一个巨大的混乱,但我无能为力。

因此,最终我不得不do.php在文件开头添加以下行:require_once('libs/commons.php');

 

我的推荐

每当您看到某个函数没有加载,但您知道它在某些情况下可以完美加载时,请查找任何其他可能干扰的文件do.php,并尝试包含/要求包含该函数的文件。

我知道这样的事情会让人头疼,但事实就是如此,而且大多数时候不是我们的错,而是平台已经编写的方式。

祝你们好运

于 2012-08-08T19:27:49.423 回答
0

假设您的条件标准得到满足,您的代码应该可以工作。

调用未定义的函数 myPrint()

上述错误表明该函数myPrint()未定义。您可以使用function_exists()函数来检查特定函数是否存在。如果它不存在,那么您可以在当前上下文中重新定义它。

<?php
if (function_exists('myPrint')) {
    echo "myPrint() exists.\n";
} else {
    echo "myPrint() doesn't exist.\n";
}
?> 
于 2012-07-11T16:47:22.113 回答
0

exit()是一种语言结构,只能接受类型int和的标量值string。如果您需要在退出脚本之前打印出任何内容,我建议您在调用 exit 之前执行此操作。

....
$error = mysql_error();

if($_ADM['id_user']==1)
    if(!empty($error))
        $debug = array(
                    'message' => "SQL Error in infography_edit module.",
                    'line'    => '79',
                    'error'   => $error,
                    'SQL'     => $SQL
                );
        myPrint($debug);
        exit();
....
于 2012-07-11T16:49:32.533 回答
0

您是否有机会使用名称空间?您确定您的功能已定义吗?如果包含,您确定您已包含它吗?

PS RobB 很抱歉让您知道,但它确实有效。

例子:

$v = 1234;
function xyz($v){
    echo $v . 23;
}
exit( xyz($v) );
于 2012-07-11T16:52:25.463 回答