PHP如何使一个函数可以在同一文件中使用和不使用调用访问



很抱歉,如果我的问题不能很清楚地理解,我不知道如何用英语很好地表达我想说的话。

这不是代码本身的问题,正如图所示,但主要是对PHP行为的怀疑。

当我从另一个php文件调用函数时,它似乎读取了函数本身,即function loademp(){}然而,如果我从ajax访问包含该函数的文件,则似乎需要对该函数(即loademp()(进行调用才能在同一文件中。

由于我遇到了这个问题,我最终使用了这段代码,以便使其从两个来源都能工作,在if条件中调用ajax,否则它将从php文件中调用两次:

<?php
if ($_POST['runFunct']=="loademp"){ //call from ajax needs 'loademp()' to access the function;
loademp();
}
function loademp(){ //loaded from another file apparently.
try{
//PDO code
print_r(json_encode($results));
}catch(PDOException $e){
echo $e;
}   
}

我的另一个文件看起来像这样:

require __DIR__.'loademp.php';
loademp();

难道没有一种更实用的方法可以将代码用于这两种情况,而不依赖于来源进行条件反射吗?由于如果不使用POST变量,我就无法从ajax调用特定的函数,我想这是最好的情况,但如果您能指出有关它的良好实践,我将不胜感激

我认为您在这里的困惑在于定义函数和执行功能之间。

要定义一个函数,你可以写这样的东西:

function say_hello_world() {
echo "Hello, World!n";
}

这不会立即导致任何事情发生,它只是定义如何做某事。在这种情况下,基本上就像在说:

每当我要求你"说你好世界";,输出到屏幕";你好,世界!\n〃;

要使某些事情真正发生,您必须执行函数,如下所示:

say_hello_world();

这基本上是说:

做我为";说你好世界";

在您的示例中,文件'loademp.php'定义了一个名为loademp的函数,它说";每当我要求你"加载emp"时,我都希望你这样做;。在另一个文件中,包含了该文件,因此定义了函数。然后,你用这行运行它:

loademp();

AJAX调用与其他页面加载没有什么不同,所以你需要在那里做同样的事情——首先,定义函数,或者包括这样做的文件;然后,执行函数。

因此,不直接调用loademp.php,您可以调用define_and_execute_loademp.php这样的PHP脚本,并使用您提到的行:

require __DIR__.'loademp.php';
loademp();

最新更新